[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