From baf0d6678418e0dd9309438c3e50274253cfc7b2 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 25 Jul 2008 18:07:19 +0000 Subject: [PATCH] Add support for __extension__ as an lvalue. rdar://6097308 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54033 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AST/Expr.cpp | 3 ++- test/Sema/exprs.c | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 6c7d170d03..7eab87ff79 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -415,7 +415,8 @@ Expr::isLvalueResult Expr::isLvalue() const { return LV_Valid; // C99 6.5.3p4 if (cast(this)->getOpcode() == UnaryOperator::Real || - cast(this)->getOpcode() == UnaryOperator::Imag) + cast(this)->getOpcode() == UnaryOperator::Imag || + cast(this)->getOpcode() == UnaryOperator::Extension) return cast(this)->getSubExpr()->isLvalue(); // GNU. break; case ParenExprClass: // C99 6.5.1p5 diff --git a/test/Sema/exprs.c b/test/Sema/exprs.c index 0175877287..fc506f7a2b 100644 --- a/test/Sema/exprs.c +++ b/test/Sema/exprs.c @@ -9,3 +9,9 @@ _Complex double test2() { return 1.0if; // expected-warning {{imaginary constants are an extension}} } +// rdar://6097308 +void test3() { + int x; + (__extension__ x) = 10; +} + -- 2.40.0