[cfe-commits] r64371 - in /cfe/trunk: lib/AST/Expr.cpp test/Sema/varargs.c
Daniel Dunbar
daniel at zuster.org
Thu Feb 12 01:21:08 PST 2009
Author: ddunbar
Date: Thu Feb 12 03:21:08 2009
New Revision: 64371
URL: http://llvm.org/viewvc/llvm-project?rev=64371&view=rev
Log:
Fix va_arg bug noticed by Eli, __builtin_va_arg is not an l-value
designating an object.
Modified:
cfe/trunk/lib/AST/Expr.cpp
cfe/trunk/test/Sema/varargs.c
Modified: cfe/trunk/lib/AST/Expr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=64371&r1=64370&r2=64371&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Expr.cpp (original)
+++ cfe/trunk/lib/AST/Expr.cpp Thu Feb 12 03:21:08 2009
@@ -565,7 +565,7 @@
case PredefinedExprClass:
return LV_Valid;
case VAArgExprClass:
- return LV_Valid;
+ return LV_NotObjectType;
case CXXDefaultArgExprClass:
return cast<CXXDefaultArgExpr>(this)->getExpr()->isLvalue(Ctx);
case CXXConditionDeclExprClass:
Modified: cfe/trunk/test/Sema/varargs.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/varargs.c?rev=64371&r1=64370&r2=64371&view=diff
==============================================================================
--- cfe/trunk/test/Sema/varargs.c (original)
+++ cfe/trunk/test/Sema/varargs.c Thu Feb 12 03:21:08 2009
@@ -52,3 +52,11 @@
__builtin_va_end (authors);
}
+void f7(int a, ...) {
+ __builtin_va_list ap;
+ __builtin_va_start(ap, a);
+ // FIXME: This error message is sub-par.
+ __builtin_va_arg(ap, int) = 1; // expected-error {{non-object type 'int' is not assignable}}
+ int *x = &__builtin_va_arg(ap, int); // expected-error {{address expression must be an lvalue or a function designator}}
+ __builtin_va_end(ap);
+}
More information about the cfe-commits
mailing list