summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Add the SpillPlacement analysis pass.Jakob Stoklund Olesen2011-01-065-0/+466
| | | | | | | | | | | | | | | | This pass precomputes CFG block frequency information that can be used by the register allocator to find optimal spill code placement. Given an interference pattern, placeSpills() will compute which basic blocks should have the current variable enter or exit in a register, and which blocks prefer the stack. The algorithm is ready to consume block frequencies from profiling data, but for now it gets by with the static estimates used for spill weights. This is a work in progress and still not hooked up to RegAllocGreedy. llvm-svn: 122938
* Fix test to coincide with r122934 change from PR8919.Bill Wendling2011-01-061-1/+1
| | | | llvm-svn: 122937
* r105228 reduced the memcpy / memset inline limit to 4 with -Os to avoid blowingEvan Cheng2011-01-063-26/+57
| | | | | | | | up freebsd bootloader. However, this doesn't make much sense for Darwin, whose -Os is meant to optimize for size only if it doesn't hurt performance. rdar://8821501 llvm-svn: 122936
* Avoid zero extend bit test operands to pointer type if all the masks fit inEvan Cheng2011-01-064-24/+72
| | | | | | | the original type of the switch statement key. rdar://8781238 llvm-svn: 122935
* PR8919 - LLVM incorrectly generates "_alloca" as the stack probing call. ThatBill Wendling2011-01-061-0/+2
| | | | | | | works only on MinGW32. On 64-bit, the function to call is "__chkstk". Patch by KS Sreeram! llvm-svn: 122934
* PR8918 - When used with MinGW64, LLVM generates a "calll __main" at theBill Wendling2011-01-061-2/+5
| | | | | | | | beginning of the "main" function. The assembler complains about the invalid suffix for the 'call' instruction. The right instruction is "callq __main". Patch by KS Sreeram! llvm-svn: 122933
* Stop reallocating SunkAddrs for each basic block. When we move to an instructionCameron Zwarich2011-01-061-4/+10
| | | | | | worklist, the key will need to become std::pair<BasicBlock*, Value*>. llvm-svn: 122932
* Reorder, rename, and document some members to make this easier to follow.Owen Anderson2011-01-051-20/+23
| | | | llvm-svn: 122929
* Optimize:Evan Cheng2011-01-052-23/+99
| | | | | | | | | r1025 = s/zext r1024, 4 r1026 = extract_subreg r1025, 4 to: r1026 = copy r1024 llvm-svn: 122925
* fix PR8900, a shuffle miscompilation. Patch by Nadav Rotem!Chris Lattner2011-01-052-4/+17
| | | | llvm-svn: 122921
* silence more self assignment warnings.Chris Lattner2011-01-051-3/+3
| | | | llvm-svn: 122920
* Add a hidden command line option to display edge bundle graphs as they areJakob Stoklund Olesen2011-01-051-0/+7
| | | | | | calculated. llvm-svn: 122912
* Silence a warning from non-standard warning avoidance code.Jakob Stoklund Olesen2011-01-051-1/+2
| | | | llvm-svn: 122911
* 80-cols.Eric Christopher2011-01-051-1/+2
| | | | llvm-svn: 122909
* When computing the value on an edge, in certain cases LVI would fail to ↵Owen Anderson2011-01-051-0/+5
| | | | | | | | compute the value range in the predecessor block, leading to an incorrect conclusion for the edge value. Found by inspection. llvm-svn: 122908
* Revert svn 122743, removing the instcombine pass that was replaced by earlycse.Bob Wilson2011-01-051-1/+0
| | | | | | | | | | My i386 llvm-gcc nightly tester found a regression for SingleSource/Benchmarks/McGill/chomp that a bisect blamed on 122743. That seems strange but apparently the combination of earlycse and instcombine did something bad. Chris says he intended to remove the instcombine pass, so let's go ahead and try that. We'll see if there are any performance losses. llvm-svn: 122907
* Re-convert several of LazyValueInfo's internal maps to Dense{Map|Set}, and ↵Owen Anderson2011-01-051-33/+93
| | | | | | | | | fix the issue in hasBlockValue() that was causing iterator invalidations. Many thanks to Dimitry Andric for tracking down those invalidations! llvm-svn: 122906
* fix some -Wself-assign warnings.Chris Lattner2011-01-051-3/+3
| | | | llvm-svn: 122893
* Add some more statistics to CodeGenPrepare.Cameron Zwarich2011-01-051-0/+4
| | | | llvm-svn: 122891
* Commit 122778 broke DWARF debug output when using the MBlaze backend. Fixed ↵Wesley Peck2011-01-053-0/+30
| | | | | | by overriding TargetFrameInfo::getFrameIndexOffset to take into account the new frame index information. llvm-svn: 122889
* Add some stats to CodeGenPrepare to make it easier to speed it up withoutCameron Zwarich2011-01-051-3/+15
| | | | | | regressing code quality. llvm-svn: 122887
* Fix small bug in setDebugInfoAvailability.Wesley Peck2011-01-051-1/+1
| | | | llvm-svn: 122886
* UnitTests/Path: Fix typo, add error number, and enable the directory cleanup ↵Michael J. Spencer2011-01-051-7/+12
| | | | | | code. llvm-svn: 122885
* Support/PathV2: Implement remove_all.Michael J. Spencer2011-01-051-0/+37
| | | | llvm-svn: 122884
* Support/Windows/PathV2: Make directory iteration ignore . and ..Michael J. Spencer2011-01-051-4/+24
| | | | llvm-svn: 122883
* Support/Windows/PathV2: Fix remove to handle both files and directories.Michael J. Spencer2011-01-051-7/+21
| | | | llvm-svn: 122882
* Support/PathV2: Implement directory_entry::status.Michael J. Spencer2011-01-051-0/+4
| | | | llvm-svn: 122881
* UnitTests/PathV2: Setup a test fixture to make tracking created file systemMichael J. Spencer2011-01-051-0/+24
| | | | | | entities easier. llvm-svn: 122880
* Support/PathV2: Implement directory iteration on POSIX.Michael J. Spencer2011-01-052-3/+54
| | | | llvm-svn: 122879
* Use pop_back_val instead of back followed by pop_back.Cameron Zwarich2011-01-051-2/+1
| | | | llvm-svn: 122876
* Fix lit for people whose LLVM path contains 'opt', which is a common ↵Frits van Bommel2011-01-051-3/+3
| | | | | | directory name on Unix-like systems. llvm-svn: 122873
* Use a worklist for later iterations just like ordinary instsimplify. The nextCameron Zwarich2011-01-051-0/+19
| | | | | | | step is to only process instructions in subloops if they have been modified by an earlier simplification. llvm-svn: 122869
* Change LoopInstSimplify back to a LoopPass. It revisits subloops rather thanCameron Zwarich2011-01-051-10/+36
| | | | | | | | | | skipping them, but it should probably use a worklist and only revisit those instructions in subloops that have actually changed. It should probably also use a worklist after the first iteration like instsimplify now does. Regardless, it's only 0.3% of opt -O2 time on 403.gcc if it replaces the instcombine placed in the middle of the loop passes. llvm-svn: 122868
* Fix PR8906: -fno-builtin should disable loop-idiom recognition.Chris Lattner2011-01-051-3/+4
| | | | | | | | It forms memset and memcpy's, and will someday form popcount and other stuff. All of this is bad when compiling the implementation of memset, memcpy, popcount, etc. llvm-svn: 122854
* Remove TODO, these appear to be implemented.Eric Christopher2011-01-041-1/+0
| | | | llvm-svn: 122849
* Don't bother value numbering instructions with void types in GVN. In theory ↵Owen Anderson2011-01-041-0/+4
| | | | | | | | | this should allow us to insert fewer things into the value numbering maps, but any speedup is beneath the noise threshold on my machine on 403.gcc. llvm-svn: 122844
* Use the EdgeBundles analysis in X86FloatingPoint instead of recomputing CFGJakob Stoklund Olesen2011-01-042-87/+17
| | | | | | bundles in the pass. llvm-svn: 122833
* Turn the EdgeBundles class into a stand-alone machine CFG analysis pass.Jakob Stoklund Olesen2011-01-048-88/+147
| | | | | | | | | | The analysis will be needed by both the greedy register allocator and the X86FloatingPoint pass. It only needs to be computed once when the CFG doesn't change. This pass is very fast, usually showing up as 0.0% wall time. llvm-svn: 122832
* Eliminate a warning compiling with llvm-gcc. (IMO theDale Johannesen2011-01-041-1/+1
| | | | | | warning is overzealous but gcc is what it is.) llvm-svn: 122829
* Complete the NumberTable --> LeaderTable rename.Owen Anderson2011-01-041-12/+12
| | | | llvm-svn: 122828
* Fix typo in a comment.Owen Anderson2011-01-041-1/+1
| | | | llvm-svn: 122827
* Prune #include's.Owen Anderson2011-01-041-10/+0
| | | | llvm-svn: 122826
* Clarify terminology, settling on referring to what was the "number table" as ↵Owen Anderson2011-01-041-32/+32
| | | | | | | | the "leader table", and rename methods to make it much more clear what they're doing. llvm-svn: 122823
* When removing a value from GVN's leaders list, don't drop the Next pointer ↵Owen Anderson2011-01-041-1/+2
| | | | | | in a corner case. llvm-svn: 122822
* Improve the accuracy of the inlining heuristic looking for theDale Johannesen2011-01-041-9/+14
| | | | | | | | | | case where a static caller is itself inlined everywhere else, and thus may go away if it doesn't get too big due to inlining other things into it. If there are references to the caller other than calls, it will not be removed; account for this. This results in same-day completion of the case in PR8853. llvm-svn: 122821
* Branch instructions don't produce values, so there's no need to generate a ↵Owen Anderson2011-01-041-5/+3
| | | | | | | | | value number for them. This avoids adding them to the various value numbering tables, resulting in a minor (~3%) speedup for GVN on 40.gcc. llvm-svn: 122819
* Remove commented out code.Owen Anderson2011-01-041-4/+0
| | | | llvm-svn: 122817
* Give MachineFunctionAnalysis a getPassName() implementation to make timing ↵Owen Anderson2011-01-041-0/+4
| | | | | | reports prettier. llvm-svn: 122816
* Switch to the new style of asterisk placement.Cameron Zwarich2011-01-041-8/+8
| | | | llvm-svn: 122815
* fix an off-by-one bug that caused a crash analyzingChris Lattner2011-01-042-1/+38
| | | | | | ashr's with huge shift amounts, PR8896 llvm-svn: 122814
OpenPOWER on IntegriCloud