@@ -76,20 +76,22 @@ int getEffectiveMulOperands(MulExpr me) {
7676 * using SimpleRangeAnalysis.
7777 */
7878class AnalyzableExpr extends Expr {
79- float maxValue ( ) { result = upperBound ( this .getFullyConverted ( ) ) }
79+ QlBuiltins :: BigInt maxValue ( ) { result = upperBound ( this .getFullyConverted ( ) ) }
8080
81- float minValue ( ) { result = lowerBound ( this .getFullyConverted ( ) ) }
81+ QlBuiltins :: BigInt minValue ( ) { result = lowerBound ( this .getFullyConverted ( ) ) }
8282}
8383
8484class ParenAnalyzableExpr extends AnalyzableExpr , ParenthesisExpr {
85- override float maxValue ( ) { result = this .getExpr ( ) .( AnalyzableExpr ) .maxValue ( ) }
85+ override QlBuiltins :: BigInt maxValue ( ) { result = this .getExpr ( ) .( AnalyzableExpr ) .maxValue ( ) }
8686
87- override float minValue ( ) { result = this .getExpr ( ) .( AnalyzableExpr ) .minValue ( ) }
87+ override QlBuiltins :: BigInt minValue ( ) { result = this .getExpr ( ) .( AnalyzableExpr ) .minValue ( ) }
8888}
8989
9090class MulAnalyzableExpr extends AnalyzableExpr , MulExpr {
91- override float maxValue ( ) {
92- exists ( float x1 , float y1 , float x2 , float y2 |
91+ override QlBuiltins:: BigInt maxValue ( ) {
92+ exists (
93+ QlBuiltins:: BigInt x1 , QlBuiltins:: BigInt y1 , QlBuiltins:: BigInt x2 , QlBuiltins:: BigInt y2
94+ |
9395 x1 = this .getLeftOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .minValue ( ) and
9496 x2 = this .getLeftOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .maxValue ( ) and
9597 y1 = this .getRightOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .minValue ( ) and
@@ -98,8 +100,10 @@ class MulAnalyzableExpr extends AnalyzableExpr, MulExpr {
98100 )
99101 }
100102
101- override float minValue ( ) {
102- exists ( float x1 , float x2 , float y1 , float y2 |
103+ override QlBuiltins:: BigInt minValue ( ) {
104+ exists (
105+ QlBuiltins:: BigInt x1 , QlBuiltins:: BigInt x2 , QlBuiltins:: BigInt y1 , QlBuiltins:: BigInt y2
106+ |
103107 x1 = this .getLeftOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .minValue ( ) and
104108 x2 = this .getLeftOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .maxValue ( ) and
105109 y1 = this .getRightOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .minValue ( ) and
@@ -110,27 +114,27 @@ class MulAnalyzableExpr extends AnalyzableExpr, MulExpr {
110114}
111115
112116class AddAnalyzableExpr extends AnalyzableExpr , AddExpr {
113- override float maxValue ( ) {
117+ override QlBuiltins :: BigInt maxValue ( ) {
114118 result =
115119 this .getLeftOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .maxValue ( ) +
116120 this .getRightOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .maxValue ( )
117121 }
118122
119- override float minValue ( ) {
123+ override QlBuiltins :: BigInt minValue ( ) {
120124 result =
121125 this .getLeftOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .minValue ( ) +
122126 this .getRightOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .minValue ( )
123127 }
124128}
125129
126130class SubAnalyzableExpr extends AnalyzableExpr , SubExpr {
127- override float maxValue ( ) {
131+ override QlBuiltins :: BigInt maxValue ( ) {
128132 result =
129133 this .getLeftOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .maxValue ( ) -
130134 this .getRightOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .minValue ( )
131135 }
132136
133- override float minValue ( ) {
137+ override QlBuiltins :: BigInt minValue ( ) {
134138 result =
135139 this .getLeftOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .minValue ( ) -
136140 this .getRightOperand ( ) .getFullyConverted ( ) .( AnalyzableExpr ) .maxValue ( )
@@ -140,7 +144,7 @@ class SubAnalyzableExpr extends AnalyzableExpr, SubExpr {
140144class VarAnalyzableExpr extends AnalyzableExpr , VariableAccess {
141145 VarAnalyzableExpr ( ) { this .getTarget ( ) instanceof StackVariable }
142146
143- override float maxValue ( ) {
147+ override QlBuiltins :: BigInt maxValue ( ) {
144148 exists ( SsaDefinition def , Variable v |
145149 def .getAUse ( v ) = this and
146150 // if there is a defining expression, use that for
@@ -152,7 +156,7 @@ class VarAnalyzableExpr extends AnalyzableExpr, VariableAccess {
152156 )
153157 }
154158
155- override float minValue ( ) {
159+ override QlBuiltins :: BigInt minValue ( ) {
156160 exists ( SsaDefinition def , Variable v |
157161 def .getAUse ( v ) = this and
158162 if exists ( def .getDefiningValue ( v ) )
0 commit comments