Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
An APL compiler
Semantical interprocedural parallelization: an overview of the PIPS project
ICS '91 Proceedings of the 5th international conference on Supercomputing
Interprocedural analyses for programming environments
Environments and tools for parallel scientific computing
Simplification of array access patterns for compiler optimizations
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Advanced compiler design and implementation
Advanced compiler design and implementation
Evolution and evaluation of SPEC benchmarks
ACM SIGMETRICS Performance Evaluation Review
A case for source-level transformations in MATLAB
Proceedings of the 2nd conference on Domain-specific languages
Efficient Interprocedural Array Data-Flow Analysis for Automatic Program Parallelization
IEEE Transactions on Software Engineering - Special issue on architecture-independent languages and software tools for parallel processing
Interprocedural Array Region Analyses
LCPC '95 Proceedings of the 8th International Workshop on Languages and Compilers for Parallel Computing
Sequencing Fortran program array verifications
ACM SIGPLAN Fortran Forum
Efficient and effective array bound checking
ACM Transactions on Programming Languages and Systems (TOPLAS)
An algebraic array shape inference system for MATLAB®
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Software debugging, maintenance and reuse have to deal with many problems from Fortran scientific codes that do not fully respect the standard specification. Our study on Linpack, PerfectClub and SPEC95 benchmarks and several industrial software reveals a large number of unprecise variable declarations that prevent program analysis, verification and parallelization. Furthermore, they decrease the readability of programs and make reverse-engineering more difficult.This paper presents two different methods to compute the exact size of arrays in Fortran codes that have pointer-type \verb+REAL A(1)+ or assumed-size \verb+REAL A(*)+ declarations.The first method uses the relationship between actual and formal arguments from parameter-passing rules. New array declarations in the called procedure are computed with respect to the declarations in the calling procedures.The second approach is based on an array region analysis that gives information about the set of array elements accessed during the execution of code. This approach to array resizing could be applied to other languages without array declaration such as MATLAB and APL in order to reduce the execution overhead of dynamic test and resizing.Our two approaches are combined to yield very good results for Linpack, PerfectClub and SPEC95 benchmarks.