| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
that one of the numbers is signed while the other is unsigned. This could lead
to a wrong result when the signed was promoted to an unsigned int.
* Add the data layout line to the testcase so that it will test the appropriate
thing.
Patch by David Terei!
llvm-svn: 128577
|
| |
|
|
|
|
|
|
| |
fmul.
Fixes PR9587.
llvm-svn: 128546
|
| |
|
|
|
|
| |
PHINode::Create() giving the (known or expected) number of operands.
llvm-svn: 128537
|
| |
|
|
| |
llvm-svn: 128535
|
| |
|
|
|
|
|
|
| |
On x86 we now compile "if (a < 0 && b < 0)" into
testl %edi, %esi
js IF.THEN
llvm-svn: 128496
|
| |
|
|
|
|
|
|
| |
SmallPtrSet.
Fixes PR9569 and will hopefully make selfhost on ASLR-enabled systems more deterministic.
llvm-svn: 128482
|
| |
|
|
|
|
|
| |
vector types. This helps a lot with inlined functions when using the ARM soft
float ABI. Fixes <rdar://problem/9184212>.
llvm-svn: 128453
|
| |
|
|
| |
llvm-svn: 128413
|
| |
|
|
| |
llvm-svn: 128406
|
| |
|
|
|
|
| |
output for those cases much clearer since without this it only showed that the original instruction was removed, not what it was replaced with.
llvm-svn: 128399
|
| |
|
|
|
|
| |
the subclass optional data.
llvm-svn: 128388
|
| |
|
|
| |
llvm-svn: 128380
|
| |
|
|
|
|
|
|
|
|
| |
removes one use of X which helps it pass the many hasOneUse() checks.
In my analysis, this turns up very often where X = A >>exact B and that can't be
simplified unless X has one use (except by increasing the lifetime of A which is
generally a performance loss).
llvm-svn: 128373
|
| |
|
|
| |
llvm-svn: 128333
|
| |
|
|
|
|
|
|
|
|
|
| |
There are two ways that a later store can comletely overlap a previous store:
1. They both start at the same offset, but the earlier store's size is <= the
later's size, or
2. The earlier store's offset is > the later's offset, but it's offset + size
doesn't extend past the later's offset + size.
llvm-svn: 128332
|
| |
|
|
| |
llvm-svn: 128331
|
| |
|
|
|
|
|
| |
completely overlaps a previous store, thus mistakenly deleting that store. Check
for this condition.
llvm-svn: 128319
|
| |
|
|
|
|
| |
compliance.
llvm-svn: 128257
|
| |
|
|
|
|
| |
affect the generated code.
llvm-svn: 128217
|
| |
|
|
|
|
| |
void; it doesn't need to have a void type.
llvm-svn: 128212
|
| |
|
|
| |
llvm-svn: 128211
|
| |
|
|
|
|
| |
void return type. This fixes PR9487.
llvm-svn: 128197
|
| |
|
|
| |
llvm-svn: 128196
|
| |
|
|
|
|
| |
use it later. I couldn't make a test that hits this with the current code.
llvm-svn: 128195
|
| |
|
|
| |
llvm-svn: 128194
|
| |
|
|
|
|
| |
that were hit in practice.
llvm-svn: 128146
|
| |
|
|
| |
llvm-svn: 128068
|