#
86936504 |
| 18-Jun-2010 |
Dan Gohman <gohman@apple.com> |
Teach regular and fast isel to set dead flags on unused implicit defs on calls and similar instructions.
llvm-svn: 106353
|
#
a8ad9774 |
| 02-Jun-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Slightly change the meaning of the reMaterialize target hook when the original instruction defines subregisters.
Any existing subreg indices on the original instruction are preserved or composed wit
Slightly change the meaning of the reMaterialize target hook when the original instruction defines subregisters.
Any existing subreg indices on the original instruction are preserved or composed with the new subreg index.
Also substitute multiple operands mentioning the original register by using the new MachineInstr::substituteRegister() function. This is necessary because there will soon be <imp-def> operands added to non read-modify-write partial definitions. This instruction:
%reg1234:foo = FLAP %reg1234<imp-def>
will reMaterialize(%reg3333, bar) like this:
%reg3333:bar-foo = FLAP %reg333:bar<imp-def>
Finally, replace the TargetRegisterInfo pointer argument with a reference to indicate that it cannot be NULL.
llvm-svn: 105358
show more ...
|
#
7b0ac865 |
| 01-Jun-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Properly compose subregister indices when coalescing. The comment about ordering of subreg indices is no longer true. This exposed a bug in the new substVirtReg method that is also fixed.
llvm-svn:
Properly compose subregister indices when coalescing. The comment about ordering of subreg indices is no longer true. This exposed a bug in the new substVirtReg method that is also fixed.
llvm-svn: 105294
show more ...
|
#
64824ea9 |
| 28-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add a TargetRegisterInfo::composeSubRegIndices hook with a default implementation that is correct for most targets. Tablegen will override where needed.
Add MachineOperand::subst{Virt,Phys}Reg metho
Add a TargetRegisterInfo::composeSubRegIndices hook with a default implementation that is correct for most targets. Tablegen will override where needed.
Add MachineOperand::subst{Virt,Phys}Reg methods that correctly handle existing subreg indices when sustituting registers.
llvm-svn: 104985
show more ...
|
#
1ad0d5e2 |
| 25-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Print symbolic SubRegIndex names on machine operands.
llvm-svn: 104628
|
#
3858451e |
| 21-May-2010 |
Evan Cheng <evan.cheng@apple.com> |
- Change MachineInstr::findRegisterDefOperandIdx so it can also look for defs that are aliases of the specified register. - Rename modifiesRegister to definesRegister since it's looking a def of the
- Change MachineInstr::findRegisterDefOperandIdx so it can also look for defs that are aliases of the specified register. - Rename modifiesRegister to definesRegister since it's looking a def of the specific register or one of its super-registers. It's not looking for def of a sub-register or alias that could change the specified register. - Added modifiesRegister to look for defs of aliases.
llvm-svn: 104377
show more ...
|
#
7d7f6043 |
| 21-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add MachineInstr::readsWritesVirtualRegister() to determine if an instruction reads or writes a register.
This takes partial redefines and undef uses into account.
Don't actually use it yet. That c
Add MachineInstr::readsWritesVirtualRegister() to determine if an instruction reads or writes a register.
This takes partial redefines and undef uses into account.
Don't actually use it yet. That caused miscompiles.
llvm-svn: 104372
show more ...
|
#
b4e16872 |
| 21-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert "Use MachineInstr::readsWritesVirtualRegister to determine if a register is read."
This reverts r104322. I think it was causing miscompilations.
llvm-svn: 104323
|
#
8e8e0903 |
| 21-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Use MachineInstr::readsWritesVirtualRegister to determine if a register is read. This correctly handles partial redefines and undef uses.
llvm-svn: 104322
|
#
1f380106 |
| 21-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
If the first definition of a virtual register is a partial redef, add an <imp-def> operand for the full register. This ensures that the full physical register is marked live after register allocation
If the first definition of a virtual register is a partial redef, add an <imp-def> operand for the full register. This ensures that the full physical register is marked live after register allocation.
llvm-svn: 104320
show more ...
|
#
5d4c134a |
| 19-May-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add MachineInstr::readsVirtualRegister() in preparation for proper handling of partial redefines.
We are going to treat a partial redefine of a virtual register as a read-modify-write:
%reg1024:6
Add MachineInstr::readsVirtualRegister() in preparation for proper handling of partial redefines.
We are going to treat a partial redefine of a virtual register as a read-modify-write:
%reg1024:6 = OP
Unless the register is fully clobbered:
%reg1024:6 = OP, %reg1024<imp-def>
MachineInstr::readsVirtualRegister() knows the difference. The first case is a read, the second isn't.
llvm-svn: 104149
show more ...
|
#
c90f51c0 |
| 13-May-2010 |
Dan Gohman <gohman@apple.com> |
Teach MachineLICM and MachineSink how to clear kill flags conservatively when they move instructions.
llvm-svn: 103737
|
#
d4d1a518 |
| 28-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
Pretty print DBG_VALUE machine instructions. Before: DBG_VALUE %RSI, 0, !-1; dbg:SimpleRegisterCoalescing.cpp:2707 Now: DBG_VALUE %RSI, 0, !"this"; dbg:SimpleRegisterCoalescing.cpp:2707
llvm-svn: 10
Pretty print DBG_VALUE machine instructions. Before: DBG_VALUE %RSI, 0, !-1; dbg:SimpleRegisterCoalescing.cpp:2707 Now: DBG_VALUE %RSI, 0, !"this"; dbg:SimpleRegisterCoalescing.cpp:2707
llvm-svn: 102518
show more ...
|
Revision tags: llvmorg-2.7.0 |
|
#
d8eeb121 |
| 09-Apr-2010 |
Bob Wilson <bob.wilson@apple.com> |
Use getNumImplicitDefs() and getNumImplicitUses().
llvm-svn: 100850
|
#
406f2701 |
| 09-Apr-2010 |
Bob Wilson <bob.wilson@apple.com> |
Fix up some comments.
llvm-svn: 100849
|
#
b083c47c |
| 08-Apr-2010 |
Evan Cheng <evan.cheng@apple.com> |
Coalescer should not delete copy instructions whose defs are partially dead. e.g. %RDI<def,dead> = MOV64rr %RAX<kill>, %EDI<imp-def>
llvm-svn: 100804
|
#
f839ee0c |
| 07-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
fix a latent bug my inline asm stuff exposed: MachineOperand::isIdenticalTo wasn't handling metadata operands.
llvm-svn: 100636
|
#
bd009d6d |
| 02-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
stop using DebugLoc::getUnknownLoc()
llvm-svn: 100215
|
#
915c5f98 |
| 02-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
Switch the code generator (except the JIT) onto the new DebugLoc representation. This eliminates the 'DILocation' MDNodes for file/line/col tuples from -O0 -g codegen.
This remove the old DebugLoc
Switch the code generator (except the JIT) onto the new DebugLoc representation. This eliminates the 'DILocation' MDNodes for file/line/col tuples from -O0 -g codegen.
This remove the old DebugLoc class, making it a typedef for DebugLoc, I'll rename NewDebugLoc next.
I didn't update the JIT to use the new apis, so it will continue to work, but be as slow as before. Someone should eventually do this or, better yet, rip out the JIT debug info stuff and build the JIT on top of MC.
llvm-svn: 100209
show more ...
|
#
6c604e3f |
| 13-Mar-2010 |
Chris Lattner <sabre@nondot.org> |
add support for MCSymbols as operands to MachineInstrs.
llvm-svn: 98433
|
#
3b548aa8 |
| 08-Mar-2010 |
Devang Patel <dpatel@apple.com> |
Avoid using DIDescriptor.isNull(). This is a first step towards eliminating checks in Descriptor constructors.
llvm-svn: 97975
|
#
bc97f6b7 |
| 08-Mar-2010 |
Devang Patel <dpatel@apple.com> |
Revert r97947.
llvm-svn: 97963
|
#
fe28599f |
| 08-Mar-2010 |
Devang Patel <dpatel@apple.com> |
Avoid using DIDescriptor.isNull(). This is a first step towards eliminating unncessary constructor checks in light weight DIDescriptor wrappers.
llvm-svn: 97947
|
#
59d27fe5 |
| 03-Mar-2010 |
Evan Cheng <evan.cheng@apple.com> |
Move MachineInstrExpressionTrait::getHashValue() out of line so it can skip over only virtual register defs. This matches what isEqual() is doing.
llvm-svn: 97680
|
#
0f260e17 |
| 03-Mar-2010 |
Evan Cheng <evan.cheng@apple.com> |
Fix funky indentation and add comments.
llvm-svn: 97670
|