Evan Cheng
79d3b53208
Pre-regalloc tale duplication. Work in progress.
...
llvm-svn: 90759
2009-12-07 10:15:19 +00:00
Evan Cheng
2a99985e86
If BB is empty, insert PHI before end() instead of front().
...
llvm-svn: 90744
2009-12-07 03:07:01 +00:00
Anton Korobeynikov
b4b8c71b20
Truncate the arguments of llvm.frameaddress / llvm.returnaddress intrinsics from i32 to platform's largest native type
...
llvm-svn: 90741
2009-12-07 02:28:26 +00:00
Dan Gohman
e6ce676cb2
Remove old DBG_LABEL code.
...
llvm-svn: 90669
2009-12-05 17:56:26 +00:00
Dan Gohman
d2797bf9ae
Remove the unused DisableLegalizeTypes option and related code.
...
llvm-svn: 90668
2009-12-05 17:51:33 +00:00
Bill Wendling
887646a585
Temporarily revert r90502. It was causing the llvm-gcc bootstrap on PPC to fail.
...
llvm-svn: 90653
2009-12-05 07:30:23 +00:00
Dan Gohman
bdf1b76e0f
Don't print a space before the : between the file name and line number.
...
And separate the directory and file name with a '/'.
llvm-svn: 90641
2009-12-05 02:00:34 +00:00
Dan Gohman
b2fda9f9f4
Print newlines after printing labels for debug info, so that the output
...
isn't cluttered with things like "Llabel47:Llabel48: movq (%rsi), %xmm3"
llvm-svn: 90638
2009-12-05 01:42:34 +00:00
Dan Gohman
b352b42391
Don't blindly set the debug location for PHI node copies.
...
llvm-svn: 90637
2009-12-05 01:29:04 +00:00
Dan Gohman
c9454cd34f
Make TargetSelectInstruction protected and called from FastISel.cpp
...
instead of SelectionDAGISel.cpp.
llvm-svn: 90636
2009-12-05 01:27:58 +00:00
Dan Gohman
f9654e9258
Remove the target hook TargetInstrInfo::BlockHasNoFallThrough in favor of
...
MachineBasicBlock::canFallThrough(), which is target-independent and more
thorough.
llvm-svn: 90634
2009-12-05 00:44:40 +00:00
Dan Gohman
fc11083645
Simplify this code: don't call AnalyzeBranch before doing simpler checks.
...
llvm-svn: 90633
2009-12-05 00:32:59 +00:00
Dan Gohman
feeb2f07a1
The debug information for an LLVM Instruction applies to that Instruction
...
and that Instruction only. Implement this by setting the "current debug position"
back to Unknown after processing each instruction.
llvm-svn: 90632
2009-12-05 00:27:08 +00:00
Dan Gohman
cf29c2243b
Fix this code to use DIScope instead of DICompileUnit, as in r90181.
...
Don't print "SrcLine"; just print the filename and line number, which
is obvious enough and more informative.
llvm-svn: 90631
2009-12-05 00:23:29 +00:00
Dan Gohman
309e2283ab
Don't print the debug directory; it's often long and uninteresting. Omit
...
the column number if it is not known. Handle the case of a missing filename
better.
llvm-svn: 90630
2009-12-05 00:20:51 +00:00
Dan Gohman
e6b70ddf0c
Print a space between the comment character and the text.
...
llvm-svn: 90621
2009-12-04 23:19:55 +00:00
Devang Patel
10e8f51059
In TAG_subrange_type, uppder bound is zero indexed.
...
llvm-svn: 90617
2009-12-04 23:10:24 +00:00
David Greene
d75891618c
Use new interfaces to print spill size.
...
llvm-svn: 90611
2009-12-04 22:46:04 +00:00
Evan Cheng
d587159de8
Handle recursive PHI's.
...
llvm-svn: 90575
2009-12-04 19:09:10 +00:00
Evan Cheng
0b005cade5
Add a pre-regalloc tail duplication pass.
...
llvm-svn: 90567
2009-12-04 09:42:45 +00:00
Evan Cheng
30aa0aa350
Don't try to be cute with undef optimization here. Let ProcessImplicitDefs handle it.
...
llvm-svn: 90566
2009-12-04 09:23:37 +00:00
Duncan Sands
90101348bd
Add note about a subtle bug in this code. Does not effect the main
...
architectures that LLVM targets, because they don't use this code.
llvm-svn: 90564
2009-12-04 08:42:17 +00:00
Jakob Stoklund Olesen
7c5af26d12
Also attempt trivial coalescing for live intervals that end in a copy.
...
The coalescer is supposed to clean these up, but when setting up parameters
for a function call, there may be copies to physregs. If the defining
instruction has been LICM'ed far away, the coalescer won't touch it.
The register allocation hint does not always work - when the register
allocator is backtracking, it clears the hints.
This patch takes care of a few more cases that r90163 missed.
llvm-svn: 90502
2009-12-04 00:16:04 +00:00
Evan Cheng
0f151e89ab
- If the reaching definition is an undef and the use is a PHI, add the implicit_def to the end of the source block.
...
- When reaching value is replaced with another, update the cache as well.
llvm-svn: 90501
2009-12-04 00:09:05 +00:00
Devang Patel
2e60d7e71f
Insert composite type DIE into the map before processing type fields. This allows fields to find their context DIE from the map.
...
llvm-svn: 90498
2009-12-03 23:46:57 +00:00
Evan Cheng
73dcaa14fa
Handle undef values properly.
...
llvm-svn: 90489
2009-12-03 21:51:55 +00:00
Evan Cheng
d350df127e
Watch out for PHI instruction with no source operands.
...
llvm-svn: 90488
2009-12-03 21:50:58 +00:00
Duncan Sands
606510ae1b
Fix ExpandShiftWithUnknownAmountBit, which was completely bogus.
...
Pointed out by Javier Martinez (who also provided a patch). Since
this logic is not used on (for example) x86, I guess nobody noticed.
Tested by generating SHL, SRL, SRA on various choices of i64 for all
possible shift amounts, and comparing with gcc. Since I did this on
x86-32, I had to force the use of ExpandShiftWithUnknownAmountBit.
What I'm saying here is that I don't have a testcase I can add to the
repository.
llvm-svn: 90482
2009-12-03 21:37:32 +00:00
Jakob Stoklund Olesen
a78cbb2848
Clean up some loop logic.
...
llvm-svn: 90481
2009-12-03 20:49:10 +00:00
Devang Patel
fe7cf074f0
Add support to emit debug info for virtual functions and virtual base classes.
...
llvm-svn: 90474
2009-12-03 19:11:07 +00:00
Evan Cheng
d4f8c9fee2
Teach tail duplication to update SSA form. Work in progress.
...
llvm-svn: 90432
2009-12-03 08:43:53 +00:00
Nate Begeman
3a9c51f256
Don't pull vector sext through both hands of a logical operation, since doing so prevents the fusion of vector sext and setcc into vsetcc.
...
Add a testcase for the above transformation.
Fix a bogus use of APInt noticed while tracking this down.
llvm-svn: 90423
2009-12-03 07:11:29 +00:00
Jakob Stoklund Olesen
c4ee94503f
Don't call getValueType() on a null SDValue
...
llvm-svn: 90415
2009-12-03 05:15:35 +00:00
Evan Cheng
1c3edb4fa8
Fill out codegen SSA updater. It's not yet tested.
...
llvm-svn: 90395
2009-12-03 02:31:43 +00:00
Jakob Stoklund Olesen
6772f75d4d
Don't hang on to pointers or references after vector::push_back.
...
The MO reference to a MachineOperand can be invalidated by
MachineInstr::addOperand. Don't even use it for debugging.
llvm-svn: 90381
2009-12-03 01:49:56 +00:00
Devang Patel
45a72a7032
Emit method definition DIE at module level (even for methods with inlined functino body at soure level) so that the debugger can invoke it. This fixes many test failures in gdb test suite.
...
llvm-svn: 90375
2009-12-03 01:25:38 +00:00
Chris Lattner
9ce833945e
improve portability to avoid conflicting with std::next in c++'0x.
...
Patch by Howard Hinnant!
llvm-svn: 90365
2009-12-03 00:50:42 +00:00
Douglas Gregor
7416e5586f
Fix CMake makefiles
...
llvm-svn: 90354
2009-12-02 22:19:31 +00:00
Evan Cheng
e573096db2
Skeleton for MachineInstr level SSA updater.
...
llvm-svn: 90353
2009-12-02 22:02:52 +00:00
Jim Grosbach
230025f501
Add MaxStackAlignment.cpp to CMake
...
llvm-svn: 90337
2009-12-02 19:31:07 +00:00
Jim Grosbach
0e1230b23b
Factor the stack alignment calculations out into a target independent pass.
...
No functionality change.
llvm-svn: 90336
2009-12-02 19:30:24 +00:00
Bob Wilson
adb1889175
Don't count PHI instructions toward the limit for tail duplicating a block.
...
llvm-svn: 90326
2009-12-02 17:15:24 +00:00
Devang Patel
6f4a280987
Clarify that DIEString does not keep a copy of the string.
...
llvm-svn: 90318
2009-12-02 15:25:16 +00:00
Devang Patel
190698f233
Reuse existing subprogram DIE.
...
llvm-svn: 90281
2009-12-01 23:07:59 +00:00
Evan Cheng
0c687845b1
Fix PR5391: support early clobber physical register def tied with a use (ewwww)
...
- A valno should be set HasRedefByEC if there is an early clobber def in the middle of its live ranges. It should not be set if the def of the valno is defined by an early clobber.
- If a physical register def is tied to an use and it's an early clobber, it just means the HasRedefByEC is set since it's still one continuous live range.
- Add a couple of missing checks for HasRedefByEC in the coalescer. In general, it should not coalesce a vr with a physical register if the physical register has a early clobber def somewhere. This is overly conservative but that's the price for using such a nasty inline asm "feature".
llvm-svn: 90269
2009-12-01 22:25:00 +00:00
Dan Gohman
3f4d608e3c
Add edge source labels to SelectionDAG graphs, now that the graph printing
...
framework omits differentiated edge sources in the case where the labels
are empty strings.
llvm-svn: 90254
2009-12-01 19:20:00 +00:00
Dan Gohman
78e1e2806c
Minor cleanups.
...
llvm-svn: 90253
2009-12-01 19:16:15 +00:00
Dan Gohman
58675165bb
Trim an unnecessary #include.
...
llvm-svn: 90252
2009-12-01 19:13:27 +00:00
Devang Patel
45858cdfe6
Clear function specific containers while processing end of a function, even if DW_TAG_subprogram for current function is not found.
...
llvm-svn: 90247
2009-12-01 18:13:48 +00:00
Jakob Stoklund Olesen
2b50f038b1
Move PHIElimination::isLiveOut method to LiveVariables.
...
We want LiveVariables clients to use methods rather than accessing the
getVarInfo data structure directly. That way it will be possible to change the
LiveVariables representation.
llvm-svn: 90240
2009-12-01 17:13:31 +00:00