diff options
author | Chris Lattner <sabre@nondot.org> | 2005-01-21 19:46:38 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-01-21 19:46:38 +0000 |
commit | b62e1e296efc4235e3f3c4d5ea981b08a8301a7f (patch) | |
tree | 6b4aae55e53c5f3170f2690fde360dcf34cfee7d | |
parent | a93ec3ebfb2b6382c79e577cff4c05c204ed4544 (diff) |
Fix a FIXME: realize that argument stores are all independent (don't alias)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19728 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86ISelPattern.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/Target/X86/X86ISelPattern.cpp b/lib/Target/X86/X86ISelPattern.cpp index 2219291905..8f118f2f39 100644 --- a/lib/Target/X86/X86ISelPattern.cpp +++ b/lib/Target/X86/X86ISelPattern.cpp @@ -196,6 +196,8 @@ X86TargetLowering::LowerCallTo(SDOperand Chain, unsigned ArgOffset = 0; SDOperand StackPtr = DAG.getCopyFromReg(X86::ESP, MVT::i32, DAG.getEntryNode()); + std::vector<SDOperand> Stores; + for (unsigned i = 0, e = Args.size(); i != e; ++i) { unsigned ArgReg; SDOperand PtrOff = DAG.getConstant(ArgOffset, getPointerTy()); @@ -216,20 +218,19 @@ X86TargetLowering::LowerCallTo(SDOperand Chain, // FALL THROUGH case MVT::i32: case MVT::f32: - // FIXME: Note that all of these stores are independent of each other. - Chain = DAG.getNode(ISD::STORE, MVT::Other, Chain, - Args[i].first, PtrOff); + Stores.push_back(DAG.getNode(ISD::STORE, MVT::Other, Chain, + Args[i].first, PtrOff)); ArgOffset += 4; break; case MVT::i64: case MVT::f64: - // FIXME: Note that all of these stores are independent of each other. - Chain = DAG.getNode(ISD::STORE, MVT::Other, Chain, - Args[i].first, PtrOff); + Stores.push_back(DAG.getNode(ISD::STORE, MVT::Other, Chain, + Args[i].first, PtrOff)); ArgOffset += 8; break; } } + Chain = DAG.getNode(ISD::TokenFactor, MVT::Other, Stores); } std::vector<MVT::ValueType> RetVals; |