[llvm-commits] [llvm] r47337 - /llvm/trunk/lib/Target/CBackend/CBackend.cpp

Andrew Lenharth alenhar2 at cs.uiuc.edu
Tue Feb 19 11:47:54 PST 2008


Author: alenhar2
Date: Tue Feb 19 13:47:54 2008
New Revision: 47337

URL: http://llvm.org/viewvc/llvm-project?rev=47337&view=rev
Log:
fix some byval problems in the cbe.  Closes PR2065

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=47337&r1=47336&r2=47337&view=diff

==============================================================================
--- llvm/trunk/lib/Target/CBackend/CBackend.cpp (original)
+++ llvm/trunk/lib/Target/CBackend/CBackend.cpp Tue Feb 19 13:47:54 2008
@@ -1198,12 +1198,12 @@
 }
 
 void CWriter::writeOperand(Value *Operand) {
-  if (isa<GlobalVariable>(Operand) || isDirectAlloca(Operand))
+  if (isa<GlobalVariable>(Operand) || isDirectAlloca(Operand) || ByValParams.count(Operand))
     Out << "(&";  // Global variables are referenced as their addresses by llvm
 
   writeOperandInternal(Operand);
 
-  if (isa<GlobalVariable>(Operand) || isDirectAlloca(Operand))
+  if (isa<GlobalVariable>(Operand) || isDirectAlloca(Operand) || ByValParams.count(Operand))
     Out << ')';
 }
 
@@ -2723,13 +2723,11 @@
     // Check if the argument is expected to be passed by value.
     bool isOutByVal = PAL && PAL->paramHasAttr(ArgNo+1, ParamAttr::ByVal);
     // Check if this argument itself is passed in by reference. 
-    bool isInByVal = ByValParams.count(*AI);
-    if (isOutByVal && !isInByVal)
+    //bool isInByVal = ByValParams.count(*AI);
+    if (isOutByVal)
       Out << "*(";
-    else if (!isOutByVal && isInByVal)
-      Out << "&(";
     writeOperand(*AI);
-    if (isOutByVal ^ isInByVal)
+    if (isOutByVal)
       Out << ")";
     PrintedArg = true;
   }





More information about the llvm-commits mailing list