Skip to content
  1. Aug 29, 2013
    • Nadav Rotem's avatar
      Vectorizer/PassManager: I am working on moving the vectorizer out of the SCC... · 4c459bcd
      Nadav Rotem authored
      Vectorizer/PassManager:  I am working on moving the vectorizer out of the SCC passes. This patch moves the SLP-vectorizer and BB-vectorizer back into SCC passes for two reasons:
      1. They are a kind of cannonicalization.
      2. The performance measurements show that it is better to keep them in.
      
      There should be no functional change if you are not enabling the LateVectorization mode.
      
      llvm-svn: 189539
      4c459bcd
  2. Aug 28, 2013
    • Hal Finkel's avatar
      Disable unrolling in the loop vectorizer when disabled in the pass manager · 6d09904c
      Hal Finkel authored
      When unrolling is disabled in the pass manager, the loop vectorizer should also
      not unroll loops. This will allow the -fno-unroll-loops option in Clang to
      behave as expected (even for vectorizable loops). The loop vectorizer's
      -force-vector-unroll option will (continue to) override the pass-manager
      setting (including -force-vector-unroll=0 to force use of the internal
      auto-selection logic).
      
      In order to test this, I added a flag to opt (-disable-loop-unrolling) to force
      disable unrolling through opt (the analog of -fno-unroll-loops in Clang). Also,
      this fixes a small bug in opt where the loop vectorizer was enabled only after
      the pass manager populated the queue of passes (the global_alias.ll test needed
      a slight update to the RUN line as a result of this fix).
      
      llvm-svn: 189499
      6d09904c
  3. Aug 27, 2013
  4. Aug 23, 2013
    • Michael Gottesman's avatar
      Update StripDeadDebugInfo to use DebugInfoFinder so that it is no longer stale... · 823aaffd
      Michael Gottesman authored
      Update StripDeadDebugInfo to use DebugInfoFinder so that it is no longer stale to the point of not working and more resilient to debug info changes.
      
      The current version of StripDeadDebugInfo became stale and no longer actually
      worked since it was expecting an older version of debug info.
      
      This patch updates it to use DebugInfoFinder and the modern DebugInfo classes as
      much as possible to make it more redundent to such changes. Additionally, the
      only place where that was avoided (the code where we replace the old sets with
      the new), I call verify on the DIContextUnit implying that if the format changes
      and my live set changes no longer make sense an assert will be hit. In order to
      ensure that that occurs I have included a test case.
      
      The actual stripping of the dead debug info follows the same strategy as was
      used before in this class: find the live set and replace the old set in the
      given compile unit (which may contain dead global variables/functions) with the
      new live one.
      
      llvm-svn: 189078
      823aaffd
  5. Aug 22, 2013
  6. Aug 13, 2013
  7. Aug 12, 2013
  8. Aug 06, 2013
  9. Aug 02, 2013
  10. Aug 01, 2013
  11. Jul 27, 2013
  12. Jul 25, 2013
  13. Jul 21, 2013
  14. Jul 19, 2013
  15. Jul 17, 2013
  16. Jul 16, 2013
    • Hal Finkel's avatar
      When the inliner merges allocas, it must keep the larger alignment · 9caa8f7b
      Hal Finkel authored
      For safety, the inliner cannot decrease the allignment on an alloca when
      merging it with another.
      
      I've included two variants of the test case for this: one with DataLayout
      available, and one without. When DataLayout is not available, if only one of
      the allocas uses the default alignment (getAlignment() == 0), then they cannot
      be safely merged.
      
      llvm-svn: 186425
      9caa8f7b
  17. Jul 09, 2013
  18. Jul 06, 2013
  19. Jul 04, 2013
  20. Jul 03, 2013
    • Michael Gottesman's avatar
      Added support in FunctionAttrs for adding relevant function/argument... · 2db11161
      Michael Gottesman authored
      Added support in FunctionAttrs for adding relevant function/argument attributes for the posix call gettimeofday.
      
      This implies annotating it as nounwind and its arguments as nocapture. To be
      conservative, we do not annotate the arguments with noalias since some platforms
      do not have restrict on the declaration for gettimeofday.
      
      llvm-svn: 185502
      2db11161
  21. Jul 02, 2013
  22. Jun 30, 2013
  23. Jun 28, 2013
    • Manman Ren's avatar
      Debug Info: clean up usage of Verify. · 983a16c0
      Manman Ren authored
      No functionality change.
      It should suffice to check the type of a debug info metadata, instead of
      calling Verify. For cases where we know the type of a DI metadata, use
      assert.
      
      Also update testing cases to make them conform to the format of DI classes.
      
      llvm-svn: 185135
      983a16c0
  24. Jun 24, 2013
    • Chandler Carruth's avatar
      Add a flag to defer vectorization into a phase after the inliner and its · 08e1b874
      Chandler Carruth authored
      CGSCC pass manager. This should insulate the inlining decisions from the
      vectorization decisions, however it may have both compile time and code
      size problems so it is just an experimental option right now.
      
      Adding this based on a discussion with Arnold and it seems at least
      worth having this flag for us to both run some experiments to see if
      this strategy is workable. It may solve some of the regressions seen
      with the loop vectorizer.
      
      llvm-svn: 184698
      08e1b874
  25. Jun 22, 2013
  26. Jun 20, 2013
    • Meador Inge's avatar
      Remove the simplify-libcalls pass (finally) · dfb08a2c
      Meador Inge authored
      This commit completely removes what is left of the simplify-libcalls
      pass.  All of the functionality has now been migrated to the instcombine
      and functionattrs passes.  The following C API functions are now NOPs:
      
        1. LLVMAddSimplifyLibCallsPass
        2. LLVMPassManagerBuilderSetDisableSimplifyLibCalls
      
      llvm-svn: 184459
      dfb08a2c
  27. Jun 17, 2013
  28. Jun 15, 2013
  29. Jun 13, 2013
    • Derek Schuff's avatar
      Fix DeleteDeadVarargs not to crash on functions referenced by BlockAddresses · ec9dc01b
      Derek Schuff authored
      This pass was assuming that if hasAddressTaken() returns false for a
      function, the function's only uses are call sites.  That's not true
      because there can be references by BlockAddresses too.
      
      Fix the pass to handle this case.  Fix
      BlockAddress::replaceUsesOfWithOnConstant() to allow a function's type
      to be changed by RAUW'ing the function with a bitcast of the recreated
      function.
      
      Patch by Mark Seaborn.
      
      llvm-svn: 183933
      ec9dc01b
  30. Jun 12, 2013
  31. Jun 11, 2013
    • Rafael Espindola's avatar
      Change how globalopt handles aliases in llvm.used. · a82555c0
      Rafael Espindola authored
      Instead of a custom implementation of replaceAllUsesWith, we just call
      replaceAllUsesWith and recreate llvm.used and llvm.compiler-used.
      
      This change is particularity interesting because it makes llvm see
      through what clang is doing with static used functions in extern "C"
      contexts. With this change, running clang -O2 in
      
      extern "C" {
        __attribute__((used)) static void foo() {}
      }
      
      produces
      
      @llvm.used = appending global [1 x i8*] [i8* bitcast (void ()* @foo to
      i8*)], section "llvm.metadata"
      define internal void @foo() #0 {
      entry:
        ret void
      }
      
      llvm-svn: 183756
      a82555c0
Loading