| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 61514
|
| |
|
|
|
|
| |
Darwin doesn't. Make this optional for platforms.
llvm-svn: 61484
|
| |
|
|
|
|
| |
(quad) on a 64-bit platform. This fixes a problem with EH frames on Darwin.
llvm-svn: 61483
|
| |
|
|
| |
llvm-svn: 61465
|
| |
|
|
| |
llvm-svn: 61463
|
| |
|
|
| |
llvm-svn: 61460
|
| |
|
|
|
|
| |
through recursive phi construction.
llvm-svn: 61458
|
| |
|
|
| |
llvm-svn: 61420
|
| |
|
|
|
|
| |
about other platforms.
llvm-svn: 61415
|
| |
|
|
| |
llvm-svn: 61405
|
| |
|
|
| |
llvm-svn: 61401
|
| |
|
|
| |
llvm-svn: 61398
|
| |
|
|
| |
llvm-svn: 61397
|
| |
|
|
| |
llvm-svn: 61396
|
| |
|
|
| |
llvm-svn: 61395
|
| |
|
|
|
|
| |
Silence unused variable warning.
llvm-svn: 61391
|
| |
|
|
| |
llvm-svn: 61390
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This removes all the _8, _16, _32, and _64 opcodes and replaces each
group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode
is now used to carry the size information. In tablegen, the size-specific
opcodes are replaced by size-independent opcodes that utilize the
ability to compose them with predicates.
This shrinks the per-opcode tables and makes the code that handles
atomics much more concise.
llvm-svn: 61389
|
| |
|
|
|
|
| |
code in ScheduleDAGSDNodes' BuildSchedGraph into separate functions.
llvm-svn: 61376
|
| |
|
|
|
|
|
|
| |
several places. isTerminator() returns true for a superset
of cases, and includes things like FP_REG_KILL, which are
nither return or branch but aren't safe to move/remat/etc.
llvm-svn: 61373
|
| |
|
|
| |
llvm-svn: 61372
|
| |
|
|
| |
llvm-svn: 61371
|
| |
|
|
| |
llvm-svn: 61361
|
| |
|
|
|
|
| |
functions.
llvm-svn: 61345
|
| |
|
|
|
|
| |
up on a profile.
llvm-svn: 61344
|
| |
|
|
| |
llvm-svn: 61277
|
| |
|
|
|
|
| |
and setDepthDirty(), respectively. This fixes PR3241.
llvm-svn: 61276
|
| |
|
|
|
|
| |
warnings on compilers that warn about such things.
llvm-svn: 61263
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this.
172 %ECX<def> = MOV32rr %reg1039<kill>
180 INLINEASM <es:subl $5,$1
sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>,
36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0
188 %EAX<def> = MOV32rr %EAX<kill>
196 %ECX<def> = MOV32rr %ECX<kill>
204 %ECX<def> = MOV32rr %ECX<kill>
212 %EAX<def> = MOV32rr %EAX<kill>
220 %EAX<def> = MOV32rr %EAX
228 %reg1039<def> = MOV32rr %ECX<kill>
The early clobber operand ties ECX input to the ECX def.
The live interval of ECX is represented as this:
%reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47)
The right way to represent this is something like
%reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47)
Of course that won't work since that means overlapping live ranges defined by two val#.
The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom.
llvm-svn: 61259
|
| |
|
|
| |
llvm-svn: 61244
|
| |
|
|
|
|
|
| |
The EH_frame and .eh symbols are now private, except for darwin9 and earlier.
The patch also fixes the definition of PrivateGlobalPrefix on pcc linux.
llvm-svn: 61242
|
| |
|
|
| |
llvm-svn: 61238
|
| |
|
|
|
|
| |
data from a previous block.
llvm-svn: 61237
|
| |
|
|
|
|
| |
subreg instructions.
llvm-svn: 61220
|
| |
|
|
|
|
| |
that of INSERT_SUBREG and SUBREG_TO_REG.
llvm-svn: 61218
|
| |
|
|
| |
llvm-svn: 61217
|
| |
|
|
| |
llvm-svn: 61216
|
| |
|
|
| |
llvm-svn: 61213
|
| |
|
|
| |
llvm-svn: 61209
|
| |
|
|
| |
llvm-svn: 61184
|
| |
|
|
|
|
|
| |
folding's tail merging doesn't currently preserve liveness information
which post-RA scheduling requires.
llvm-svn: 61183
|
| |
|
|
| |
llvm-svn: 61182
|
| |
|
|
| |
llvm-svn: 61159
|
| |
|
|
|
|
| |
splitting.
llvm-svn: 61158
|
| |
|
|
| |
llvm-svn: 61129
|
| |
|
|
|
|
|
|
|
| |
temporary workaround for an obscure bug. When node cloning is
used, it is possible that more SUnits will be created, and
if the SUnits std::vector has to reallocate, it will
invalidate all the graph edges.
llvm-svn: 61122
|
| |
|
|
|
|
|
| |
Depth and Height members directly, as they may not be
current.
llvm-svn: 61121
|
| |
|
|
|
|
|
|
|
| |
DAGTypeLegalizer::ExpandShiftWithKnownAmountBit.
In terms of restoring the optimization, the best fix here isn't
obvious... any ideas?
llvm-svn: 61119
|
| |
|
|
|
|
| |
are there under ADD, this one was missing.
llvm-svn: 61107
|
| |
|
|
|
|
| |
now until I finish working out some iterator invalidation issues.
llvm-svn: 61104
|