- Aug 04, 2011
-
-
Jakob Stoklund Olesen authored
This helps generate better code in functions with high register pressure. The previous version of compact region splitting caused regressions because the regions were a bit too large. A stronger negative bias applied in r136832 fixed this problem. llvm-svn: 136836
-
Devang Patel authored
Do not drop undef debug values. These are used as range termination marker by live debug variable pass. llvm-svn: 136834
-
Jakob Stoklund Olesen authored
Apply twice the negative bias on transparent blocks when computing the compact regions. This excludes loop backedges from the region when only one of the loop blocks uses the register. Previously, we would include the backedge in the region if the loop preheader and the loop latch both used the register, but the loop header didn't. When both the header and latch blocks use the register, we still keep it live on the backedge. llvm-svn: 136832
-
Chandler Carruth authored
lib/CodeGen/RegAllocGreedy.cpp:1176:18: warning: unused variable 'B' [-Wunused-variable] if (unsigned B = Cand.getBundles(BundleCand, BestCand)) { ^ lib/CodeGen/RegAllocGreedy.cpp:1188:18: warning: unused variable 'B' [-Wunused-variable] if (unsigned B = Cand.getBundles(BundleCand, 0)) { ^ llvm-svn: 136831
-
Jakub Staszak authored
llvm-svn: 136828
-
Jakub Staszak authored
llvm-svn: 136826
-
Bill Wendling authored
This is some of my original LLVM code. *wipes tear* llvm-svn: 136821
-
- Aug 03, 2011
-
-
Jakub Staszak authored
llvm-svn: 136816
-
Eli Friedman authored
New approach to r136737: insert the necessary fences for atomic ops in platform-independent code, since a bunch of platforms (ARM, Mips, PPC, Alpha are the relevant targets here) need to do essentially the same thing. I think this completes the basic CodeGen for atomicrmw and cmpxchg. llvm-svn: 136813
-
Benjamin Kramer authored
llvm-svn: 136803
-
Bob Wilson authored
llvm-svn: 136802
-
Andrew Trick authored
to notify SCEV of a change. Add forgetLoop in a couple of those places. llvm-svn: 136797
-
Andrew Trick authored
llvm-svn: 136795
-
Jakob Stoklund Olesen authored
This fixes PR10575. llvm-svn: 136787
-
Chris Lattner authored
llvm-svn: 136768
-
Devang Patel authored
llvm-svn: 136759
-
Nick Lewycky authored
- use SmallVectorImpl& for the function argument. - ignore the operands on the GEP, even if they aren't constant! Much as we pretend the malloc succeeds, we pretend that malloc + whatever-you-GEP'd-by is not null. It's magic! llvm-svn: 136757
-
Bill Wendling authored
Add this back in for now. There are still a few passes which create unwind instructions at the moment. llvm-svn: 136756
-
Nick Lewycky authored
Don't replace a gep/bitcast with 'undef' because that will form a "free(undef)" which in turn means "unreachable". What we wanted was a no-op. Instead, analyze the whole tree and look for all the instructions we need to delete first, then delete them second, not relying on the use_list to stay consistent. llvm-svn: 136752
-
Bill Wendling authored
the function, because the UnwindInst is going away. llvm-svn: 136751
-
Jakob Stoklund Olesen authored
llvm-svn: 136742
-
Jakob Stoklund Olesen authored
This information is not used for anything yet. llvm-svn: 136741
-
Jakob Stoklund Olesen authored
With a 'FirstDef' field right there, it is very confusing that FirstUse refers to an instruction that may be a def. llvm-svn: 136739
-
Eli Friedman authored
ARM backend support for atomicrmw and cmpxchg with non-monotonic ordering. Not especially pretty, but seems to work well enough. If this looks okay, I'll put together similar patches for Mips, PPC, and Alpha. llvm-svn: 136737
-
Jakob Stoklund Olesen authored
This is either an invalid SlotIndex, or valno->def for the first value defined inside the block. PHI values are not counted as defined inside the block. The FirstDef field will be used when estimating the cost of spilling around a block. llvm-svn: 136736
-
Jakob Stoklund Olesen authored
llvm-svn: 136735
-
Nick Lewycky authored
malloc call. llvm-svn: 136732
-
- Aug 02, 2011
-
-
Jakob Stoklund Olesen authored
The PrefBoth constraint is used for blocks that ideally want a live-in value both on the stack and in a register. This would be used by a block that has a use before interference forces a spill. Secondly, add the ChangesValue flag to BlockConstraint. This tells SpillPlacement if a live-in value on the stack can be reused as a live-out stack value for free. If the block redefines the virtual register, a spill would be required for that. This extra information will be used by SpillPlacement to more accurately calculate spill costs when a value can exist both on the stack and in a register. The simplest example is a basic block that reads the virtual register, but doesn't change its value. Spilling around such a block requires a reload, but no spill in the block. The spiller already knows this, but the spill placer doesn't. That can sometimes lead to suboptimal regions. llvm-svn: 136731
-
Rafael Espindola authored
llvm-svn: 136727
-
Eli Friedman authored
llvm-svn: 136723
-
Nick Lewycky authored
llvm-svn: 136722
-
Rafael Espindola authored
externally visable, create a local symbol to use in the CFE. If not, use the function label itself. Fixes PR10420. llvm-svn: 136716
-
Eli Friedman authored
The testcase looks extremely fragile, so I'm adding an assertion which should catch any cases like this. llvm-svn: 136711
-
Owen Anderson authored
Fix the broken encodings for the VFP vmov.f32 and vmov.f64 instructions, as well as the comments that explain them incorrectly. llvm-svn: 136707
-
Jim Grosbach authored
llvm-svn: 136705
-
Jim Grosbach authored
Use a more descriptive name so the code is more self-documenting. llvm-svn: 136704
-
Roman Divacky authored
This unbreaks some tests. llvm-svn: 136692
-
Bruno Cardoso Lopes authored
shuffle (scalar_to_vector (load (ptr + 4))), undef, <0, 0, 0, 0> To: shuffle (vload ptr)), undef, <1, 1, 1, 1> Fix PR10494 llvm-svn: 136691
-
Roman Divacky authored
llvm-svn: 136690
-
Roman Divacky authored
to compile a working hello world on FreeBSD/PPC32. llvm-svn: 136689
-