]> granicus.if.org Git - clang/commitdiff
Add support for __extension__ as an lvalue. rdar://6097308
authorChris Lattner <sabre@nondot.org>
Fri, 25 Jul 2008 18:07:19 +0000 (18:07 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 25 Jul 2008 18:07:19 +0000 (18:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54033 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/Expr.cpp
test/Sema/exprs.c

index 6c7d170d0365e8d887fc40245d96ba3c5af55861..7eab87ff79eb5b6cfe49ed0cf1c6dcd89570b1aa 100644 (file)
@@ -415,7 +415,8 @@ Expr::isLvalueResult Expr::isLvalue() const {
       return LV_Valid; // C99 6.5.3p4
 
     if (cast<UnaryOperator>(this)->getOpcode() == UnaryOperator::Real ||
-        cast<UnaryOperator>(this)->getOpcode() == UnaryOperator::Imag)
+        cast<UnaryOperator>(this)->getOpcode() == UnaryOperator::Imag ||
+        cast<UnaryOperator>(this)->getOpcode() == UnaryOperator::Extension)
       return cast<UnaryOperator>(this)->getSubExpr()->isLvalue();  // GNU.
     break;
   case ParenExprClass: // C99 6.5.1p5
index 01758772874ec2f402a80b786a7cfeda82bf9d06..fc506f7a2b34f3e3fcf36c0a76c9e71acfad6c63 100644 (file)
@@ -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;
+}
+