[cfe-commits] r93076 - in /cfe/trunk: lib/CodeGen/CGExpr.cpp test/CodeGenCXX/expr.cpp

Chris Lattner sabre at nondot.org
Sat Jan 9 13:44:40 PST 2010


Author: lattner
Date: Sat Jan  9 15:44:40 2010
New Revision: 93076

URL: http://llvm.org/viewvc/llvm-project?rev=93076&view=rev
Log:
implement codegen support for preinc as an lvalue, PR5514.

Modified:
    cfe/trunk/lib/CodeGen/CGExpr.cpp
    cfe/trunk/test/CodeGenCXX/expr.cpp

Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=93076&r1=93075&r2=93076&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp Sat Jan  9 15:44:40 2010
@@ -1120,8 +1120,16 @@
                             MakeQualifiers(ExprTy));
   }
   case UnaryOperator::PreInc:
-  case UnaryOperator::PreDec:
-    return EmitUnsupportedLValue(E, "pre-inc/dec expression");
+  case UnaryOperator::PreDec: {
+    LValue LV = EmitLValue(E->getSubExpr());
+    bool isInc = E->getOpcode() == UnaryOperator::PreInc;
+    
+    if (E->getType()->isAnyComplexType())
+      EmitComplexPrePostIncDec(E, LV, isInc, true/*isPre*/);
+    else
+      EmitScalarPrePostIncDec(E, LV, isInc, true/*isPre*/);
+    return LV;
+  }
   }
 }
 

Modified: cfe/trunk/test/CodeGenCXX/expr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/expr.cpp?rev=93076&r1=93075&r2=93076&view=diff

==============================================================================
--- cfe/trunk/test/CodeGenCXX/expr.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/expr.cpp Sat Jan  9 15:44:40 2010
@@ -10,3 +10,7 @@
   char *xpto;
   while ( true && xpto[0] );
 }
+
+// PR5514
+int a;
+void test2() { ++a+=10; }





More information about the cfe-commits mailing list