Fix pr3954. The register scavenger asserts for inline assembly with
authorBob Wilson <bob.wilson@apple.com>
Thu, 9 Apr 2009 17:16:43 +0000 (17:16 +0000)
committerBob Wilson <bob.wilson@apple.com>
Thu, 9 Apr 2009 17:16:43 +0000 (17:16 +0000)
commitd9df5017040489303acb57bdd8697ef0f8bafc08
tree894d9bc70b3f7019ebfc3c0950f9133059a50638
parent37831d0a1202ab105b495762cb6cce7b6eb2438c
Fix pr3954.  The register scavenger asserts for inline assembly with
register destinations that are tied to source operands.  The
TargetInstrDescr::findTiedToSrcOperand method silently fails for inline
assembly.  The existing MachineInstr::isRegReDefinedByTwoAddr was very
close to doing what is needed, so this revision makes a few changes to
that method and also renames it to isRegTiedToUseOperand (for consistency
with the very similar isRegTiedToDefOperand and because it handles both
two-address instructions and inline assembly with tied registers).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68714 91177308-0d34-0410-b5e6-96231b3b80d8
12 files changed:
include/llvm/CodeGen/MachineInstr.h
include/llvm/Target/TargetInstrDesc.h
lib/CodeGen/LiveIntervalAnalysis.cpp
lib/CodeGen/MachineInstr.cpp
lib/CodeGen/PostRASchedulerList.cpp
lib/CodeGen/PreAllocSplitting.cpp
lib/CodeGen/RegAllocLocal.cpp
lib/CodeGen/RegAllocSimple.cpp
lib/CodeGen/RegisterScavenging.cpp
lib/CodeGen/Spiller.cpp
lib/Target/TargetInstrInfo.cpp
test/CodeGen/ARM/2009-04-09-RegScavengerAsm.ll [new file with mode: 0644]