Skip to content
  1. Oct 02, 2013
  2. Oct 01, 2013
    • Matt Arsenault's avatar
      Don't merge tiny functions. · 517d84e2
      Matt Arsenault authored
      It's silly to merge functions like these:
      
      define void @foo(i32 %x) {
        ret void
      }
      
      define void @bar(i32 %x) {
        ret void
      }
      
      to get
      
      define void @bar(i32) {
        tail call void @foo(i32 %0)
        ret void
      }
      
      llvm-svn: 191786
      517d84e2
  3. Sep 22, 2013
  4. Sep 17, 2013
    • Stepan Dyatkovskiy's avatar
      Bugfix for PR17099: · dc2c4b44
      Stepan Dyatkovskiy authored
      Wrong cast operation.
      MergeFunctions emits Bitcast instead of pointer-to-integer operation.
      Patch fixes MergeFunctions::writeThunk function. It replaces
      unconditional Bitcast creation with "Value* createCast(...)" method, that
      checks operand types and selects proper instruction.
      See unit-test as example.
      
      llvm-svn: 190859
      dc2c4b44
  5. Sep 16, 2013
  6. Sep 13, 2013
  7. Sep 11, 2013
  8. Sep 10, 2013
  9. Sep 05, 2013
  10. Sep 04, 2013
  11. Sep 03, 2013
    • Nadav Rotem's avatar
      Enable late-vectorization by default. · 5d78dba6
      Nadav Rotem authored
      This patch changes the default setting for the LateVectorization flag that controls where the loop-vectorizer is ran.
      
      Perf gains:
      SingleSource/Benchmarks/Shootout/matrix -37.33%
      MultiSource/Benchmarks/PAQ8p/paq8p  -22.83%
      SingleSource/Benchmarks/Linpack/linpack-pc  -16.22%
      SingleSource/Benchmarks/Shootout-C++/ary3 -15.16%
      MultiSource/Benchmarks/TSVC/NodeSplitting-flt/NodeSplitting-flt -10.34%
      MultiSource/Benchmarks/TSVC/NodeSplitting-dbl/NodeSplitting-dbl -7.12%
      
      Regressions:
      SingleSource/Benchmarks/Misc/lowercase  15.10%
      MultiSource/Benchmarks/TSVC/Equivalencing-flt/Equivalencing-flt 13.18%
      SingleSource/Benchmarks/Shootout-C++/matrix 8.27%
      SingleSource/Benchmarks/CoyoteBench/lpbench 7.30%
      
      llvm-svn: 189858
      5d78dba6
  12. Aug 30, 2013
  13. 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
  14. 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
  15. Aug 27, 2013
  16. 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
  17. Aug 22, 2013
  18. Aug 13, 2013
  19. Aug 12, 2013
  20. Aug 06, 2013
  21. Aug 02, 2013
  22. Aug 01, 2013
  23. Jul 27, 2013
  24. Jul 25, 2013
  25. Jul 21, 2013
  26. Jul 19, 2013
  27. Jul 17, 2013
  28. 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
Loading