Symbolic Analysis Algorithms and Transformations

Part of the Lecture Notes in Computer Science book series (LNCS, volume 2628)


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 [20], [98], [44], [18], [102], [67], [71], [29] 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.


Integer Solution Loop Variable Loop Nest Symbolic Expression Redundant Constraint 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Personalised recommendations