From: Chris Lattner Date: Fri, 21 Jan 2005 19:46:38 +0000 (+0000) Subject: Fix a FIXME: realize that argument stores are all independent (don't alias) X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b62e1e296efc4235e3f3c4d5ea981b08a8301a7f;p=oota-llvm.git 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 --- diff --git a/lib/Target/X86/X86ISelPattern.cpp b/lib/Target/X86/X86ISelPattern.cpp index 2219291905b..8f118f2f39b 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 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 RetVals;