- Jan 14, 2009
-
-
Richard Osborne authored
frame index. eliminateFrameIndex will replace these instructions with (LDWSP|STWSP|LDAWSP) or (LDW|STW|LDAWF) if a frame pointer is in use. This fixes PR 3324. Previously we used LDWSP, STWSP, LDAWSP before frame pointer elimination. However since they were marked as implicitly using SP they could not be rematerialised. llvm-svn: 62238
-
Nuno Lopes authored
llvm-svn: 62236
-
Gabor Greif authored
llvm-svn: 62232
-
Dale Johannesen authored
my earlier patch to this file. The issue there was that all uses of an IV inside a loop are actually references to Base[IV*2], and there was one use outside that was the same but LSR didn't see the base or the scaling because it didn't recurse into uses outside the loop; thus, it used base+IV*scale mode inside the loop instead of pulling base out of the loop. This was extra bad because register pressure later forced both base and IV into memory. Doing that recursion, at least enough to figure out addressing modes, is a good idea in general; the change in AddUsersIfInteresting does this. However, there were side effects.... It is also possible for recursing outside the loop to introduce another IV where there was only 1 before (if the refs inside are not scaled and the ref outside is). I don't think this is a common case, but it's in the testsuite. It is right to be very aggressive about getting rid of such introduced IVs (CheckForIVReuse and the handling of nonzero RewriteFactor in StrengthReduceStridedIVUsers). In the testcase in question the new IV produced this way has both a nonconstant stride and a nonzero base, neither of which was handled before. And when inserting new code that feeds into a PHI, it's right to put such code at the original location rather than in the PHI's immediate predecessor(s) when the original location is outside the loop (a case that couldn't happen before) (RewriteInstructionToUseNewBase); better to avoid making multiple copies of it in this case. Also, the mechanism for keeping SCEV's corresponding to GEP's no longer works, as the GEP might change after its SCEV is remembered, invalidating the SCEV, and we might get a bad SCEV value when looking up the GEP again for a later loop. This also couldn't happen before, as we weren't recursing into GEP's outside the loop. Also, when we build an expression that involves a (possibly non-affine) IV from a different loop as well as an IV from the one we're interested in (containsAddRecFromDifferentLoop), don't recurse into that. We can't do much with it and will get in trouble if we try to create new non-affine IVs or something. More testcases are coming. llvm-svn: 62212
-
Devang Patel authored
llvm-svn: 62209
-
Chris Lattner authored
vector and extraneous loop over it, 2) not delete globals used by phis/selects etc which could actually be useful. This fixes PR3321. Many thanks to Duncan for narrowing this down. llvm-svn: 62201
-
Devang Patel authored
Removoe MachineModuleInfo methods (and related DebugInfoDesc class hierarchy) that were used to handle debug info. llvm-svn: 62199
-
Nuno Lopes authored
llvm-svn: 62198
-
Dan Gohman authored
llvm-svn: 62196
-
Dan Gohman authored
llvm-svn: 62195
-
Dan Gohman authored
to Eli for pointing out that these forms don't ignore the high bits of their index operands, and as such are not immediately suitable for use by isel. llvm-svn: 62194
-
Devang Patel authored
Keep "has debug info" big in MachineModuleInfo to avoid circular dependency between AsmPrinter and CodeGen. llvm-svn: 62191
-
- Jan 13, 2009
-
-
Devang Patel authored
llvm-svn: 62190
-
Dale Johannesen authored
llvm-svn: 62189
-
Devang Patel authored
llvm-svn: 62185
-
Devang Patel authored
llvm-svn: 62184
-
Dan Gohman authored
llvm-svn: 62180
-
Dan Gohman authored
llvm-svn: 62179
-
Dan Gohman authored
llvm-svn: 62178
-
Dan Gohman authored
scheduling dependencies. Add assertion checks to help catch this. It appears the Mips target defaults to list-td, and it has a regression test that uses a physreg dependence. Such code was liable to be miscompiled, and now evokes an assertion failure. llvm-svn: 62177
-
Dan Gohman authored
least their preferred alignment. llvm-svn: 62176
-
Sanjiv Gupta authored
llvm-svn: 62174
-
Dan Gohman authored
been modified, to avoid trouble in the (unlikely) scenario that D is a reference to an element in one of those arrays. llvm-svn: 62173
-
Duncan Sands authored
via two paths, process it once not twice, d'oh! Analysis, testcase and original patch thanks to Mon Ping Wang. llvm-svn: 62169
-
Duncan Sands authored
was not being cleaned by ExpungeNode. llvm-svn: 62167
-
Duncan Sands authored
llvm-svn: 62166
-
Duncan Sands authored
llvm-svn: 62165
-
Nick Lewycky authored
PR3296 and PR3302. llvm-svn: 62160
-
Chris Lattner authored
llvm-svn: 62158
-
Chris Lattner authored
sees attributes it doesn't know. llvm-svn: 62155
-
Evan Cheng authored
llvm-svn: 62151
-
Evan Cheng authored
FIX llvm-gcc bootstrap on x86_64 linux. If a virtual register is copied to a physical register, it's not necessarily defined by a copy. We have to watch out it doesn't clobber any sub-register that might be live during its live interval. If the live interval crosses a basic block, then it's not safe to check with the less conservative check (by scanning uses and defs) because it's possible a sub-register might be live out of the block. llvm-svn: 62144
-
Devang Patel authored
Use DebugInfo interface to lower dbg_* intrinsics. llvm-svn: 62127
-
Devang Patel authored
llvm-svn: 62125
-
Devang Patel authored
llvm-svn: 62118
-
Devang Patel authored
If multiple compile units are seen then emit them independently. In other words, do not force all DIEs into first, whatever it is, compile unit. Note, multiple compile unit support is not well tested (it did not work correctly until now anyway.) llvm-svn: 62116
-
- Jan 12, 2009
-
-
Devang Patel authored
llvm-svn: 62115
-
Devang Patel authored
llvm-svn: 62114
-
Dale Johannesen authored
back to 200; 400 seems to be too high, loses more than it gains. llvm-svn: 62107
-
Devang Patel authored
llvm-svn: 62104
-