- May 26, 2009
-
-
Evan Cheng authored
llvm-svn: 72411
-
- May 25, 2009
-
-
Chris Lattner authored
low-level alias() method, allowing it to reason more aggressively about pointers into constant memory. PR4189 llvm-svn: 72403
-
Nick Lewycky authored
or use labels as members of structures for example. Also included a couple of whitespace fixes. llvm-svn: 72402
-
Chris Lattner authored
even on Core2, not just AMD processors which was a surprise to me. llvm-svn: 72396
-
Chris Lattner authored
llvm-svn: 72395
-
Chris Lattner authored
llvm-svn: 72387
-
Dan Gohman authored
llvm-svn: 72376
-
Dan Gohman authored
in the case where a loop exit value cannot be computed, instead of only in some cases while using SCEVCouldNotCompute in others. This simplifies getSCEVAtScope's callers. llvm-svn: 72375
-
- May 24, 2009
-
-
Eli Friedman authored
bit clearer. llvm-svn: 72374
-
Eli Friedman authored
corresponding integer type is legal. llvm-svn: 72373
-
Torok Edwin authored
one of the RecursivelyDeleteTriviallyDeadInstructions. Add a comment explaining why the cache needs to be cleared. llvm-svn: 72372
-
Torok Edwin authored
Also fix 80 column violation. llvm-svn: 72371
-
Dan Gohman authored
leave the original comparison in place if it has other uses, since the other uses won't be dominated by the new comparison instruction. llvm-svn: 72369
-
Dan Gohman authored
Use &Ops[0] instead, which is safe since Ops will never be empty here. llvm-svn: 72368
-
Dan Gohman authored
comparison, use takeName to give the integer comparison a name. llvm-svn: 72367
-
Dan Gohman authored
sending SCEVUnknowns to expandAddToGEP. This avoids the need for expandAddToGEP to bend the rules and peek into SCEVUnknown expressions. Factor out the code for testing whether a SCEV can be factored by a constant for use in a GEP index. This allows it to handle SCEVAddRecExprs, by recursing. As a result, SCEVExpander can now put more things in GEP indices, so it emits fewer explicit mul instructions. llvm-svn: 72366
-
Dan Gohman authored
of low bits of the other operand are preserved in the output. llvm-svn: 72365
-
Torok Edwin authored
Fix by clearing the rewriter cache before deleting the trivially dead instructions. Also make InsertedExpressions use an AssertingVH to catch these bugs easier. llvm-svn: 72364
-
Eli Friedman authored
it's late, and I don't have any better ideas at the moment. Fixes PR4257. llvm-svn: 72363
-
Eli Friedman authored
llvm-svn: 72360
-
Eli Friedman authored
all results and all operands are legal, so this change shouldn't affect behavior at all. llvm-svn: 72359
-
Eli Friedman authored
This leaves around 4000 lines of dead code; I'll clean that up in subsequent commits. llvm-svn: 72358
-
Eli Friedman authored
nodes it generates. llvm-svn: 72356
-
Eli Friedman authored
ExpandExtractFromVectorThroughStack. llvm-svn: 72351
-
Eli Friedman authored
moment. llvm-svn: 72350
-
Eli Friedman authored
doesn't split legal vector operands. This is necessary because the type legalization (and therefore, vector splitting) code will be going away soon. llvm-svn: 72349
-
- May 23, 2009
-
-
Anton Korobeynikov authored
llvm-svn: 72337
-
Anton Korobeynikov authored
llvm-svn: 72336
-
Anton Korobeynikov authored
llvm-svn: 72335
-
Jay Foad authored
llvm-svn: 72332
-
Torok Edwin authored
The DAGCombiner created a negative shiftamount, stored in an unsigned variable. Later the optimizer eliminated the shift entirely as being undefined. Example: (srl (shl X, 56) 48). ShiftAmt is 4294967288. Fix it by checking that the shiftamount is positive, and storing in a signed variable. llvm-svn: 72331
-
Torok Edwin authored
llvm-svn: 72329
-
Torok Edwin authored
and it wasn't generating calls through @PLT for these functions. hasLocalLinkage() is now false for available_externally, I attempted to fix the inliner and dce to handle available_externally properly. It passed make check. llvm-svn: 72328
-
Eli Friedman authored
will allow simplifying LegalizeDAG to eliminate type legalization. (I have a patch to do that, but it's not quite finished; I'll commit it once it's finished and I've fixed any review comments for this patch.) See the comment at the beginning of lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp for more details on the motivation for this patch. llvm-svn: 72325
-
Eli Friedman authored
systems instead of attempting to promote them to a 64-bit SINT_TO_FP or FP_TO_SINT. This is in preparation for removing the type legalization code from LegalizeDAG: once type legalization is gone from LegalizeDAG, it won't be able to handle the i64 operand/result correctly. This isn't quite ideal, but I don't think any other operation for any target ends up in this situation, so treating this case specially seems reasonable. llvm-svn: 72324
-
Evan Cheng authored
Fix bug in FoldFCmp_IntToFP_Cst. If inttofp is a uintofp, use unsigned instead of signed integer constant. llvm-svn: 72300
-
- May 22, 2009
-
-
Oscar Fuentes authored
files for PIC16 target. llvm-svn: 72277
-
Duncan Sands authored
code in preparation for code generation. The main thing it does is handle the case when eh.exception calls (and, in a future patch, eh.selector calls) are far away from landing pads. Right now in practice you only find eh.exception calls close to landing pads: either in a landing pad (the common case) or in a landing pad successor, due to loop passes shifting them about. However future exception handling improvements will result in calls far from landing pads: (1) Inlining of rewinds. Consider the following case: In function @f: ... invoke @g to label %normal unwind label %unwinds ... unwinds: %ex = call i8* @llvm.eh.exception() ... In function @g: ... invoke @something to label %continue unwind label %handler ... handler: %ex = call i8* @llvm.eh.exception() ... perform cleanups ... "rethrow exception" Now inline @g into @f. Currently this is turned into: In function @f: ... invoke @something to label %continue unwind label %handler ... handler: %ex = call i8* @llvm.eh.exception() ... perform cleanups ... invoke "rethrow exception" to label %normal unwind label %unwinds unwinds: %ex = call i8* @llvm.eh.exception() ... However we would like to simplify invoke of "rethrow exception" into a branch to the %unwinds label. Then %unwinds is no longer a landing pad, and the eh.exception call there is then far away from any landing pads. (2) Using the unwind instruction for cleanups. It would be nice to have codegen handle the following case: invoke @something to label %continue unwind label %run_cleanups ... handler: ... perform cleanups ... unwind This requires turning "unwind" into a library call, which necessarily takes a pointer to the exception as an argument (this patch also does this unwind lowering). But that means you are using eh.exception again far from a landing pad. (3) Bugpoint simplifications. When bugpoint is simplifying exception handling code it often generates eh.exception calls far from a landing pad, which then causes codegen to assert. Bugpoint then latches on to this assertion and loses sight of the original problem. Note that it is currently rare for this pass to actually do anything. And in fact it normally shouldn't do anything at all given the code coming out of llvm-gcc! But it does fire a few times in the testsuite. As far as I can see this is almost always due to the LoopStrengthReduce codegen pass introducing pointless loop preheader blocks which are landing pads and only contain a branch to another block. This other block contains an eh.exception call. So probably by tweaking LoopStrengthReduce a bit this can be avoided. llvm-svn: 72276
-
Bob Wilson authored
for ARM. This fixes rdar://6908807. llvm-svn: 72269
-
Dan Gohman authored
assuming that the use of the value is in a block dominated by the "normal" destination. LangRef.html and other documentation sources don't explicitly guarantee this, but it seems to be assumed in other places in LLVM at least. This fixes an assertion failure on the included testcase, which is derived from the Ada testsuite. FixUsesBeforeDefs is a temporary measure which I'm looking to replace with a more capable solution. llvm-svn: 72266
-