summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/Expr.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-07-13 02:05:57 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-07-13 02:05:57 +0000
commit609ada27cedb299d684a3879ddd9f6ea9e6df521 (patch)
tree355652542820219219146fd0de8e887487835f7c /clang/lib/AST/Expr.cpp
parentca2c56f20b1027bf4d103bfd936218c1eb5266d5 (diff)
downloadbcm5719-llvm-609ada27cedb299d684a3879ddd9f6ea9e6df521.tar.gz
bcm5719-llvm-609ada27cedb299d684a3879ddd9f6ea9e6df521.zip
Silliness with commas, as reported at http://blog.regehr.org/archives/558 . As it turns out, this is my fault for not noticing this was an issue when I was looking at this a long time ago. :(
llvm-svn: 135026
Diffstat (limited to 'clang/lib/AST/Expr.cpp')
-rw-r--r--clang/lib/AST/Expr.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 5d8789fddab..4611ae36996 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -2529,10 +2529,14 @@ FieldDecl *Expr::getBitField() {
if (Field->isBitField())
return Field;
- if (BinaryOperator *BinOp = dyn_cast<BinaryOperator>(E))
+ if (BinaryOperator *BinOp = dyn_cast<BinaryOperator>(E)) {
if (BinOp->isAssignmentOp() && BinOp->getLHS())
return BinOp->getLHS()->getBitField();
+ if (BinOp->getOpcode() == BO_Comma && BinOp->getRHS())
+ return BinOp->getRHS()->getBitField();
+ }
+
return 0;
}
OpenPOWER on IntegriCloud