summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorAndrew Lenharth <andrewl@lenharth.org>2005-06-22 21:04:42 +0000
committerAndrew Lenharth <andrewl@lenharth.org>2005-06-22 21:04:42 +0000
commit253145299b3f165522ed2a85a837ed22c38825c6 (patch)
treee235960070b7041774c81f488f21da10da033e22 /llvm/lib/CodeGen
parent5305ea5c86345414a14db97d9dfc8775dfc80e1f (diff)
downloadbcm5719-llvm-253145299b3f165522ed2a85a837ed22c38825c6.tar.gz
bcm5719-llvm-253145299b3f165522ed2a85a837ed22c38825c6.zip
If we support structs as va_list, we must pass pointers to them to va_copy
See last commit for LangRef, this implements it on all targets. llvm-svn: 22273
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index 0c94ea74cd9..fa6d6d4d14c 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -855,10 +855,11 @@ SDOperand TargetLowering::LowerVAEnd(SDOperand Chain, SDOperand L,
std::pair<SDOperand,SDOperand>
TargetLowering::LowerVACopy(SDOperand Chain, SDOperand Src, SDOperand Dest,
SelectionDAG &DAG) {
- // We have no sane default behavior, just emit a useful error message and bail
- // out.
- std::cerr << "Variable arguments handling not implemented on this target!\n";
- abort();
+ //Default to returning the input list
+ SDOperand Val = DAG.getLoad(getPointerTy(), Chain, Src, DAG.getSrcValue(NULL));
+ SDOperand Result = DAG.getNode(ISD::STORE, MVT::Other, Val.getValue(1),
+ Val, Dest, DAG.getSrcValue(NULL));
+ return std::make_pair(Result, Result);
}
std::pair<SDOperand,SDOperand>
OpenPOWER on IntegriCloud