diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-07-13 02:05:57 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-07-13 02:05:57 +0000 |
commit | 42068e9d420889014ee26894e421fead336b239d (patch) | |
tree | 546b197000f077a0ec876cac0024a6e6607837c1 /lib/AST/Expr.cpp | |
parent | 7cfd76cb5cec2aa7aaa4176339c806de6ec85a79 (diff) |
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. :(
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135026 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Expr.cpp')
-rw-r--r-- | lib/AST/Expr.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 5d8789fdda..4611ae3699 100644 --- a/lib/AST/Expr.cpp +++ b/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; } |