[llvm-commits] [llvm] r50187 - /llvm/trunk/lib/Target/CBackend/CBackend.cpp
Dan Gohman
gohman at apple.com
Wed Apr 23 14:49:30 PDT 2008
Author: djg
Date: Wed Apr 23 16:49:29 2008
New Revision: 50187
URL: http://llvm.org/viewvc/llvm-project?rev=50187&view=rev
Log:
Initial CBE support for multiple return values.
Modified:
llvm/trunk/lib/Target/CBackend/CBackend.cpp
Modified: llvm/trunk/lib/Target/CBackend/CBackend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CBackend/CBackend.cpp?rev=50187&r1=50186&r2=50187&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CBackend/CBackend.cpp (original)
+++ llvm/trunk/lib/Target/CBackend/CBackend.cpp Wed Apr 23 16:49:29 2008
@@ -283,6 +283,7 @@
void visitInsertElementInst(InsertElementInst &I);
void visitExtractElementInst(ExtractElementInst &I);
void visitShuffleVectorInst(ShuffleVectorInst &SVI);
+ void visitGetResultInst(GetResultInst &GRI);
void visitInstruction(Instruction &I) {
cerr << "C Writer does not know about " << I;
@@ -2174,6 +2175,24 @@
return;
}
+ if (I.getNumOperands() > 1) {
+ Out << " {\n";
+ Out << " ";
+ printType(Out, I.getParent()->getParent()->getReturnType());
+ Out << " llvm_cbe_mrv_temp = {\n";
+ for (unsigned i = 0, e = I.getNumOperands(); i != e; ++i) {
+ Out << " ";
+ writeOperand(I.getOperand(i));
+ if (i != e - 1)
+ Out << ",";
+ Out << "\n";
+ }
+ Out << " };\n";
+ Out << " return llvm_cbe_mrv_temp;\n";
+ Out << " }\n";
+ return;
+ }
+
Out << " return";
if (I.getNumOperands()) {
Out << ' ';
@@ -3184,6 +3203,17 @@
Out << "}";
}
+void CWriter::visitGetResultInst(GetResultInst &GRI) {
+ Out << "(";
+ if (isa<UndefValue>(GRI.getOperand(0))) {
+ Out << "(";
+ printType(Out, GRI.getType());
+ Out << ") 0/*UNDEF*/";
+ } else {
+ Out << GetValueName(GRI.getOperand(0)) << ".field" << GRI.getIndex();
+ }
+ Out << ")";
+}
//===----------------------------------------------------------------------===//
// External Interface declaration
More information about the llvm-commits
mailing list