PL/I

PL/I

PL/I

 View Only
  • 1.  Comprehensive list of compiler optimizations?

    Posted Sat May 18, 2013 06:39 AM

    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.

    mdiin


  • 2.  Re: Comprehensive list of compiler optimizations?

    Posted Sun May 26, 2013 09:21 PM

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

    and ways of improving performace.

    Robin400


  • 3.  Re: Comprehensive list of compiler optimizations?

    Posted Mon May 27, 2013 08:31 AM

    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.

    mdiin


  • 4.  Re: Comprehensive list of compiler optimizations?

    Posted Mon June 10, 2013 03:07 PM

    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.

    prino