@@ -302,6 +302,8 @@ def exprReadsStateOrEnv : Expr → Bool
302302 Expr.ceilDiv a b =>
303303 exprReadsStateOrEnv a || exprReadsStateOrEnv b
304304 | Expr.intrinsic _ _ _ args => exprListReadsStateOrEnv args
305+ | Expr.forkIfAtLeast _ thenExpr elseExpr =>
306+ exprReadsStateOrEnv thenExpr || exprReadsStateOrEnv elseExpr
305307 | Expr.mulDivDown a b c | Expr.mulDivUp a b c
306308 | Expr.mulDiv512Down a b c | Expr.mulDiv512Up a b c =>
307309 exprReadsStateOrEnv a || exprReadsStateOrEnv b || exprReadsStateOrEnv c
@@ -361,6 +363,8 @@ def exprWritesState : Expr → Bool
361363 | Expr.externalCall name args =>
362364 if name == builtinExpName then exprListWritesState args else true
363365 | Expr.intrinsic _ _ _ args => exprListWritesState args
366+ | Expr.forkIfAtLeast _ thenExpr elseExpr =>
367+ exprWritesState thenExpr || exprWritesState elseExpr
364368 | Expr.internalCall _ _ => true
365369 | Expr.adtConstruct _ _ args => exprListWritesState args
366370 | Expr.extcodesize addr =>
@@ -519,6 +523,8 @@ def exprHasUntrackableWrites : Expr → Bool
519523 | Expr.byte a b =>
520524 exprHasUntrackableWrites a || exprHasUntrackableWrites b
521525 | Expr.intrinsic _ _ _ args => exprListHasUntrackableWrites args
526+ | Expr.forkIfAtLeast _ thenExpr elseExpr =>
527+ exprHasUntrackableWrites thenExpr || exprHasUntrackableWrites elseExpr
522528 | Expr.lt a b | Expr.gt a b | Expr.slt a b | Expr.sgt a b | Expr.eq a b
523529 | Expr.ge a b | Expr.le a b | Expr.signextend a b
524530 | Expr.logicalAnd a b | Expr.logicalOr a b
@@ -671,6 +677,8 @@ def exprContainsExternalCall : Expr → Bool
671677 | Expr.byte a b =>
672678 exprContainsExternalCall a || exprContainsExternalCall b
673679 | Expr.intrinsic _ _ _ args => exprListContainsExternalCall args
680+ | Expr.forkIfAtLeast _ thenExpr elseExpr =>
681+ exprContainsExternalCall thenExpr || exprContainsExternalCall elseExpr
674682 | Expr.lt a b | Expr.gt a b | Expr.slt a b | Expr.sgt a b | Expr.eq a b
675683 | Expr.ge a b | Expr.le a b | Expr.signextend a b
676684 | Expr.logicalAnd a b | Expr.logicalOr a b
@@ -753,6 +761,8 @@ def exprMayContainExternalCall : Expr → Bool
753761 | Expr.byte a b =>
754762 exprMayContainExternalCall a || exprMayContainExternalCall b
755763 | Expr.intrinsic _ _ _ args => exprListMayContainExternalCall args
764+ | Expr.forkIfAtLeast _ thenExpr elseExpr =>
765+ exprMayContainExternalCall thenExpr || exprMayContainExternalCall elseExpr
756766 | Expr.lt a b | Expr.gt a b | Expr.slt a b | Expr.sgt a b | Expr.eq a b
757767 | Expr.ge a b | Expr.le a b | Expr.signextend a b
758768 | Expr.logicalAnd a b | Expr.logicalOr a b
@@ -1065,6 +1075,9 @@ def exprWritesStateWithFunctionEffects
10651075 exprWritesStateWithFunctionEffects effects a ||
10661076 exprWritesStateWithFunctionEffects effects b
10671077 | Expr.intrinsic _ _ _ args => exprListWritesStateWithFunctionEffects effects args
1078+ | Expr.forkIfAtLeast _ thenExpr elseExpr =>
1079+ exprWritesStateWithFunctionEffects effects thenExpr ||
1080+ exprWritesStateWithFunctionEffects effects elseExpr
10681081 | Expr.mulDivDown a b c | Expr.mulDivUp a b c
10691082 | Expr.mulDiv512Down a b c | Expr.mulDiv512Up a b c =>
10701083 exprWritesStateWithFunctionEffects effects a ||
@@ -1312,6 +1325,9 @@ def exprReadsStateOrEnvWithFunctionEffects
13121325 exprReadsStateOrEnvWithFunctionEffects effects a ||
13131326 exprReadsStateOrEnvWithFunctionEffects effects b
13141327 | Expr.intrinsic _ _ _ args => exprListReadsStateOrEnvWithFunctionEffects effects args
1328+ | Expr.forkIfAtLeast _ thenExpr elseExpr =>
1329+ exprReadsStateOrEnvWithFunctionEffects effects thenExpr ||
1330+ exprReadsStateOrEnvWithFunctionEffects effects elseExpr
13151331 | Expr.mulDivDown a b c | Expr.mulDivUp a b c
13161332 | Expr.mulDiv512Down a b c | Expr.mulDiv512Up a b c =>
13171333 exprReadsStateOrEnvWithFunctionEffects effects a ||
@@ -1633,6 +1649,8 @@ def exprContainsAdtConstruct : Expr → Bool
16331649 | Expr.byte a b =>
16341650 exprContainsAdtConstruct a || exprContainsAdtConstruct b
16351651 | Expr.intrinsic _ _ _ args => exprListContainsAdtConstruct args
1652+ | Expr.forkIfAtLeast _ thenExpr elseExpr =>
1653+ exprContainsAdtConstruct thenExpr || exprContainsAdtConstruct elseExpr
16361654 | Expr.lt a b | Expr.gt a b | Expr.slt a b | Expr.sgt a b | Expr.eq a b
16371655 | Expr.ge a b | Expr.le a b | Expr.signextend a b
16381656 | Expr.logicalAnd a b | Expr.logicalOr a b
0 commit comments