Symbolic Analysis Algorithms and Transformations
In the previous chapters we have introduced the notation for program contexts and a general framework for generating these contexts. In order to compute contexts and develop useful applications that use context information, we frequently need to examine generic symbolic expressions as part of program contexts. Besides that, numerous researchers , , , , , , ,  have reported on the occurrence of complex and even non-linear symbolic expressions in practical codes and the need for effective techniques to analyze such expressions. Non-linear symbolic expressions are commonly caused by induction variable substitution, linearizing arrays, parameterizing parallel programs with symbolic machine and problem sizes, tiling with symbolic block sizes, recurrences, and so forth. Symbolic expressions can seriously hamper crucial compiler and performance analyses including testing for data dependences, optimizing communication, array privatization, expression simplification, dead code elimination, detecting zero-trip-loops, performance prediction, etc. The inability to effectively handle symbolic expressions and constraints (e.g. symbolic conditions contained in program context information) commonly results in worst case assumptions, or program analysis is moved into execution time and consequently may cause considerable performance losses.
KeywordsInteger Solution Loop Variable Loop Nest Symbolic Expression Redundant Constraint
Unable to display preview. Download preview PDF.