| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
where the element is of a basic builtin type. For example, to get
an i8* use getInt8PtrTy.
llvm-svn: 83379
|
| |
|
|
|
|
| |
ConstantFoldLoadThroughGEPConstantExpr.
llvm-svn: 83311
|
| |
|
|
| |
llvm-svn: 83310
|
| |
|
|
|
|
|
|
| |
the new predicates I added) instead of going through a context and doing a
pointer comparison. Besides being cheaper, this allows a smart compiler
to turn the if sequence into a switch.
llvm-svn: 83297
|
| |
|
|
|
|
| |
This fixes PR5130.
llvm-svn: 83290
|
| |
|
|
| |
llvm-svn: 83194
|
| |
|
|
|
|
| |
Ok'd by Owen.
llvm-svn: 83193
|
| |
|
|
|
|
|
|
| |
phi nodes. Make sure to phi translate from the right block.
This fixes a llvm-building-llvm failure on GVN-PRE.cpp
llvm-svn: 82970
|
| |
|
|
| |
llvm-svn: 82936
|
| |
|
|
|
|
| |
null) -> icmp(x, null) already.
llvm-svn: 82935
|
| |
|
|
| |
llvm-svn: 82933
|
| |
|
|
|
|
| |
malloc isn't needed.
llvm-svn: 82932
|
| |
|
|
| |
llvm-svn: 82929
|
| |
|
|
|
|
| |
These are important to push up to encourage jump threading. This shrinks 176.gcc a bit.
llvm-svn: 82923
|
| |
|
|
|
|
|
| |
simple constants for the true/false value of the select. We now
do phi translation etc. This really fixes PR4895 :)
llvm-svn: 82917
|
| |
|
|
|
|
|
|
|
|
| |
that are phi nodes. Also tighten up FoldOpIntoPhi to treat constantexpr
operands to phis just like other variables, avoiding moving constantexpr
computations around.
Patch by Daniel Dunbar.
llvm-svn: 82913
|
| |
|
|
|
|
| |
that is deleted in some situations. This fixes a use-after-free.
llvm-svn: 82903
|
| |
|
|
|
|
| |
rotating the loop, since loop rotation is a very significant change.
llvm-svn: 82901
|
| |
|
|
|
|
| |
update all the callers.
llvm-svn: 82889
|
| |
|
|
|
|
|
| |
calls, since direct calls don't always reflect the attributes of their
callees.
llvm-svn: 82867
|
| |
|
|
| |
llvm-svn: 82823
|
| |
|
|
|
|
| |
typically faster then doing a general pow.
llvm-svn: 82819
|
| |
|
|
| |
llvm-svn: 82700
|
| |
|
|
|
|
|
| |
rather structs passed by value.
This fixes PR5038.
llvm-svn: 82689
|
| |
|
|
|
|
| |
bootstrap problems.
llvm-svn: 82464
|
| |
|
|
|
|
| |
by setPreservesCFG().
llvm-svn: 82463
|
| |
|
|
|
|
|
| |
helpful, and it didn't correctly handle the case of constants input
to PHIs for backedges.
llvm-svn: 82462
|
| |
|
|
|
|
| |
arrays and structs, which cannot be bitcast to integers.
llvm-svn: 82460
|
| |
|
|
|
|
|
| |
This doesn't kick in too much because of phi translation issues,
but this can be resolved in the future.
llvm-svn: 82447
|
| |
|
|
| |
llvm-svn: 82446
|
| |
|
|
| |
llvm-svn: 82444
|
| |
|
|
|
|
| |
analysis, one that does the xform.
llvm-svn: 82443
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
from a piece of a large store when both are in the same block.
This allows clang to compile the testcase in PR4216 to this code:
_test_bitfield:
movl 4(%esp), %eax
movl %eax, %ecx
andl $-65536, %ecx
orl $32962, %eax
andl $40186, %eax
orl %ecx, %eax
ret
This is not ideal, but is a whole lot better than the code produced
by llvm-gcc:
_test_bitfield:
movw $-32574, %ax
orw 4(%esp), %ax
andw $-25350, %ax
movw %ax, 4(%esp)
movw 7(%esp), %cx
shlw $8, %cx
movzbl 6(%esp), %edx
orw %cx, %dx
movzwl %dx, %ecx
shll $16, %ecx
movzwl %ax, %eax
orl %ecx, %eax
ret
and dramatically better than that produced by gcc 4.2:
_test_bitfield:
pushl %ebx
call L3
"L00000000001$pb":
L3:
popl %ebx
movl 8(%esp), %eax
leal 0(,%eax,4), %edx
sarb $7, %dl
movl %eax, %ecx
andl $7168, %ecx
andl $-7201, %ebx
movzbl %dl, %edx
andl $1, %edx
sall $5, %edx
orl %ecx, %ebx
orl %edx, %ebx
andl $24, %eax
andl $-58336, %ebx
orl %eax, %ebx
orl $32962, %ebx
movl %ebx, %eax
popl %ebx
ret
llvm-svn: 82439
|
| |
|
|
| |
llvm-svn: 82426
|
| |
|
|
|
|
|
|
| |
so that nonlocal and partially redundant loads can use it as well.
The testcase shows examples of craziness this can handle. This triggers
*many* times in 176.gcc.
llvm-svn: 82403
|
| |
|
|
|
|
| |
more generic.
llvm-svn: 82402
|
| |
|
|
|
|
|
|
| |
(and load -> load) when the base pointers must alias but when
they are different types. This occurs very very frequently in
176.gcc and other code that uses bitfields a lot.
llvm-svn: 82399
|
| |
|
|
| |
llvm-svn: 82355
|
| |
|
|
|
|
|
|
| |
calls as to MallocInst.
Reviewed by Dan Gohman.
llvm-svn: 82300
|
| |
|
|
| |
llvm-svn: 82097
|
| |
|
|
|
|
|
|
|
|
|
| |
constants out of loops. These aren't covered by the regular LICM
pass, because in LLVM IR constants don't require separate
instructions. They're not always covered by the MachineLICM pass
either, because it doesn't know how to unfold folded constant-pool
loads. This is somewhat experimental at this point, and off by
default.
llvm-svn: 82076
|
| |
|
|
|
|
|
|
| |
phis, similar to the FoldPHIArgGEPIntoPHI change.
Also, delete some comments that don't reflect the code.
llvm-svn: 82053
|
| |
|
|
| |
llvm-svn: 82034
|
| |
|
|
|
|
|
|
| |
more than one phi, since that leads to higher register pressure on
entry to the phi. This is especially problematic when the phi is in
a loop header, as it increases register pressure throughout the loop.
llvm-svn: 81993
|
| |
|
|
| |
llvm-svn: 81851
|
| |
|
|
| |
llvm-svn: 81840
|
| |
|
|
|
|
| |
memset region to the alignment of the new start address.
llvm-svn: 81810
|
| |
|
|
|
|
|
|
|
|
| |
loop exit edge -- new PHIs may be needed not only for the additional
splits that are made to preserve LoopSimplify form, but also for the
original split. Factor out the code that inserts new PHIs so that it
can be used for both. Remove LoopRotation.cpp's code for manually
updating LCSSA form, as it is now redundant. This fixes PR4934.
llvm-svn: 81363
|
| |
|
|
| |
llvm-svn: 81361
|
| |
|
|
| |
llvm-svn: 81354
|