]> granicus.if.org Git - clang/commitdiff
Compute side-effect for conditional expression.
authorFariborz Jahanian <fjahanian@apple.com>
Sat, 1 Dec 2007 19:58:28 +0000 (19:58 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Sat, 1 Dec 2007 19:58:28 +0000 (19:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44492 91177308-0d34-0410-b5e6-96231b3b80d8

AST/Expr.cpp

index 5871a5c8682551f887967241253b8ef27293308b..76b2d853f43280f813509f7ddf6e0f0f6e8fd270 100644 (file)
@@ -255,6 +255,13 @@ bool Expr::hasLocalSideEffect() const {
   case CompoundAssignOperatorClass:
     return true;
 
+  case ConditionalOperatorClass: {
+    const ConditionalOperator *Exp = cast<ConditionalOperator>(this);
+    return Exp->getCond()->hasLocalSideEffect()
+           || (Exp->getLHS() && Exp->getLHS()->hasLocalSideEffect())
+           || (Exp->getRHS() && Exp->getRHS()->hasLocalSideEffect());
+  }
+
   case MemberExprClass:
   case ArraySubscriptExprClass:
     // If the base pointer or element is to a volatile pointer/field, accessing