Topic
  • 3 replies
  • Latest Post - ‏2013-06-10T19:06:54Z by prino
mdiin
mdiin
4 Posts

Pinned topic Comprehensive list of compiler optimizations?

‏2013-05-18T10:39:01Z |

Hi.

Does a comprehensive list of the optimizations the enterprise PL/I compiler for z/OS will perform on PL/I code exist?

I have looked in the language reference as well as multiple data sheets, the programming guide, and release notes for different compiler versions; the best I could find was a presentation that states that the compiler will do loop unrolling.

So I know one optimization now, but there must be others. Any pointers are much appreciated.

  • Robin400
    Robin400
    33 Posts

    Re: Comprehensive list of compiler optimizations?

    ‏2013-05-27T01:21:06Z  

    Chapter 17 of the Programming Guide, "Improving Performance", gives details of optimisations

    and ways of improving performace.

  • mdiin
    mdiin
    4 Posts

    Re: Comprehensive list of compiler optimizations?

    ‏2013-05-27T12:30:46Z  
    • Robin400
    • ‏2013-05-27T01:21:06Z

    Chapter 17 of the Programming Guide, "Improving Performance", gives details of optimisations

    and ways of improving performace.

    I was thinking more along the lines of knowing the compiler's internals, i.e.:

    • Does it perform loop unrolling? (I have seen somewhere that it does)
    • Does it perform tail call optimization for tail recursive procedures?
    • etc.

    What I would like to know is more detailed than what the programming guide provides.

  • prino
    prino
    1 Post

    Re: Comprehensive list of compiler optimizations?

    ‏2013-06-10T19:06:54Z  

    The back-end of the PL/I for Windows compiler contains text

    |SUMMARY REPORT:            %5.1fs                    100.0%                   |
    |DETAILED REPORT:
    |(%4d)       %5.1fs                     %4.1f%%
    |       |             |                   |
    (Inlining)                  %6d
    Initialization
    Termination
    Translate
    Build Procedure
    Process WCode
    Transform #1
    Inlining
    Transform #2
    OTHER (Build)
    Optimizer
    DFG
    CFG Build
    SSA Build
    Shadows
    Value Numbers
    Const Prop
    Copy Prop
    Dead Store
    ForwardStore
    If Conversion
    RCE
    Global CSE
    Checking SSA
    OTHER (DFG)
    Walk
    Global Walk
    Local Walk
    Late Opts
    Rerun Walk
    OTHER (Walk)
    CSE
    Loop
    Loop Build
    Invariant
    Induction
    Unrolling
    Reg Assign
    OTHER (Loop)
    Transform LLI
    Adjust Trees
    OTHER (Opt)
    Traverse Trees
    Fix Instructions
    Peephole Opt
    Scheduling #1
    Register Assign
    Prologue/Epilogue
    Value Tracking #1
    Scheduling #2
    Value Tracking #2
    Emit Binary/Asm
    OTHER (Translate)

    that, when emitted, seems to produce a report on the optimizations performed. It may very well be the case that the z/OS compiler is capable of producing a similar report. As far as the Windows compiler is concerned, the way of producing this report isn't documented anywhere.