Slightly change the meaning of the reMaterialize target hook when the original
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 2 Jun 2010 22:47:25 +0000 (22:47 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 2 Jun 2010 22:47:25 +0000 (22:47 +0000)
commit9edf7deb37f0f97664f279040fa15d89f32e23d9
treeff4ebced76552d3fb3baff8aeed89f3b8f6f8791
parent4839d872fca46ec83a76ed8db041b03df3616cfd
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105358 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
include/llvm/CodeGen/MachineInstr.h
include/llvm/Target/TargetInstrInfo.h
lib/CodeGen/MachineInstr.cpp
lib/CodeGen/PreAllocSplitting.cpp
lib/CodeGen/SimpleRegisterCoalescing.cpp
lib/CodeGen/TargetInstrInfoImpl.cpp
lib/CodeGen/TwoAddressInstructionPass.cpp
lib/CodeGen/VirtRegRewriter.cpp
lib/Target/ARM/ARMBaseInstrInfo.cpp
lib/Target/ARM/ARMBaseInstrInfo.h
lib/Target/ARM/ARMInstrInfo.cpp
lib/Target/ARM/ARMInstrInfo.h
lib/Target/X86/X86InstrInfo.cpp
lib/Target/X86/X86InstrInfo.h