| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
canonical, and generally leads to better code. Found while looking at
an article about saturating arithmetic.
llvm-svn: 129545
|
| |
|
|
|
|
|
|
|
|
| |
repeatedly undo each other. The solution is to perform more aggressive constant folding to make one of the edges just folded away rather than trying to thread it.
Fixes <rdar://problem/9284786>.
Discovered with CSmith.
llvm-svn: 129538
|
| |
|
|
| |
llvm-svn: 129532
|
| |
|
|
| |
llvm-svn: 129509
|
| |
|
|
|
|
|
|
|
|
|
|
| |
instruction around, reducing work.
Greatly simplify handling of debug instructions. There is no need to
build up a vector of them and then move them into the one predecessor
if we're processing a block. Instead just rescan the block and *copy*
them into the pred. If a block gets merged into multiple preds, this
will retain more debug info.
llvm-svn: 129502
|
| |
|
|
| |
llvm-svn: 129501
|
| |
|
|
|
|
|
|
| |
the same allocation size but different primitive sizes(e.g., <3xi32> and
<4xi32>). When ScalarRepl promotes them, it can't use a bit cast but
should use a shuffle vector instead.
llvm-svn: 129472
|
| |
|
|
| |
llvm-svn: 129450
|
| |
|
|
|
|
|
|
|
| |
LoopUnroll class's ctor. Doing so
will allow multiple context with different loop unroll parameters to run. This is a minor change and no effect
on existing application.
llvm-svn: 129449
|
| |
|
|
| |
llvm-svn: 129447
|
| |
|
|
| |
llvm-svn: 129419
|
| |
|
|
| |
llvm-svn: 129403
|
| |
|
|
|
|
|
|
|
| |
Now that we have a first-class way to represent unaligned loads, the unaligned
load intrinsics are superfluous.
First part of <rdar://problem/8460511>.
llvm-svn: 129401
|
| |
|
|
|
|
| |
up r129340.
llvm-svn: 129343
|
| |
|
|
|
|
|
|
|
|
| |
Use debug info in the IR to find the directory/file:line:col. Each time that location changes, bump a counter.
Unlike the existing profiling system, we don't try to look at argv[], and thusly don't require main() to be present in the IR. This matches GCC's technique where you specify the profiling flag when producing each .o file.
The runtime library is minimal, currently just calling printf at program shutdown time. The API is designed to make it possible to emit GCOV data later on.
llvm-svn: 129340
|
| |
|
|
| |
llvm-svn: 129338
|
| |
|
|
|
|
|
|
|
| |
reassociation opportunities are exposed. This fixes a bug where
the nested reassociation expects to be the IR to be consistent,
but it isn't, because the outer reassociation has disconnected
some of the operands. rdar://9167457
llvm-svn: 129324
|
| |
|
|
| |
llvm-svn: 129319
|
| |
|
|
|
|
|
| |
has some bugs. If this is interesting functionality, it should be
reimplemented in the argpromotion pass.
llvm-svn: 129314
|
| |
|
|
|
|
|
|
|
|
|
|
| |
mean that it has to be ConstantArray of ConstantStruct. We might have
ConstantAggregateZero, at either level, so don't crash on that.
Also, semi-deprecate the sentinal value. The linker isn't aware of sentinals so
we end up with the two lists appended, each with their "sentinals" on them.
Different parts of LLVM treated sentinals differently, so make them all just
ignore the single entry and continue on with the rest of the list.
llvm-svn: 129307
|
| |
|
|
| |
llvm-svn: 129271
|
| |
|
|
|
|
|
| |
is an array of structures doesn't imply it's a ConstantArray of
ConstantStruct.
llvm-svn: 129207
|
| |
|
|
|
|
| |
indirectbr.
llvm-svn: 129203
|
| |
|
|
|
|
|
| |
delete the instruction pointed to by CGP's current instruction
iterator, leading to a crash on the testcase. This fixes PR9578.
llvm-svn: 129200
|
| |
|
|
|
|
|
| |
can be used even when main() isn't present in the Module, but it means that you
don't get to read argv[].
llvm-svn: 129163
|
| |
|
|
|
|
|
| |
of { i32, void ()* }. Teach the verifier to verify that, deleting copies of
checks strewn about.
llvm-svn: 129128
|
| |
|
|
| |
llvm-svn: 129114
|
| |
|
|
| |
llvm-svn: 129087
|
| |
|
|
|
|
| |
match.
llvm-svn: 129078
|
| |
|
|
|
|
|
|
|
|
|
| |
is equivalent to any other relevant value; it isn't true in general.
If it is equivalent, the LoopPromoter will tell the AST the equivalence.
Also, delete the PreheaderLoad if it is unused.
Chris, since you were the last one to make major changes here, can you check
that this is sane?
llvm-svn: 129049
|
| |
|
|
| |
llvm-svn: 129041
|
| |
|
|
|
|
| |
values also.
llvm-svn: 129035
|
| |
|
|
| |
llvm-svn: 128924
|
| |
|
|
|
|
|
| |
space info. We crash with an assert in this case. This change checks that the
address space of the bitcasted pointer is the same as the gep ptr.
llvm-svn: 128884
|
| |
|
|
|
|
|
| |
returning a scalar value in a function whose return type is a single-
element structure or array.
llvm-svn: 128810
|
| |
|
|
|
|
|
| |
llvm-commits. (Not sure why it only breaks on Windows; maybe it has
something to do with the iterator representation...)
llvm-svn: 128802
|
| |
|
|
|
|
|
|
|
|
|
| |
after the given instruction; make sure to handle that case correctly.
(It's difficult to trigger; the included testcase involves a dead
block, but I don't think that's a requirement.)
While I'm here, get rid of the unnecessary warning about
SimplifyInstructionsInBlock, since it should work correctly as far as I know.
llvm-svn: 128782
|
| |
|
|
|
|
|
|
|
|
| |
It's possible to craft an input that hits the recursion limits in a way
that SimplifyDemandedBits doesn't simplify the icmp but ComputeMaskedBits
can infer which bits are zero.
No test case as it depends on too many other things. Fixes PR9609.
llvm-svn: 128777
|
| |
|
|
| |
llvm-svn: 128745
|
| |
|
|
|
|
|
|
|
|
| |
- Localize the check if an icmp has one use to a place where we know we're
introducing something that's likely more expensive than a sext from i1.
- Add an assert to make sure a case that would lead to a miscompilation is
folded away earlier.
- Fix a typo.
llvm-svn: 128744
|
| |
|
|
| |
llvm-svn: 128733
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
only one unknown bit.
int test1(unsigned x) { return (x&8) ? 0 : -1; }
int test3(unsigned x) { return (x&8) ? -1 : 0; }
before (x86_64):
_test1:
andl $8, %edi
cmpl $1, %edi
sbbl %eax, %eax
ret
_test3:
andl $8, %edi
cmpl $1, %edi
sbbl %eax, %eax
notl %eax
ret
after:
_test1:
shrl $3, %edi
andl $1, %edi
leal -1(%rdi), %eax
ret
_test3:
shll $28, %edi
movl %edi, %eax
sarl $31, %eax
ret
llvm-svn: 128732
|
| |
|
|
|
|
| |
functionality change.
llvm-svn: 128731
|
| |
|
|
| |
llvm-svn: 128683
|
| |
|
|
|
|
|
|
| |
even try.
Thanks Eli!
llvm-svn: 128676
|
| |
|
|
|
|
| |
Thanks Frits!
llvm-svn: 128628
|
| |
|
|
| |
llvm-svn: 128627
|
| |
|
|
| |
llvm-svn: 128626
|
| |
|
|
|
|
|
|
| |
losslessly converted to the type of x.
Fixes PR9592.
llvm-svn: 128625
|
| |
|
|
| |
llvm-svn: 128624
|