[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