Sign in



Don't have an account?

Signing up is free and easy
Home -> Our Services -> Programming Tools BU -> C Compilers -> Optimizations in Our Compilers

Optimizations in Our Compilers

Standard optimizations and architecture specific optimizations are implemented in the compilers we develop. The standard optimizations implemented in our compilers are:
  • Local optimizations

    • Constant propagation
    • Copy propagation
    • Constant folding
    • Common sub expression elimination
    • Algebraic transformation
    • Use of algebraic identities
    • Resolving aliases
    • Switch jump table creation
    • Useless definition elimination
  • Global optimizations

    • Resolving aliases
    • Constant propagation
    • Constant folding
    • Common sub expression elimination
    • Code sinking
    • Code hoisting
    • Code motion for else
    • Dead variable elimination
    • Dead code elimination
    • Merging of IF statements
    • Branch optimizations
    • Automatic procedure inlining
    • Tail merging
    • Convert linear code to loop
    • Conversion of if statement to switch
    • Template optimization
  • Loop optimizations

    • Loop invariant code motion
    • Loop variant code motion
    • Induction variable elimination
    • Loop unrolling
  • Postcode Optimizations

    • Register tracking
    • Peep hole optimizations
    • Instruction hoisting and sinking
    • Tail-call optimization
    • Optimizing jump-and-link instruction to branch-and-link instruction
    • Template optimization
    • Straight path optimization (Optimizing jumps to return instruction)
For DSP, the following architectural features are used effectively:
  • Zero Overhead Loop
  • Multiply And Accumulation Instruction Support
  • Instruction Scheduling
    • Instruction Level Parallelism
    • Pipeline Hazard Optimization
  • Conditional Instruction Support
  • Bit Field Instruction Support
  • Delay Slot Optimization