- // We have no sane default behavior, just emit a useful error message and bail
- // out.
- std::cerr << "Variable arguments support not implemented for this target!\n";
- abort();
+ std::pair<SDOperand,SDOperand> Result =
+ TLI.LowerVAArgNext(false, DAG.getRoot(), getValue(I.getOperand(0)),
+ I.getType(), DAG);
+ setValue(&I, Result.first);
+ DAG.setRoot(Result.second);
+}
+
+void SelectionDAGLowering::visitVANext(VANextInst &I) {
+ std::pair<SDOperand,SDOperand> Result =
+ TLI.LowerVAArgNext(true, DAG.getRoot(), getValue(I.getOperand(0)),
+ I.getArgType(), DAG);
+ setValue(&I, Result.first);
+ DAG.setRoot(Result.second);