Simulation-Based Code Duplication for Compiler Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Compiler optimizations are limited by control flow, preventing effective optimizations across basic block boundaries, and existing code duplication methods either lack consideration for optimization potential or result in excessive code growth due to unnecessary or harmful transformations.

Innovation Solution

A method involving the generation of an initial control flow graph, identification of merge blocks, simulation of code duplication for predecessor-merge pairs, and application of optimizations based on preconditions, with a tradeoff analysis to determine beneficial duplications, thereby optimizing code while managing code size and performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If code duplication is performed to extend basic block sizes and enable optimizations, then optimization opportunities increase, but code size grows excessively

Engineering Contradiction:
Improveoptimization opportunitiesVSAvoidcode size
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent performs preliminary simulation of code duplication before actual compilation to predict which duplications will enable optimizations. By analyzing control flow graphs and simulating duplication scenarios in advance, the system identifies only those duplications that will lead to beneficial optimizations, avoiding unnecessary code growth while capturing optimization opportunities.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent changes the parameter of code duplication from a blanket approach to a selective approach based on simulated optimization benefits. By evaluating multiple parameters including optimization potential, code size impact, and execution frequency, the system dynamically determines which code segments should be duplicated, transforming the duplication decision from static to adaptive.

Inventive Principle:
Principle #35Parameter changes

2Device complexity

If code duplication is applied without considering optimization potential, then basic block sizes increase, but unnecessary or harmful transformations occur

Engineering Contradiction:
Improvebasic block sizeVSAvoidtransformation quality
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The patent implements a feedback mechanism where the simulation results from analyzing control flow graphs feed back into the code generation process. The system evaluates whether duplicating code will actually enable optimizations before performing the duplication, creating a closed-loop system that adjusts duplication decisions based on predicted outcomes, thereby avoiding harmful transformations.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent performs preliminary analysis of control flow graphs to identify merge blocks and evaluate optimization opportunities before actual code duplication. By simulating the duplication and checking for optimization preconditions in advance, the system ensures that only beneficial duplications are performed, improving transformation quality while managing complexity.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If code duplication is performed for every optimization opportunity, then optimization coverage increases, but code growth becomes excessive

Engineering Contradiction:
Improveoptimization coverageVSAvoidcode size
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent applies partial duplication rather than universal duplication by selectively duplicating only those code segments that meet specific optimization criteria. The simulation process identifies a subset of duplication opportunities that provide the most benefit, performing partial action on critical paths while leaving other code unchanged, thus balancing optimization coverage with code size control.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The patent applies different duplication strategies to different parts of the code based on local characteristics. By analyzing control flow graphs and identifying specific merge blocks with optimization potential, the system applies duplication locally where beneficial rather than globally, ensuring that each duplicated segment serves a specific optimization purpose without unnecessary code growth.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10732946B2Simulation-based code duplication
Publication Date: 2020.08.04 ORACLE INT CORP
  • US10732946B2 patent drawing
  • US10732946B2 patent drawing
  • US10732946B2 patent drawing

AI summary

A method for analyzing a program may include generating an initial control flow graph (CFG) for the program, identifying merge blocks of the initial CFG, identifying predecessor-merge pairs based on identifying predecessor blocks for each merge block, simulating a duplication of each predecessor-merge pair, determining whether the duplication satisfies a precondition of each of a collection of optimizations, applying, in response to satisfying the precondition, the optimization to the duplication, and generating a simulation result for the predecessor-merge pair corresponding to the duplication. The simulation result may include the optimization and a benefit of applying the optimization to the duplication. The method may further include duplicating, in the initial CFG, a predecessor-merge pair based on the simulation result corresponding to the predecessor-merge pair.