| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
for ARM. Patch by Sandeep Patel.
llvm-svn: 69371
|
| |
|
|
|
|
| |
This fixes a --enable-expensive-checks problem.
llvm-svn: 69353
|
| |
|
|
|
|
|
|
|
| |
leaq foo@TLSGD(%rip), %rdi
as part of the instruction sequence. Using a register other than %rdi and then
copying it to %rdi is not valid.
llvm-svn: 69350
|
| |
|
|
| |
llvm-svn: 69347
|
| |
|
|
|
|
|
| |
regression in 403.gcc in PIC_CODEGEN=1 and DISABLE_LTO=1
mode.
llvm-svn: 69344
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
register is available and when it's profitable.
e.g.
xorq %r12<kill>, %r13
addq %rax, -184(%rbp)
addq %r13, -184(%rbp)
==>
xorq %r12<kill>, %r13
movq -184(%rbp), %r12
addq %rax, %r12
addq %r13, %r12
movq %r12, -184(%rbp)
Two more instructions, but fewer memory accesses. It can also open up
opportunities for more optimizations.
llvm-svn: 69341
|
| |
|
|
|
|
|
| |
matter, because this instruction isn't generated until after
things that care.
llvm-svn: 69336
|
| |
|
|
|
|
| |
present, but it's inconsistent.
llvm-svn: 69335
|
| |
|
|
|
|
|
| |
this fixes a crash on CodeGen/Generic/externally_available.ll
on ppc hosts. Thanks to Nicholas L for pointing this out.
llvm-svn: 69333
|
| |
|
|
|
|
| |
to get the correct answer for pointer types.
llvm-svn: 69321
|
| |
|
|
|
|
|
|
| |
locks must be matched with unlocks. Also, use calloc to allocate the
block so that it is properly zero'd. Thanks to Nick Kledzik for
tracking this down.
llvm-svn: 69314
|
| |
|
|
|
|
| |
incoming edges for a block with many predecessors.
llvm-svn: 69312
|
| |
|
|
| |
llvm-svn: 69310
|
| |
|
|
|
|
|
|
|
| |
add dependencies on nodes with exactly one successor which is a
COPY_TO_REGCLASS node. In the case that the copy is coalesced
away, the dependence should be on the user of the copy, rather
than the copy itself.
llvm-svn: 69309
|
| |
|
|
|
|
| |
as INSERT_SUBREG instructions in the list-burr scheduler.
llvm-svn: 69308
|
| |
|
|
|
|
|
|
| |
size from the integer, requiring zero extension or truncation. Don't
create ZExtInsts with pointer types. This fixes a regression in
consumer-jpeg.
llvm-svn: 69307
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
scope if the location info is missing.
Insetad of doing ...
if (inlined_subroutine && known_location)
DW_TAG_inline_subroutine
else
DW_TAG_subprogram
do
if (inlined_subroutine) {
if (known_location)
DW_TAG_inline_subroutine
} else {
DW_TAG_subprogram
}
llvm-svn: 69300
|
| |
|
|
|
|
|
| |
targets with pointers larger than 64 bits, due to the code not
yet being APInt clean.
llvm-svn: 69296
|
| |
|
|
|
|
| |
optimizer, which just happen to frequently involve optimizing GEPs.
llvm-svn: 69295
|
| |
|
|
|
|
|
| |
not create ICmpInsts with operands of different types. This fixes
a regression in Applications/d/make_dparser.
llvm-svn: 69294
|
| |
|
|
|
|
| |
and ptrtoint-of-inttoptr expressions. This fixes a regression in 300.twolf.
llvm-svn: 69293
|
| |
|
|
|
|
| |
since the operand is always a constant.
llvm-svn: 69291
|
| |
|
|
|
|
| |
new instruction with SCEVExpander::InsertCastOfTo.
llvm-svn: 69290
|
| |
|
|
|
|
| |
This line was accidently lost yesterday.
llvm-svn: 69286
|
| |
|
|
| |
llvm-svn: 69284
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
have pointer types, though in contrast to C pointer types, SCEV
addition is never implicitly scaled. This not only eliminates the
need for special code like IndVars' EliminatePointerRecurrence
and LSR's own GEP expansion code, it also does a better job because
it lets the normal optimizations handle pointer expressions just
like integer expressions.
Also, since LLVM IR GEPs can't directly index into multi-dimensional
VLAs, moving the GEP analysis out of client code and into the SCEV
framework makes it easier for clients to handle multi-dimensional
VLAs the same way as other arrays.
Some existing regression tests show improved optimization.
test/CodeGen/ARM/2007-03-13-InstrSched.ll in particular improved to
the point where if-conversion started kicking in; I turned it off
for this test to preserve the intent of the test.
llvm-svn: 69258
|
| |
|
|
|
|
| |
This code could use some refactoring help!
llvm-svn: 69254
|
| |
|
|
| |
llvm-svn: 69253
|
| |
|
|
|
|
| |
debug info describing inlinied region.
llvm-svn: 69252
|
| |
|
|
|
|
|
|
| |
and sext over (iv | const), if a longer iv is
available. Allow expressions to have more than
one zext/sext parent. All from OpenSSL.
llvm-svn: 69241
|
| |
|
|
| |
llvm-svn: 69216
|
| |
|
|
|
|
|
| |
if a longer iv is available. These subscript forms are
not common; they're a bottleneck in OpenSSL.
llvm-svn: 69215
|
| |
|
|
| |
llvm-svn: 69211
|
| |
|
|
|
|
| |
This fixes test/CodeGen//2009-01-21-invalid-debug-info.m test case.
llvm-svn: 69210
|
| |
|
|
|
|
|
|
| |
to support replacing a node with another that has a superset of
the result types. Use this instead of calling
ReplaceAllUsesOfValueWith for each value.
llvm-svn: 69209
|
| |
|
|
| |
llvm-svn: 69204
|
| |
|
|
| |
llvm-svn: 69203
|
| |
|
|
| |
llvm-svn: 69202
|
| |
|
|
|
|
| |
variadic operands correctly. Patch by Jakob Stoklund Olesen!
llvm-svn: 69190
|
| |
|
|
|
|
| |
problem from instcombine.
llvm-svn: 69151
|
| |
|
|
| |
llvm-svn: 69127
|
| |
|
|
| |
llvm-svn: 69126
|
| |
|
|
| |
llvm-svn: 69125
|
| |
|
|
|
|
| |
code out of line.
llvm-svn: 69124
|
| |
|
|
|
|
|
|
|
| |
sext around sext(shorter IV + constant), using a
longer IV instead, when it can figure out the
add can't overflow. This comes up a lot in
subscripting; mainly affects 64 bit.
llvm-svn: 69123
|
| |
|
|
|
|
| |
destinations have phi nodes.
llvm-svn: 69121
|
| |
|
|
|
|
| |
llvm.dbg.region.end instrinsic. This nested llvm.dbg.func.start/llvm.dbg.region.end pair now enables DW_TAG_inlined_subroutine support in code generator.
llvm-svn: 69118
|
| |
|
|
|
|
| |
scopes (only in FastISel mode).
llvm-svn: 69116
|
| |
|
|
|
|
| |
the local register allocator.
llvm-svn: 69115
|
| |
|
|
|
|
| |
Function or not.
llvm-svn: 69113
|