Check the condition and calls Assertable.ice if condition is false.
Check the condition and calls Assertable.ice if condition is false.
condition to check
additional data to include in error message
error message
Default action for leaf processing.
Default action for leaf processing. Can be overridden to call ICE (to ensure that all processing is implemented by pass).
Report internal compilation error and throw RuntimeException.
Report internal compilation error and throw RuntimeException.
additional data to include in error message
error message
Return true if given expression is "complex".
Return true if given expression is "complex".
We are a bit pessimistic for simplicity. For example a[2*2] or a[j*2] wouldn't need extraction, but a[j*j] would; we extract all three cases.
Construct a list of terms from a summation/subtraction expression tree.
Construct a list of terms from a summation/subtraction expression tree.
Construct a summation tree from a list of expressions.
Construct a summation tree from a list of expressions.
All raw variables must be eliminated before leaving the front-end.
All raw variables must be eliminated before leaving the front-end.
If the expression is considered complex, then replace it with a variable and an assignment to this variable.
If the expression is considered complex, then replace it with a variable and an assignment to this variable.
All raw variables must be eliminated before leaving the front-end.
All raw variables must be eliminated before leaving the front-end.
Array index expression extraction pass.
Extracts array index expressions that are considered "complex" into separate variables. For example:
x = a[(i*i)/2];
becomes
idx_3 = (i*i)/2; x = a[idx_3];
The purpose of this transformation is to aid code generation using PPCG. PPCG currently cannot handle the former case, whereas it can handle the latter.