Devang Patel
97863f513c
Add DebugInfo based APIs to record source line info.
...
llvm-svn: 61928
2009-01-08 17:19:22 +00:00
Misha Brukman
ae1566f744
* Moved author attribution to CREDITS.TXT
...
* Removed trailing whitespace
llvm-svn: 61927
2009-01-08 16:40:25 +00:00
Misha Brukman
cada42bb4e
* Alphabetized #includes
...
* Removed trailing whitespace
llvm-svn: 61926
2009-01-08 15:50:22 +00:00
Devang Patel
3125e21ae4
Add APIs to record regions and variables.
...
Again, shamelessly copied from MMI.
llvm-svn: 61912
2009-01-08 02:49:34 +00:00
Devang Patel
0db006ea38
Add APIs to manage scope using DebugInfo interface.
...
This is a shameless copy of similar APIs from MachineModuleInfo. The copy from MMI will be deleted in near future.
llvm-svn: 61908
2009-01-08 02:33:41 +00:00
Dan Gohman
3579548f68
Remove redundant 'else's. No functionality change.
...
llvm-svn: 61891
2009-01-07 22:30:55 +00:00
Evan Cheng
a70ecc2f51
The coalescer does not coalesce a virtual register to a physical register if any of the physical register's sub-register live intervals overlaps with the virtual register. This is overly conservative. It prevents a extract_subreg from being coalesced away:
...
v1024 = EDI // not killed
=
= EDI
One possible solution is for the coalescer to examine the sub-register live intervals in the same manner as the physical register. Another possibility is to examine defs and uses (when needed) of sub-registers. Both solutions are too expensive. For now, look for "short virtual intervals" and scan instructions to look for conflict instead.
This is a small win on x86-64. e.g. It shaves 403.gcc by ~80 instructions.
llvm-svn: 61847
2009-01-07 02:08:57 +00:00
Dan Gohman
b19f5073f9
Fix a bug in ComputeLinearIndex computation handling multi-level
...
aggregate types. Don't increment the current index after reaching
the end of a struct, as it will already be pointing at
one-past-the end. This fixes PR3288.
llvm-svn: 61828
2009-01-06 22:53:52 +00:00
Devang Patel
6c23870973
Set up DwarfDebug using DebugInfo API.
...
llvm-svn: 61822
2009-01-06 21:07:30 +00:00
Bill Wendling
0a611529e5
Forgot that this was needed for Linux. This should fix the builds.
...
llvm-svn: 61819
2009-01-06 19:13:55 +00:00
Owen Anderson
1f1e4ab65a
The phi construction algorithm used for interval reconstruction is complicated by
...
two address instructions. We need to keep track of things we've processed AS USES
independetly of whether we've processed them as defs.
This fixes all known miscompilations when reconstruction is turned on.
llvm-svn: 61802
2009-01-06 07:53:32 +00:00
Dan Gohman
595c38acb0
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
1cdb677fc8
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
b06184d4a2
Construct subprogram DIEs using DebugInfo.
...
llvm-svn: 61772
2009-01-05 23:21:35 +00:00
Devang Patel
9f27e8354b
Construct global variable DIEs using DebugInfo.
...
llvm-svn: 61771
2009-01-05 23:11:11 +00:00
Devang Patel
7d98385702
Construct compile unit dies using DebugInfo.
...
llvm-svn: 61768
2009-01-05 23:03:32 +00:00
Bill Wendling
891f9abdbb
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
f6ab374c28
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
dc395b96fb
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
b54d136d11
Add type DIEs using DebugInfo.
...
llvm-svn: 61757
2009-01-05 21:47:57 +00:00
Devang Patel
94ba049403
Construct composite type DIE using DebugInfo.
...
llvm-svn: 61741
2009-01-05 19:55:51 +00:00
Dan Gohman
9938898e44
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
beb5774035
s/ConstructType/ConstructTypeDIE/g
...
llvm-svn: 61731
2009-01-05 19:07:53 +00:00
Devang Patel
c1998b026f
Construct stuct field DIEs.
...
llvm-svn: 61729
2009-01-05 18:59:44 +00:00
Devang Patel
de65ed6370
Construct enumerator DIE using DebugInfo.
...
llvm-svn: 61726
2009-01-05 18:38:38 +00:00
Devang Patel
c4c51439bf
Construct array/vector type DIEs using DebugInfo.
...
llvm-svn: 61724
2009-01-05 18:33:01 +00:00
Owen Anderson
28649f1598
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
8271066844
Tidy up #includes, deleting a bunch of unnecessary #includes.
...
llvm-svn: 61715
2009-01-05 17:59:02 +00:00
Devang Patel
38d7f4dc2c
Construct basic and derived type DIEs using DebugInfo.
...
llvm-svn: 61714
2009-01-05 17:57:47 +00:00
Devang Patel
bf19721647
subsume ConstructPointerType()
...
llvm-svn: 61711
2009-01-05 17:45:59 +00:00
Devang Patel
24288bc651
subsume ConstructBasicType().
...
llvm-svn: 61709
2009-01-05 17:44:11 +00:00
Devang Patel
689e130117
squash warnings.
...
llvm-svn: 61707
2009-01-05 17:31:22 +00:00
Chris Lattner
30de396459
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
61bdc3d99e
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
2a079de3f5
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
8dc1513b6c
CommuteNodesToReducePressure() is now removed.
...
llvm-svn: 61612
2009-01-03 19:19:30 +00:00
Dan Gohman
6a518de5f5
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
0fca32114b
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
07002edaca
Remove trailing spaces.
...
llvm-svn: 61545
2009-01-01 19:56:02 +00:00
Duncan Sands
190d6bc636
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
ccde9db05a
Get live interval reconstruction several steps closer to working.
...
llvm-svn: 61514
2008-12-31 02:00:25 +00:00
Bill Wendling
067c48f7a6
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
4749654506
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
ef77539014
Add braces, as suggested by a gcc warning.
...
llvm-svn: 61465
2008-12-29 08:05:02 +00:00
Scott Michel
5bb7db3872
Teach LeaglizeDAG that i64 mul can be a libcall.
...
llvm-svn: 61463
2008-12-29 03:21:37 +00:00
Owen Anderson
e5b1fb3c25
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
e21f8339f8
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
044248aad1
Darwin likes for the EH frame to be non-local.
...
llvm-svn: 61420
2008-12-24 08:05:17 +00:00
Bill Wendling
6add893a14
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
88e47fa0e4
Change comments so everybody can understand them, hopefully.
...
llvm-svn: 61405
2008-12-23 23:47:22 +00:00