Dan Gohman
bf8e5204d1
Update these argument lists for the isNormalMemory
...
argument. This doesn't affect current functionality.
llvm-svn: 61779
2009-01-06 01:28:56 +00:00
Dan Gohman
79c3516912
Use a latency value of 0 for the artificial edges inserted by
...
AddPseudoTwoAddrDeps. This lets the scheduling infrastructure
avoid recalculating node heights. In very large testcases this
was a major bottleneck. Thanks to Roman Levenstein for finding
this!
As a side effect, fold-pcmpeqd-0.ll is now scheduled better
and it no longer requires spilling on x86-32.
llvm-svn: 61778
2009-01-06 01:19:04 +00:00
Devang Patel
244a649764
Construct subprogram DIEs using DebugInfo.
...
llvm-svn: 61772
2009-01-05 23:21:35 +00:00
Devang Patel
245a73ac16
Construct global variable DIEs using DebugInfo.
...
llvm-svn: 61771
2009-01-05 23:11:11 +00:00
Devang Patel
0479d7647f
Construct compile unit dies using DebugInfo.
...
llvm-svn: 61768
2009-01-05 23:03:32 +00:00
Bill Wendling
f9b5ba7bcb
Revert r61415 and r61484. Duncan was correct that these weren't needed.
...
llvm-svn: 61765
2009-01-05 22:53:45 +00:00
Dan Gohman
52d4d8244b
Don't call setDepthDirty/setHeightDirty when adding an edge
...
with latency 0, since it doesn't affect the depth or height.
llvm-svn: 61762
2009-01-05 22:40:26 +00:00
Devang Patel
ced6524437
Extract source location info from DebugInfo.
...
Add methods to add source location info in a DIE.
llvm-svn: 61761
2009-01-05 22:35:52 +00:00
Devang Patel
c0a190085d
Add type DIEs using DebugInfo.
...
llvm-svn: 61757
2009-01-05 21:47:57 +00:00
Devang Patel
1054a852b2
Construct composite type DIE using DebugInfo.
...
llvm-svn: 61741
2009-01-05 19:55:51 +00:00
Dan Gohman
dbc6c31f62
TargetLowering.h #includes SelectionDAGNodes.h, so it doesn't need its
...
own OpActionsCapacity magic number; it can just use ISD::BUILTIN_OP_END,
as long as it takes care to round up when needed.
llvm-svn: 61733
2009-01-05 19:40:39 +00:00
Devang Patel
2c2eeabb54
s/ConstructType/ConstructTypeDIE/g
...
llvm-svn: 61731
2009-01-05 19:07:53 +00:00
Devang Patel
5024d377f2
Construct stuct field DIEs.
...
llvm-svn: 61729
2009-01-05 18:59:44 +00:00
Devang Patel
c0adc6b9bc
Construct enumerator DIE using DebugInfo.
...
llvm-svn: 61726
2009-01-05 18:38:38 +00:00
Devang Patel
758e7d7781
Construct array/vector type DIEs using DebugInfo.
...
llvm-svn: 61724
2009-01-05 18:33:01 +00:00
Owen Anderson
96fce00dc0
Get rid of sentinel insertion in interval reconstruction. It just masked the
...
problem, rather than fixing it. The problem has now been fixed the right way.
llvm-svn: 61723
2009-01-05 18:32:26 +00:00
Dan Gohman
906152a20f
Tidy up #includes, deleting a bunch of unnecessary #includes.
...
llvm-svn: 61715
2009-01-05 17:59:02 +00:00
Devang Patel
1e03f7f19e
Construct basic and derived type DIEs using DebugInfo.
...
llvm-svn: 61714
2009-01-05 17:57:47 +00:00
Devang Patel
15deef2a3c
subsume ConstructPointerType()
...
llvm-svn: 61711
2009-01-05 17:45:59 +00:00
Devang Patel
ef2a94e8df
subsume ConstructBasicType().
...
llvm-svn: 61709
2009-01-05 17:44:11 +00:00
Devang Patel
56a8bb670f
squash warnings.
...
llvm-svn: 61707
2009-01-05 17:31:22 +00:00
Chris Lattner
8f561c9c97
elf writer really wants the size of the global, not the size
...
of the pointer to the global.
llvm-svn: 61630
2009-01-04 20:19:20 +00:00
Bill Wendling
ac79602005
The llvm::ELFWriter::EmitGlobal() method is calling the
...
llvm::PATypeHolder::get() method when LLVM is self-hosted in Release
mode. Before the parser changed, there was a definition of llvm::PAHolder::get()
in llvmAsmParser.y. This was probably a bug that no-one noticed.
Explicitly #include the Type.h file as a temporary fix for now.
llvm-svn: 61620
2009-01-04 01:47:14 +00:00
Dan Gohman
b9fa1d24f8
Fix a DAGCombiner abort on an invalid shift count constant. This fixes PR3250.
...
llvm-svn: 61613
2009-01-03 19:22:06 +00:00
Dan Gohman
4d41fdf4ca
CommuteNodesToReducePressure() is now removed.
...
llvm-svn: 61612
2009-01-03 19:19:30 +00:00
Dan Gohman
1be2e9650e
Remove the code from the scheduler that commuted two-address
...
instructions to avoid copies, because TwoAddressInstructionPass
also does this optimization. The scheduler's version didn't
account for live-out values, which resulted in spurious commutes
and missed opportunities.
Now, TwoAddressInstructionPass handles all the opportunities,
instead of just those that the scheduler missed. The result is
usually the same, though there are occasional trivial differences
resulting from the avoidance of spurious commutes.
llvm-svn: 61611
2009-01-03 18:01:46 +00:00
Duncan Sands
953c9c2fbc
Factorize (and generalize) the code promoting SELECT
...
and BRCOND conditions. Reorder a few methods while
there.
llvm-svn: 61547
2009-01-01 20:36:20 +00:00
Duncan Sands
19ee60848a
Remove trailing spaces.
...
llvm-svn: 61545
2009-01-01 19:56:02 +00:00
Duncan Sands
8feb694e8f
Fix PR3274: when promoting the condition of a BRCOND node,
...
promote from i1 all the way up to the canonical SetCC type.
In order to discover an appropriate type to use, pass
MVT::Other to getSetCCResultType. In order to be able to
do this, change getSetCCResultType to take a type as an
argument, not a value (this is also more logical).
llvm-svn: 61542
2009-01-01 15:52:00 +00:00
Owen Anderson
8b86b9ca47
Get live interval reconstruction several steps closer to working.
...
llvm-svn: 61514
2008-12-31 02:00:25 +00:00
Bill Wendling
03f2af79b8
Linux wants the FDE initial location and address range to be forced to 32-bit.
...
Darwin doesn't. Make this optional for platforms.
llvm-svn: 61484
2008-12-29 22:12:11 +00:00
Bill Wendling
b13c83ac18
The FDE initial location and address range data should be free to be 64-bit
...
(quad) on a 64-bit platform. This fixes a problem with EH frames on Darwin.
llvm-svn: 61483
2008-12-29 21:51:42 +00:00
Duncan Sands
43b18241ff
Add braces, as suggested by a gcc warning.
...
llvm-svn: 61465
2008-12-29 08:05:02 +00:00
Scott Michel
0c9259f149
Teach LeaglizeDAG that i64 mul can be a libcall.
...
llvm-svn: 61463
2008-12-29 03:21:37 +00:00
Owen Anderson
b5232286a7
Fix up kill/dead marking in the new live interval reconstruction code.
...
llvm-svn: 61460
2008-12-28 23:35:13 +00:00
Owen Anderson
37751bb9d9
Add prototype code for recomputing a live interval's ranges and valnos through recursive phi construction.
...
llvm-svn: 61458
2008-12-28 21:48:48 +00:00
Bill Wendling
d6bd7e9372
Darwin likes for the EH frame to be non-local.
...
llvm-svn: 61420
2008-12-24 08:05:17 +00:00
Bill Wendling
066b5f6724
GCC doesn't emit DW_EH_PE_sdata4 for the FDE encoding on Darwin. I'm not sure
...
about other platforms.
llvm-svn: 61415
2008-12-24 05:25:49 +00:00
Dale Johannesen
ee573fcefc
Change comments so everybody can understand them, hopefully.
...
llvm-svn: 61405
2008-12-23 23:47:22 +00:00
Dale Johannesen
acc84e5aa0
Add another permutation where we should get rid of a-a.
...
llvm-svn: 61401
2008-12-23 23:01:27 +00:00
Anton Korobeynikov
f4a66e8dda
Restore debug printing
...
llvm-svn: 61398
2008-12-23 22:26:18 +00:00
Anton Korobeynikov
d305d00796
Sometimes APInt syntax is really ugly... :(
...
llvm-svn: 61397
2008-12-23 22:26:01 +00:00
Anton Korobeynikov
05149bad18
Indent stuff properly
...
llvm-svn: 61396
2008-12-23 22:25:45 +00:00
Anton Korobeynikov
6f219132a7
Initial checkin of APInt'ififcation of switch lowering
...
llvm-svn: 61395
2008-12-23 22:25:27 +00:00
Devang Patel
70bd60d1d4
Fix typo.
...
Silence unused variable warning.
llvm-svn: 61391
2008-12-23 21:55:38 +00:00
Devang Patel
323dbe57a6
Silience unused warnings.
...
llvm-svn: 61390
2008-12-23 21:55:04 +00:00
Dan Gohman
12f2490489
Clean up the atomic opcodes in SelectionDAG.
...
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
2008-12-23 21:37:04 +00:00
Dan Gohman
04543e719e
Rename BuildSchedUnits to BuildSchedGraph, and refactor the
...
code in ScheduleDAGSDNodes' BuildSchedGraph into separate functions.
llvm-svn: 61376
2008-12-23 18:36:58 +00:00
Dan Gohman
072e52f170
Use isTerminator() instead of isBranch()||isReturn() in
...
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
2008-12-23 17:28:50 +00:00
Dan Gohman
92cf280dfb
Avoid an unnecessary call to allnodes_size(), which is linear.
...
llvm-svn: 61372
2008-12-23 17:24:50 +00:00