aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-10-25Restore commits 142790 and 142843 - they weren't breaking the buildDuncan Sands
bots. Original commit messages: - Reapply r142781 with fix. Original message: Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the loop header when computing the trip count. With this, we now constant evaluate: struct ListNode { const struct ListNode *next; int i; }; static const struct ListNode node1 = {0, 1}; static const struct ListNode node2 = {&node1, 2}; static const struct ListNode node3 = {&node2, 3}; int test() { int sum = 0; for (const struct ListNode *n = &node3; n != 0; n = n->next) sum += n->i; return sum; } - Now that we look at all the header PHIs, we need to consider all the header PHIs when deciding that the loop has stopped evolving. Fixes miscompile in the gcc torture testsuite! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142919 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Fix the API usage in loop probability heuristics. It was incorrectlyChandler Carruth
classifying many edges as exiting which were in fact not. These mainly formed edges into sub-loops. It was also not correctly classifying all returning edges out of loops as leaving the loop. With this match most of the loop heuristics are more rational. Several serious regressions on loop-intesive benchmarks like perlbench's loop tests when built with -enable-block-placement are fixed by these updated heuristics. Unfortunately they in turn uncover some other regressions. There are still several improvemenst that should be made to loop heuristics including trip-count, and early back-edge management. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142917 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Speculatively revert commits 142790 and 142843 to see if it fixesDuncan Sands
the dragonegg and llvm-gcc self-host buildbots. Original commit messages: - Reapply r142781 with fix. Original message: Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the loop header when computing the trip count. With this, we now constant evaluate: struct ListNode { const struct ListNode *next; int i; }; static const struct ListNode node1 = {0, 1}; static const struct ListNode node2 = {&node1, 2}; static const struct ListNode node3 = {&node2, 3}; int test() { int sum = 0; for (const struct ListNode *n = &node3; n != 0; n = n->next) sum += n->i; return sum; } - Now that we look at all the header PHIs, we need to consider all the header PHIs when deciding that the loop has stopped evolving. Fixes miscompile in the gcc torture testsuite! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142916 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Remove dead enum value. There is no DIESectionOffset.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142912 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Fix these test cases to not use .bc files. Otherwise, we run into issues withChad Rosier
bitcode reader/writer backward compatibility. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142896 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Comment out external projects so that they can be refreshed for 3.0.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142893 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Remove unused forward decl.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142892 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25An MBB which branches to an EH landing pad shouldn't be considered for tail ↵Bill Wendling
merging. In SjLj EH, the jump to the landing pad is not done explicitly through a branch statement. The EH landing pad is added as a successor to the throwing BB. Because of that however, the branch folding pass could mistakenly think that it could merge the throwing BB with another BB. This isn't safe to do. <rdar://problem/10334833> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142891 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Really remove Blackfin from the configure script.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142889 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25ARM assembly parsing and encoding for VLD1 with writeback.Jim Grosbach
Four entry register lists. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142882 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Remove the Blackfin backend.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142880 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Remove the SystemZ backend.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142878 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Nuke dead code. Nothing generates the VLD1d64QPseudo_UPD instruction.Jim Grosbach
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142877 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24ARM assembly parsing and encoding for VLD1 w/ writeback.Jim Grosbach
Three entry register list variation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142876 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24More fixes and improvements to MachO relocation pretty-printing, particular ↵Owen Anderson
for x86 and x86_64 relocations with addends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142875 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Don't crash on variable insertelement on ARM. PR10258.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142871 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Check the visibility of the global variable before placing it into the stubsBill Wendling
table. A hidden variable could potentially end up in both lists. <rdar://problem/10336715> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142869 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24ARMConstantPoolMBB::print should print BB number.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142867 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24ARM assembly parsing and encoding for VLD1 w/ writeback.Jim Grosbach
One and two length register list variants. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142861 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Add options to enable each individual level for the show-diagnostics tool.Chad Rosier
rdar://9683410 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142856 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24ARM refactor am6offset usage for VLD1.Jim Grosbach
Split am6offset into fixed and register offset variants so the instruction encodings are explicit rather than relying an a magic reg0 marker. Needed to being able to parse these. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142853 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Get relocation parsing/dumping to a mostly-working state for MachO files.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142852 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Now that we look at all the header PHIs, we need to consider all the header PHIsNick Lewycky
when deciding that the loop has stopped evolving. Fixes miscompile in the gcc torture testsuite! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142843 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Add support to the old JIT for acquire/release loads and stores on x86. ↵Eli Friedman
PR11207. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142841 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Stub out some of the MachO relocation decoding hooks.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142840 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Really unbreak CMake buildDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142822 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Unbreak CMake buildDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142821 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Fix a NEON disassembly case that was broken in the recent refactorings. As ↵Owen Anderson
more of this code gets refactored, a lot of these manual decoding hooks should get smaller and/or go away entirely. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142817 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Delete the top-down "Latency" scheduler. Top-down scheduling doesn't handleDan Gohman
physreg dependencies, and upcoming codegen changes will require proper physreg dependence handling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142816 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Delete the Latency scheduling preference.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142815 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Change this overloaded use of Sched::Latency to be an overloadedDan Gohman
use of Sched::ILP instead, as Sched::Latency is going away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142813 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Remove the explicit request for "Latency" scheduling from MSP430,Dan Gohman
as the Latency scheduler is going away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142811 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Change the default scheduler from Latency to ILP, since LatencyDan Gohman
is going away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142810 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Update test for r142801.Jim Grosbach
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142806 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24XFAIL test on leak checkers.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142804 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Thumb2 LDM instructions can target PC. Make sure to encode it.Jim Grosbach
PR11220 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142801 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Cleanup. Get rid of the old SjLj EH lowering code. No functionality change.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142800 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Sink an otherwise unused variable's initializer into the asserts thatChandler Carruth
used it. Fixes an unused variable warning from GCC on release builds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142799 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Implement comparison operators for BranchProbability in a way that can't ↵Benjamin Kramer
overflow INT64_MAX. Add a test case for the edge case that triggers this. Thanks to Chandler for bringing this to my attention. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142794 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Remove return heuristics from the static branch probabilities, andChandler Carruth
introduce no-return or unreachable heuristics. The return heuristics from the Ball and Larus paper don't work well in practice as they pessimize early return paths. The only good hitrate return heuristics are those for: - NULL return - Constant return - negative integer return Only the last of these three can possibly require significant code for the returning block, and even the last is fairly rare and usually also a constant. As a consequence, even for the cold return paths, there is little code on that return path, and so little code density to be gained by sinking it. The places where sinking these blocks is valuable (inner loops) will already be weighted appropriately as the edge is a loop-exit branch. All of this aside, early returns are nearly as common as all three of these return categories, and should actually be predicted as taken! Rather than muddy the waters of the static predictions, just remain silent on returns and let the CFG itself dictate any layout or other issues. However, the return heuristic was flagging one very important case: unreachable. Unfortunately it still gave a 1/4 chance of the branch-to-unreachable occuring. It also didn't do a rigorous job of finding those blocks which post-dominate an unreachable block. This patch builds a more powerful analysis that should flag all branches to blocks known to then reach unreachable. It also has better worst-case runtime complexity by not looping through successors for each block. The previous code would perform an N^2 walk in the event of a single entry block branching to N successors with a switch where each successor falls through to the next and they finally fall through to a return. Test case added for noreturn heuristics. Also doxygen comments improved along the way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142793 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Revert "Test commit"NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142792 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Test commitNAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142791 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Reapply r142781 with fix. Original message:Nick Lewycky
Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the loop header when computing the trip count. With this, we now constant evaluate: struct ListNode { const struct ListNode *next; int i; }; static const struct ListNode node1 = {0, 1}; static const struct ListNode node2 = {&node1, 2}; static const struct ListNode node3 = {&node2, 3}; int test() { int sum = 0; for (const struct ListNode *n = &node3; n != 0; n = n->next) sum += n->i; return sum; } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142790 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Doxygen-ify the comments on the public interface for BPI. Also, move theChandler Carruth
two more subtle routines to the bottom and expand on their cautionary comments a bit. No functionality or actual interface change here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142789 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24PHI nodes not in the loop header aren't part of the loop iteration initialNick Lewycky
state. Furthermore, they might not have two operands. This fixes the underlying issue behind the crashes introduced in r142781. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142788 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24A dead malloc, a free(NULL) and a free(undef) are all trivially deadNick Lewycky
instructions. This doesn't introduce any optimizations we weren't doing before (except potentially due to pass ordering issues), now passes will eliminate them sooner as part of their own cleanups. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142787 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Speculatively revert r142781. Bots are showingNick Lewycky
Assertion `i_nocapture < OperandTraits<PHINode>::operands(this) && "getOperand() out of range!"' failed. coming out of indvars. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142786 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Windows/Path.inc: [PR8460] Get rid of ScopedNullTerminator. Thanks to Zvi ↵NAKAMURA Takumi
Rackover! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142785 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Simplify the design of BranchProbabilityInfo by collapsing it intoChandler Carruth
a single class. Previously it was split between two classes, one internal and one external. The concern seemed to center around exposing the weights used, but those can remain confined to the implementation file. Having a single class to maintain the state and analyses in use will also simplify several of the enhancements I want to make to our static heuristics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142783 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-23Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in theNick Lewycky
loop header when computing the trip count. With this, we now constant evaluate: struct ListNode { const struct ListNode *next; int i; }; static const struct ListNode node1 = {0, 1}; static const struct ListNode node2 = {&node1, 2}; static const struct ListNode node3 = {&node2, 3}; int test() { int sum = 0; for (const struct ListNode *n = &node3; n != 0; n = n->next) sum += n->i; return sum; } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142781 91177308-0d34-0410-b5e6-96231b3b80d8