Compiler Optimization Duplicate Code Merging

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current compiler optimization techniques, such as Interprocedural Optimization (IPO), waste time and resources by optimizing duplicate code segments associated with template functions across multiple source files, leading to increased compilation time and inefficiency.

Innovation Solution

A method where a first symbol of a definition in one object file is matched with a second symbol of a definition in another object file, allowing only one code segment to undergo compile-time optimization, while skipping optimization of the duplicate segment, thereby reducing compilation time and resource usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If compiler optimization is applied to all object files, then runtime performance is improved, but compilation time increases significantly

Engineering Contradiction:
Improveruntime performanceVSAvoidcompilation time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent merges duplicate code segments from multiple object files into a single optimized version. By identifying duplicate symbols across object files and consolidating them, the compiler performs optimization on the merged segment once rather than separately on each duplicate, reducing total optimization time while maintaining runtime performance improvements.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent creates a universal optimized code segment that serves multiple object files simultaneously. The optimized segment is marked with special attributes allowing it to be shared across multiple translations units, making a single optimization result applicable universally to all files containing the same duplicate code, thereby eliminating redundant optimization efforts.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Reliability

If duplicate code segments are optimized separately in each object file, then each file achieves optimal performance, but compilation resources are wasted

Engineering Contradiction:
Improvecode performanceVSAvoidcompilation resources
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The patent merges duplicate code segments from multiple object files into a single optimized version. By identifying duplicate symbols across object files and consolidating them, the compiler performs optimization on the merged segment once rather than separately on each duplicate, reducing total optimization time while maintaining runtime performance improvements.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent discards redundant duplicate code segments after creating the optimized version. By marking optimized segments with special attributes and removing unnecessary duplicates, the system recovers compilation resources that would otherwise be wasted on re-optimizing identical code, while preserving the performance benefits in the executable.

Inventive Principle:
Principle #34Discarding and recovering

Data Source

PatentUS10133559B2Generating executable files through compiler optimization
Publication Date: 2018.11.20 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10133559B2 patent drawing
  • US10133559B2 patent drawing
  • US10133559B2 patent drawing

AI summary

Embodiments of the present invention may track a user's interaction trajectory associated with a problem occurred on a website. According to an embodiment of the present invention, a first symbol of a first definition associated with a first object file is obtained. Then, in response to the first symbol matching a second symbol of a second definition associated with a second object file, the first object file is optimized based on a first segment associated with the first definition in the first object file and an optimization to the second object file is skipped. Next, an executable file is generated based on the optimized first object file and the second object file.