Bill Wendling
a1d8e29851
Simplification: Negate the operator== method instead of implementing a full operator!= method.
...
llvm-svn: 61352
2008-12-22 22:16:31 +00:00
Bill Wendling
e42e5a263b
Add verification that deleted instruction isn't hiding in the PHI map.
...
llvm-svn: 61350
2008-12-22 22:14:07 +00:00
Bill Wendling
ac1c0d7f13
Verify removed in a few more places.
...
llvm-svn: 61349
2008-12-22 21:57:30 +00:00
Bill Wendling
b8ecde3d78
Add verification functions to GVN which check to see that an instruction was
...
truely deleted. These will be expanded with further checks of all of the data
structures.
llvm-svn: 61347
2008-12-22 21:36:08 +00:00
Dan Gohman
fd906f6a07
Refactor a bunch of code out of AsmPrinter::EmitGlobalConstant into separate
...
functions.
llvm-svn: 61345
2008-12-22 21:14:27 +00:00
Dan Gohman
112572e95e
Optimize setDepthDirty and setHeightDirty a little, as they showed
...
up on a profile.
llvm-svn: 61344
2008-12-22 21:11:33 +00:00
Dan Gohman
853de53fec
Add an assertion to the ScheduleDAGInstrs class to catch SUnits
...
reallocations. We don't do cloning on MachineInstr schedule DAGs,
but this is a worthwhile sanity check regardless.
llvm-svn: 61343
2008-12-22 21:08:08 +00:00
Dan Gohman
41ba26a452
Add an accesor for the isNormalMemory field in the SDep class.
...
llvm-svn: 61342
2008-12-22 21:06:56 +00:00
Dan Gohman
5b994215c8
Add an assertion to catch SUnits reallocations. And add a doxygen
...
comment for the ScheduleDAGSDNodes class.
llvm-svn: 61341
2008-12-22 21:06:20 +00:00
Dan Gohman
cfc84d4332
Clarify a comment.
...
llvm-svn: 61338
2008-12-22 19:44:39 +00:00
Mikhail Glushenkov
2cd5897920
Use ignore & grep instead of XFAIL.
...
llvm-svn: 61307
2008-12-21 07:47:49 +00:00
Nick Lewycky
8fd2389593
Turn strcmp into memcmp, such as strcmp(P, "x") --> memcmp(P, "x", 2).
...
llvm-svn: 61297
2008-12-21 00:19:21 +00:00
Dan Gohman
c9f244842c
Fix fast-isel to not emit invalid assembly when presented with a
...
constant shift count that doesn't fit in the shift instruction's
immediate field. This fixes PR3242.
llvm-svn: 61281
2008-12-20 17:19:40 +00:00
Dan Gohman
a8303269cf
Reword the comment for ConstantInt's getLimitedValue.
...
llvm-svn: 61280
2008-12-20 17:06:39 +00:00
Nick Lewycky
dd2222ab27
Remove redundant test for vector-nature. Scan the vector first to see whether
...
our optz'n will apply to it, then build the replacement vector only if needed.
llvm-svn: 61279
2008-12-20 16:48:00 +00:00
Dan Gohman
6124fd2975
LiveInterval::removeKills and isKill don't need 'this' and
...
can be static member functions.
llvm-svn: 61278
2008-12-20 16:44:40 +00:00
Dan Gohman
ab5072f624
Use SmallVector's pop_back_val.
...
llvm-svn: 61277
2008-12-20 16:42:33 +00:00
Dan Gohman
8c5bea15ca
Use the correct Preds and Succs lists in setHeightDirty()
...
and setDepthDirty(), respectively. This fixes PR3241.
llvm-svn: 61276
2008-12-20 16:34:57 +00:00
Bill Wendling
3632d60482
More precise XFAIL.
...
llvm-svn: 61265
2008-12-19 22:28:23 +00:00
Bill Wendling
1bbcac82ce
Un-XFAIL this test because it's passing and John doesn't seem interested in un-XFAILing it.
...
llvm-svn: 61264
2008-12-19 22:25:01 +00:00
Dan Gohman
e75b2ce6e2
Use ~0u instead of -1u as the special value, to hopefully avoid
...
warnings on compilers that warn about such things.
llvm-svn: 61263
2008-12-19 22:23:43 +00:00
Evan Cheng
da55c4ffb7
Fix PR3149. If an early clobber def is a physical register and it is tied to 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
2008-12-19 20:58:01 +00:00
John Criswell
b7e13addf7
The fields for the stoppoint debug intrinsic have not changed, so update the
...
version number assertions.
llvm-svn: 61257
2008-12-19 19:56:36 +00:00
Bill Wendling
8f79cd1f1b
This test works again for Darwin because a patch was reverted.
...
llvm-svn: 61254
2008-12-19 19:08:13 +00:00
Gordon Henriksen
9b8b72fe0a
Add dyn_cast_or_null bindings for some additional classes missed in r61252.
...
llvm-svn: 61253
2008-12-19 18:51:17 +00:00
Gordon Henriksen
1f4a555efc
C bindings for dyn_cast_or_null.
...
This operation can be used to build dyn_cast, isa, and cast.
llvm-svn: 61252
2008-12-19 18:39:45 +00:00
Chris Lattner
7819d9c8be
Add support for writing LLVM IR to a specified BitstreamWriter.
...
Patch by Lukasz Janyst!
llvm-svn: 61251
2008-12-19 18:37:59 +00:00
Dan Gohman
22b7b328a4
Move the patterns which have i8 immediates before the patterns
...
that have i32 immediates so that they get selected first. This
currently only matters in the JIT, as assemblers will
automatically use the smallest encoding.
llvm-svn: 61250
2008-12-19 18:25:21 +00:00
Dan Gohman
84db870cc3
Use dyn_cast intead of isa + cast in the generated DAGISel code. This
...
reduces the amount of code slightly when assertions are enabled.
llvm-svn: 61249
2008-12-19 18:13:39 +00:00
Evan Cheng
17b53ef5b0
- CodeGenPrepare does not split loop back edges but it only knows about back edges of single block loops. It now does a DFS walk to find loop back edges.
...
- Use SplitBlockPredecessors to factor out common predecessors of the critical edge destination. This is disabled for now due to some regressions.
llvm-svn: 61248
2008-12-19 18:03:11 +00:00
Chris Lattner
27c3b1df00
Fix some release-assert warnings
...
llvm-svn: 61244
2008-12-19 17:03:38 +00:00
Rafael Espindola
7593f0004f
Fix bug 3202.
...
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
2008-12-19 10:55:56 +00:00
Nick Lewycky
4f2d81176d
Update the .cvs files for nocapture.
...
llvm-svn: 61241
2008-12-19 09:41:54 +00:00
Nick Lewycky
b8719a653f
Commit missed files from nocapture change.
...
llvm-svn: 61240
2008-12-19 09:38:31 +00:00
Nick Lewycky
8f96b51785
Resubmit support for the 'nocapture' attribute.
...
The problematic part of this patch is that we were out of attribute bits,
requiring some fancy bit hacking to make it fit (by shrinking alignment)
without breaking existing users or the file format.
This change will require users to rebuild llvm-gcc to match llvm.
llvm-svn: 61239
2008-12-19 06:39:12 +00:00
Bill Wendling
d4a3c71eb1
Perform this loop only when the -debug flag is specified.
...
llvm-svn: 61238
2008-12-19 02:09:57 +00:00
Dan Gohman
3991753a76
Initialize the ImplicitDefed member, to avoid getting stale
...
data from a previous block.
llvm-svn: 61237
2008-12-19 00:46:20 +00:00
Dan Gohman
1e66a47f73
Fix RegScavenger::forward() to work on basic blocks containing exactly
...
one instruction.
llvm-svn: 61236
2008-12-19 00:45:13 +00:00
Dan Gohman
40ff87ab97
Delete the RegScavenging constructor that takes a MachineBasicBlock
...
argument. Nothing was using it, and it set the MBB member without
calling enterBasicBlock, which was problematic.
llvm-svn: 61234
2008-12-19 00:34:32 +00:00
Mon P Wang
4e9022582d
Fix test to account for generating some vector code for mul v2i64 instead
...
of incorrectly generating pmuldq
llvm-svn: 61228
2008-12-18 23:42:37 +00:00
Bill Wendling
4ca9e94f91
Didn't mean to commit this.
...
llvm-svn: 61222
2008-12-18 22:19:50 +00:00
Dan Gohman
42b2f38113
Teach LowerSubregs to preserve kill/dead information when lowering
...
subreg instructions.
llvm-svn: 61220
2008-12-18 22:14:08 +00:00
Bill Wendling
5ec9cb2217
Re-XFAIL this test until debug stuff settles down.
...
llvm-svn: 61219
2008-12-18 22:13:31 +00:00
Dan Gohman
ca2ab1f2c8
Make LowerSubregs' debug output for EXTRACT_SUBREG consistent with
...
that of INSERT_SUBREG and SUBREG_TO_REG.
llvm-svn: 61218
2008-12-18 22:11:34 +00:00
Dan Gohman
7000e62d3a
Fix a copy+pasto in an assertion message.
...
llvm-svn: 61217
2008-12-18 22:07:25 +00:00
Dan Gohman
34e47d552b
Fix indentation level.
...
llvm-svn: 61216
2008-12-18 22:06:01 +00:00
Dan Gohman
1c74326cea
When emitting instructions that define EFLAGS and the EFLAGS value isn't
...
used, mark the defs as dead.
llvm-svn: 61215
2008-12-18 22:03:42 +00:00
Dan Gohman
54790143b2
When setting up the frame pointer, add it as a live-in register to all
...
non-entry blocks, so that it doesn't appear use-before-def anywhere.
llvm-svn: 61214
2008-12-18 22:01:52 +00:00
Dan Gohman
47de8c174c
Print subreg information in MachineInstr::dump.
...
llvm-svn: 61213
2008-12-18 21:51:27 +00:00
Mon P Wang
9f8945c5b9
Fixed x86 code generation of multiple for v2i64. It was incorrect for SSE4.1.
...
llvm-svn: 61211
2008-12-18 21:42:19 +00:00