Skip to content
  1. Dec 05, 2013
  2. Dec 02, 2013
  3. Nov 19, 2013
  4. Nov 17, 2013
  5. Nov 13, 2013
  6. Nov 12, 2013
    • Nadav Rotem's avatar
      FoldBranchToCommonDest merges branches into a single branch with or/and of the... · 53d32211
      Nadav Rotem authored
      FoldBranchToCommonDest merges branches into a single branch with or/and of the condition. It has a heuristics for estimating when some of the dependencies are processed by out-of-order processors. This patch adds another rule to the heuristics that says that if the "BonusInstruction" that we speculatively execute is used by the condition of the second branch then it is okay to hoist it. This change exposes more opportunities for other passes to transform the code. It does not matter that much that we if-convert the code because the selectiondag builder splits or/and branches into multiple branches when profitable.
      
      llvm-svn: 194524
      53d32211
    • Benjamin Kramer's avatar
      SimplifyCFG: Use existing constant folding logic when forming switch tables. · 7c30260a
      Benjamin Kramer authored
      Both simpler and more powerful than the hand-rolled folding logic.
      
      llvm-svn: 194475
      7c30260a
  7. Nov 10, 2013
    • Matt Arsenault's avatar
      Use type form of getIntPtrType. · c900303e
      Matt Arsenault authored
      This should be inconsequential and is work
      towards removing the default address space
      arguments.
      
      llvm-svn: 194347
      c900303e
    • Nadav Rotem's avatar
      SimplifyCFG has a heuristics for out-of-order processors that decides when it... · 5ba1c6ce
      Nadav Rotem authored
      SimplifyCFG has a heuristics for out-of-order processors that decides when it is worthwhile to merge branches. It tries to estimate if the operands of the instruction that we want to hoist are ready. This commit marks function arguments as 'ready' because they require no calculation. This boosts libquantum and a few other workloads from the testsuite.
        
      
      llvm-svn: 194346
      5ba1c6ce
  8. Nov 03, 2013
  9. Oct 31, 2013
    • Manman Ren's avatar
      Do not convert "call asm" to "invoke asm" in Inliner. · 87a2adc7
      Manman Ren authored
      Given that backend does not handle "invoke asm" correctly ("invoke asm" will be
      handled by SelectionDAGBuilder::visitInlineAsm, which does not have the right
      setup for LPadToCallSiteMap) and we already made the assumption that inline asm
      does not throw in InstCombiner::visitCallSite, we are going to make the same
      assumption in Inliner to make sure we don't convert "call asm" to "invoke asm".
      
      If it becomes necessary to add support for "invoke asm" later on, we will need
      to modify the backend as well as remove the assumptions that inline asm does
      not throw.
      
      Fix rdar://15317907
      
      llvm-svn: 193808
      87a2adc7
  10. Oct 26, 2013
    • Wan Xiaofei's avatar
      Quick look-up for block in loop. · be640b28
      Wan Xiaofei authored
      This patch implements quick look-up for block in loop by maintaining a hash set for blocks.
      It improves the efficiency of loop analysis a lot, the biggest improvement could be 5-6%(458.sjeng).
      Below are the compilation time for our benchmark in llc before & after the patch.
      
      Benchmark	llc - trunk		llc - patched	
      401.bzip2	0.339081	100.00%	0.329657	102.86%
      403.gcc		19.853966	100.00%	19.605466	101.27%
      429.mcf		0.049823	100.00%	0.048451	102.83%
      433.milc	0.514898	100.00%	0.510217	100.92%
      444.namd	1.109328	100.00%	1.103481	100.53%
      445.gobmk	4.988028	100.00%	4.929114	101.20%
      456.hmmer	0.843871	100.00%	0.825865	102.18%
      458.sjeng	0.754238	100.00%	0.714095	105.62%
      464.h264ref	2.9668		100.00%	2.90612		102.09%
      471.omnetpp	4.556533	100.00%	4.511886	100.99%
      bitmnp01	0.038168	100.00%	0.0357		106.91%
      idctrn01	0.037745	100.00%	0.037332	101.11%
      libquake2	3.78689		100.00%	3.76209		100.66%
      libquake_	2.251525	100.00%	2.234104	100.78%
      linpack		0.033159	100.00%	0.032788	101.13%
      matrix01	0.045319	100.00%	0.043497	104.19%
      nbench		0.333161	100.00%	0.329799	101.02%
      tblook01	0.017863	100.00%	0.017666	101.12%
      ttsprk01	0.054337	100.00%	0.053057	102.41%
      
      Reviewer	: Andrew Trick <atrick@apple.com>, Hal Finkel <hfinkel@anl.gov>
      Approver	: Andrew Trick <atrick@apple.com>
      Test		: Pass make check-all & llvm test-suite
      
      llvm-svn: 193460
      be640b28
  11. Oct 25, 2013
    • Rafael Espindola's avatar
      Handle calls and invokes in GlobalStatus. · 7749d7cc
      Rafael Espindola authored
      This patch teaches GlobalStatus to analyze a call that uses the global value as
      a callee, not as an argument.
      
      With this change internalize call handle the common use of linkonce_odr
      functions. This reduces the number of linkonce_odr functions in a LTO build of
      clang (checked with the emit-llvm gold plugin option) from 1730 to 60.
      
      llvm-svn: 193436
      7749d7cc
  12. Oct 24, 2013
  13. Oct 21, 2013
  14. Oct 20, 2013
    • Michael Gottesman's avatar
      Teach simplify-cfg how to correctly create covered lookup tables for switches on iN with N >= 3. · c024f325
      Michael Gottesman authored
      One optimization simplify-cfg performs is the converting of switches to
      lookup tables if the switch has > 4 cases. This is done by:
      
      1. Finding the max/min case value and calculating the switch case range.
      2. Create a lookup table basic block.
      3. Perform a check in the switch's BB to see if the input value is in
      the switch's case range. If the input value satisfies said predicate
      branch to the lookup table BB, otherwise branch to the switch's default
      destination BB using the default value as the result.
      
      The conditional check consists of subtracting the min case value of the
      table from any input iN value and then ensuring that said value is
      unsigned less than the size of the lookup table represented as an iN
      value.
      
      If the lookup table is a covered lookup table, the size of the table will be N
      which is 0 as an iN value. Thus the comparison will be an `icmp ult` of an iN
      value against 0 which is always false yielding the incorrect result.
      
      This patch fixes this problem by recognizing if we have a covered lookup table
      and if we do, unconditionally jumps to the lookup table BB since the covering
      property of the lookup table implies no input values could not be handled by
      said BB.
      
      rdar://15268442
      
      llvm-svn: 193045
      c024f325
  15. Oct 19, 2013
  16. Oct 14, 2013
  17. Oct 05, 2013
    • Hal Finkel's avatar
      UpdatePHINodes in BasicBlockUtils should not crash on duplicate predecessors · f5a3eaea
      Hal Finkel authored
      UpdatePHINodes has an optimization to reuse an existing PHI node, where it
      first deletes all of its entries and then replaces them. Unfortunately, in the
      case where we had duplicate predecessors (which are allowed so long as the
      associated PHI entries have the same value), the loop removing the existing PHI
      entries from the to-be-reused PHI would assert (if that PHI was not the one
      which had the duplicates).
      
      llvm-svn: 192001
      f5a3eaea
  18. Oct 02, 2013
    • Chandler Carruth's avatar
      Remove the very substantial, largely unmaintained legacy PGO · ea564946
      Chandler Carruth authored
      infrastructure.
      
      This was essentially work toward PGO based on a design that had several
      flaws, partially dating from a time when LLVM had a different
      architecture, and with an effort to modernize it abandoned without being
      completed. Since then, it has bitrotted for several years further. The
      result is nearly unusable, and isn't helping any of the modern PGO
      efforts. Instead, it is getting in the way, adding confusion about PGO
      in LLVM and distracting everyone with maintenance on essentially dead
      code. Removing it paves the way for modern efforts around PGO.
      
      Among other effects, this removes the last of the runtime libraries from
      LLVM. Those are being developed in the separate 'compiler-rt' project
      now, with somewhat different licensing specifically more approriate for
      runtimes.
      
      llvm-svn: 191835
      ea564946
  19. Oct 01, 2013
  20. Sep 30, 2013
  21. Sep 28, 2013
  22. Sep 24, 2013
  23. Sep 22, 2013
  24. Sep 16, 2013
  25. Sep 14, 2013
  26. Sep 10, 2013
  27. Sep 09, 2013
    • Bob Wilson's avatar
      Revert patches to add case-range support for PR1255. · e407736a
      Bob Wilson authored
      The work on this project was left in an unfinished and inconsistent state.
      Hopefully someone will eventually get a chance to implement this feature, but
      in the meantime, it is better to put things back the way the were.  I have
      left support in the bitcode reader to handle the case-range bitcode format,
      so that we do not lose bitcode compatibility with the llvm 3.3 release.
      
      This reverts the following commits: 155464, 156374, 156377, 156613, 156704,
      156757, 156804 156808, 156985, 157046, 157112, 157183, 157315, 157384, 157575,
      157576, 157586, 157612, 157810, 157814, 157815, 157880, 157881, 157882, 157884,
      157887, 157901, 158979, 157987, 157989, 158986, 158997, 159076, 159101, 159100,
      159200, 159201, 159207, 159527, 159532, 159540, 159583, 159618, 159658, 159659,
      159660, 159661, 159703, 159704, 160076, 167356, 172025, 186736
      
      llvm-svn: 190328
      e407736a
  28. Sep 06, 2013
  29. Aug 31, 2013
  30. Aug 24, 2013
Loading