[llvm-commits] [llvm] r47472 - /llvm/trunk/lib/VMCore/AsmWriter.cpp
Devang Patel
dpatel at apple.com
Thu Feb 21 18:50:50 PST 2008
Author: dpatel
Date: Thu Feb 21 20:50:49 2008
New Revision: 47472
URL: http://llvm.org/viewvc/llvm-project?rev=47472&view=rev
Log:
Print ret instruction that returns aggregates.
Modified:
llvm/trunk/lib/VMCore/AsmWriter.cpp
Modified: llvm/trunk/lib/VMCore/AsmWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AsmWriter.cpp?rev=47472&r1=47471&r2=47472&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/AsmWriter.cpp (original)
+++ llvm/trunk/lib/VMCore/AsmWriter.cpp Thu Feb 21 20:50:49 2008
@@ -1291,8 +1291,23 @@
writeOperand(I.getOperand(op ), false); Out << ',';
writeOperand(I.getOperand(op+1), false); Out << " ]";
}
- } else if (isa<ReturnInst>(I) && !Operand) {
- Out << " void";
+ } else if (isa<ReturnInst>(I)) {
+ if (!Operand)
+ Out << " void";
+ else {
+ if (I.getOperand(0)->getType()->isFirstClassType())
+ writeOperand(I.getOperand(0), true);
+ else {
+ Constant *ROp = cast<Constant>(I.getOperand(0));
+ const StructType *STy = cast<StructType>(ROp->getType());
+ unsigned NumElems = STy->getNumElements();
+ for (unsigned i = 0; i < NumElems; ++i) {
+ if (i)
+ Out << ",";
+ writeOperand(ROp->getOperand(i), true);
+ }
+ }
+ }
} else if (const CallInst *CI = dyn_cast<CallInst>(&I)) {
// Print the calling convention being used.
switch (CI->getCallingConv()) {
More information about the llvm-commits
mailing list