| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 72360
|
| |
|
|
|
|
|
| |
all results and all operands are legal, so this change shouldn't affect
behavior at all.
llvm-svn: 72359
|
| |
|
|
|
|
|
| |
This leaves around 4000 lines of dead code; I'll clean that up
in subsequent commits.
llvm-svn: 72358
|
| |
|
|
|
|
| |
nodes it generates.
llvm-svn: 72356
|
| |
|
|
|
|
| |
ExpandExtractFromVectorThroughStack.
llvm-svn: 72351
|
| |
|
|
|
|
| |
moment.
llvm-svn: 72350
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 72337
|
| |
|
|
| |
llvm-svn: 72336
|
| |
|
|
| |
llvm-svn: 72335
|
| |
|
|
| |
llvm-svn: 72332
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 72329
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
instead of signed integer constant.
llvm-svn: 72300
|
| |
|
|
|
|
| |
files for PIC16 target.
llvm-svn: 72277
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
for ARM. This fixes rdar://6908807.
llvm-svn: 72269
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
well because on PIC16 they are emitted as globals by the frontend).
llvm-svn: 72262
|
| |
|
|
| |
llvm-svn: 72253
|
| |
|
|
|
|
|
| |
use in expanding SCEVAddExprs with GEPs. The operands of a
SCEVMulExpr need to be multiplied together, not added.
llvm-svn: 72250
|
| |
|
|
|
|
|
| |
indirect call into direct call, thus the verifier would reject something it
previously accepted.
llvm-svn: 72249
|
| |
|
|
|
|
|
|
|
| |
This only rejects mismatches between target specific calling convention
and C/LLVM specific calling convention.
There are too many fastcc/C, coldcc/cc42 mismatches in the testsuite, these are
not reject by the verifier.
llvm-svn: 72248
|
| |
|
|
|
|
| |
PR4238.
llvm-svn: 72244
|
| |
|
|
|
|
| |
DragonFly OS type.
llvm-svn: 72242
|
| |
|
|
| |
llvm-svn: 72239
|
| |
|
|
| |
llvm-svn: 72235
|
| |
|
|
|
|
| |
PR4238.
llvm-svn: 72223
|
| |
|
|
|
|
|
|
|
| |
type as a target independent constant expression. I confess
that I didn't check that this method works as intended (though
I did test the equivalent hand-written IR a little). But what
could possibly go wrong!
llvm-svn: 72213
|
| |
|
|
| |
llvm-svn: 72210
|
| |
|
|
|
|
|
|
| |
Instcombine to be more aggressive about using SimplifyDemandedBits
on shift nodes. This allows a shift to be simplified to zero in the
included test case.
llvm-svn: 72204
|
| |
|
|
| |
llvm-svn: 72202
|
| |
|
|
|
|
| |
bootstrapping.
llvm-svn: 72200
|
| |
|
|
| |
llvm-svn: 72198
|
| |
|
|
| |
llvm-svn: 72197
|
| |
|
|
| |
llvm-svn: 72196
|
| |
|
|
| |
llvm-svn: 72195
|
| |
|
|
| |
llvm-svn: 72194
|
| |
|
|
| |
llvm-svn: 72193
|
| |
|
|
|
|
|
| |
the 'constract function dbg thingy'. Rename some methods to make them consistent
with the rest of the methods. Move the 'Emit' methods to the end of the file.
llvm-svn: 72192
|
| |
|
|
|
|
|
|
| |
DebugLoc.
DebugScope refers to a debug region, function or block.
llvm-svn: 72191
|
| |
|
|
|
|
| |
initialization succeeded or not, rather than just asserting.
llvm-svn: 72182
|
| |
|
|
| |
llvm-svn: 72180
|
| |
|
|
|
|
| |
Hopefully this fixes the last build errors on systems with GCC < 4.1.
llvm-svn: 72179
|
| |
|
|
| |
llvm-svn: 72177
|
| |
|
|
|
|
|
|
| |
silly,
all kinds of problems caused by including windows.h and/or config.h in an LLVM header.
llvm-svn: 72174
|
| |
|
|
| |
llvm-svn: 72172
|