[cfe-commits] r74830 - in /cfe/trunk: lib/AST/Expr.cpp test/Sema/bitfield-promote.c

Douglas Gregor dgregor at apple.com
Mon Jul 6 08:38:41 PDT 2009


Author: dgregor
Date: Mon Jul  6 10:38:40 2009
New Revision: 74830

URL: http://llvm.org/viewvc/llvm-project?rev=74830&view=rev
Log:
Fix bitfield promotion in the presence of explicit casts, from Abrama Bagnara.

Added:
    cfe/trunk/test/Sema/bitfield-promote.c
Modified:
    cfe/trunk/lib/AST/Expr.cpp

Modified: cfe/trunk/lib/AST/Expr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=74830&r1=74829&r2=74830&view=diff

==============================================================================
--- cfe/trunk/lib/AST/Expr.cpp (original)
+++ cfe/trunk/lib/AST/Expr.cpp Mon Jul  6 10:38:40 2009
@@ -1458,7 +1458,7 @@
 }
 
 FieldDecl *Expr::getBitField() {
-  Expr *E = this->IgnoreParenCasts();
+  Expr *E = this->IgnoreParens();
 
   if (MemberExpr *MemRef = dyn_cast<MemberExpr>(E))
     if (FieldDecl *Field = dyn_cast<FieldDecl>(MemRef->getMemberDecl()))

Added: cfe/trunk/test/Sema/bitfield-promote.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/bitfield-promote.c?rev=74830&view=auto

==============================================================================
--- cfe/trunk/test/Sema/bitfield-promote.c (added)
+++ cfe/trunk/test/Sema/bitfield-promote.c Mon Jul  6 10:38:40 2009
@@ -0,0 +1,10 @@
+// RUN: clang -fsyntax-only -Xclang -verify %s
+struct {unsigned x : 2;} x;
+__typeof__((x.x+=1)+1) y;
+__typeof__(x.x<<1) y;
+int y;
+
+
+struct { int x : 8; } x1;
+long long y1;
+__typeof__(((long long)x1.x + 1)) y1;
\ No newline at end of file





More information about the cfe-commits mailing list