| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
either the source or destination is a physical h register.
This fixes sqlite3 with the post-RA scheduler enabled.
llvm-svn: 69111
|
| |
|
|
|
|
| |
REX prefixes.
llvm-svn: 69108
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This turns:
eq:
%3 = icmp eq i32 %1, %2
br label %join
ne:
%4 = icmp ne i32 %1, %2
br label %join
join:
%5 = phi i1 [%3, %eq], [%4, %ne]
br i1 %5, label %yes, label %no
=>
eq:
%3 = icmp eq i32 %1, %2
br i1 %3, label %yes, label %no
ne:
%4 = icmp ne i32 %1, %2
br i1 %4, label %yes, label %no
llvm-svn: 69102
|
| |
|
|
|
|
| |
any non-address uses of the address value. This fixes 186.crafty.
llvm-svn: 69094
|
| |
|
|
| |
llvm-svn: 69090
|
| |
|
|
|
|
|
|
|
|
|
|
| |
operator is used by a CopyToReg to export the value to a different
block, don't reuse the CopyToReg's register for the subreg operation
result if the register isn't precisely the right class for the
subreg operation.
Also, rename the h-registers.ll test, now that there are more
than one.
llvm-svn: 69087
|
| |
|
|
|
|
|
|
| |
Makes llvmc show error messages printed by child processes when run from the
Cygwin/MSYS shell. Since ExecuteAndWait does not return until the child program
has finished execution, this change should be harmless.
llvm-svn: 69082
|
| |
|
|
| |
llvm-svn: 69081
|
| |
|
|
| |
llvm-svn: 69049
|
| |
|
|
| |
llvm-svn: 69022
|
| |
|
|
|
|
| |
deleting, not just the basic block.
llvm-svn: 69011
|
| |
|
|
|
|
|
| |
memory and aren't volatile. This was interfering with
good scheduling.
llvm-svn: 69008
|
| |
|
|
|
|
| |
IsDstPhys which are returned by value and used by callee. This happened to work on the earlier test cases because of a logic error in the caller side.
llvm-svn: 69006
|
| |
|
|
| |
llvm-svn: 68998
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
promoted to legal types without changing the type of the vector. This is
following a suggestion from Duncan
(http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/019923.html).
The transformation that used to be done during type legalization is now
postponed to DAG legalization. This allows the BUILD_VECTORs to be optimized
and potentially handled specially by target-specific code.
It turns out that this is also consistent with an optimization done by the
DAG combiner: a BUILD_VECTOR and INSERT_VECTOR_ELT may be combined by
replacing one of the BUILD_VECTOR operands with the newly inserted element;
but INSERT_VECTOR_ELT allows its scalar operand to be larger than the
element type, with any extra high bits being implicitly truncated. The
result is a BUILD_VECTOR where one of the operands has a type larger the
the vector element type.
Any code that operates on BUILD_VECTORs may now need to be aware of the
potential type discrepancy between the vector element type and the
BUILD_VECTOR operands. This patch updates all of the places that I could
find to handle that case.
llvm-svn: 68996
|