Dead Store Elimination in COBOL PERFORM Optimization
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing dataflow optimization techniques are inefficient and memory-intensive when dealing with large COBOL programs containing many PERFORM statements, as they require extensive processing of control flow related metadata to eliminate dead stores.
Innovation Solution
The method involves splitting the contiguous storage area into two portions, optimizing the PERFORM-related storage with a single pass using bitvectors, and applying deadness-range-based dataflow analysis to the computational storage area to identify and eliminate dead store ranges, allowing for flexible choice of liveness or deadness-based dataflow techniques.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If existing dataflow optimizations are applied to eliminate dead stores in COBOL programs with many PERFORM statements, then dead store elimination is achieved, but the process becomes very time consuming and memory intensive
Solution Approach 1:
The patent segments the contiguous storage area into two distinct portions: a first portion for PERFORM-related metadata and a second portion for computational storage. This segmentation allows different optimization strategies to be applied to each portion, reducing the overall optimization time and memory requirements while maintaining effective dead store elimination.
2Productivity
If existing dataflow optimizations are applied to eliminate dead stores in COBOL programs with many PERFORM statements, then dead store elimination is achieved, but memory usage becomes excessively high
Solution Approach 1:
The patent divides the storage area into two portions, allowing the optimizer to use different data structures and memory management strategies for each portion. This segmentation reduces the overall memory footprint required for dead store elimination while maintaining optimization effectiveness.
3Reliability
If liveness-based dataflow analysis is used to track variables, then dead stores can be identified, but the process becomes complex and resource-intensive for large COBOL programs
Solution Approach 1:
The patent inverts the traditional liveness-based approach by using deadness-based dataflow analysis. Instead of tracking variables that are live (potentially read), the analysis tracks variables that are dead (definitely not read). This inversion simplifies the dataflow analysis complexity while maintaining accurate dead store identification, as deadness propagation is more straightforward than liveness propagation in the context of COBOL PERFORM statements.
Data Source
AI summary
Dataflow optimization by dead store elimination focusing on logically dividing a contiguous storage area into different portions by use to allow a different number and type of dataflow and dead store techniques on each portion. A first storage portion, containing the storage for control flow related metadata, is split from a remaining storage portion. Liveness analysis is executed on the first storage portion using bitvectors with each bit representing four bytes. The remaining storage portion, containing the temporary storage for computational values, is processed using a deadness-range-based dataflow analysis. IN and OUT sets for each basic block are generated by processing blocks GEN and KILL sets by performing a backwards intersection dataflow analysis. Stores that write to the set of dead ranges in the IN sets of blocks are eliminated as dead stores.


