diff options
author | Tanya Lattner <tonic@nondot.org> | 2007-05-18 05:51:20 +0000 |
---|---|---|
committer | Tanya Lattner <tonic@nondot.org> | 2007-05-18 05:51:20 +0000 |
commit | 520f3c98ae9965185243e65357ac37196a91a904 (patch) | |
tree | e841c9b69211508eba802ff58c9b1d95efcc1d38 | |
parent | 08ad94f428c2e65a77e228b6737c7ef241e82e2e (diff) |
Merge inline asm fix from mainline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_20@37209 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | utils/TableGen/DAGISelEmitter.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index e10558ef72..51f9519f5f 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -3678,11 +3678,12 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { // Emit boilerplate. OS << "SDNode *Select_INLINEASM(SDOperand N) {\n" << " std::vector<SDOperand> Ops(N.Val->op_begin(), N.Val->op_end());\n" - << " AddToISelQueue(N.getOperand(0)); // Select the chain.\n\n" - << " // Select the flag operand.\n" - << " if (Ops.back().getValueType() == MVT::Flag)\n" - << " AddToISelQueue(Ops.back());\n" - << " SelectInlineAsmMemoryOperands(Ops, *CurDAG);\n" + << " SelectInlineAsmMemoryOperands(Ops, *CurDAG);\n\n" + + << " // Ensure that the asm operands are themselves selected.\n" + << " for (unsigned j = 0, e = Ops.size(); j != e; ++j)\n" + << " AddToISelQueue(Ops[j]);\n\n" + << " std::vector<MVT::ValueType> VTs;\n" << " VTs.push_back(MVT::Other);\n" << " VTs.push_back(MVT::Flag);\n" @@ -3718,6 +3719,7 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { << " case ISD::TargetConstant:\n" << " case ISD::TargetConstantPool:\n" << " case ISD::TargetFrameIndex:\n" + << " case ISD::TargetExternalSymbol:\n" << " case ISD::TargetJumpTable:\n" << " case ISD::TargetGlobalTLSAddress:\n" << " case ISD::TargetGlobalAddress: {\n" |