![]() |
![]() |
The following enhancements and changes have been added:
This will cause vastly better code to be generated for most programs, but it may cause some programs to fail to compile unless RULES(LAXCTL) is explicitly specified.
These implement the 390 "compare-and-swap" and "compare-double-and-swap" instructions. Further documentation is available in the Language Reference Manual.
CMPAT(LE) is the default and generates the same descriptors as in earlier Intel releases.
CMPAT(V1) and CMPAT(V2) generate the same descriptors as do the old 390 PL/I compilers.
The REDUCE option specifies that the compiler is permitted to reduce an assignment of a null string to a structure into a simple copy operation - even if that means padding bytes might be overwritten.
The NOREDUCE option specifies that the compiler must decompose an assignment of a null string to a structure into a series of assignments of the null string to the base members of the structure.
The REDUCE option will cause less executable code to be generated for an assignment of a null string to a structure, and that will usually mean your code will run much faster. However, under the REDUCE option, any assignment of a null string to a structure that is reduced to a simple copy will also cause any padding bytes in that structure to be filled with '00'x.
For instance, in the following structure, there is one byte of padding between field11 and field12. Under the NOREDUCE option, the assignment struc = ''; will cause four assignments to be generated, but the padding byte will be unchanged. However, under the REDUCE option, the assigment would be reduced to one simple copy, but the padding byte will be set to a '00'x.
Specifying NOLAXPUNC causes the compiler to flag with an E-level message any place where it assumes punctuation that is missing.
For instance, given the statement "I = (1 * (2);", the compiler assumes that a closing right parenthesis was meant before the semicolon. Under RULES(NOLAXPUNC), this statement would be flagged with an E-level message; otherwise it would be flagged with a W-level message.
The BLANK option specifies up to ten alternate symbols for the blank character. This would allow, for instance, your source to contain tab characters.
Under the MAXSTMT option, optimization will be turned off for any block that has more than the specified number of statements. Use the MAXSTMT option - with a reasonable limit to the number of statements - if you want the compiler to optimize the code generated for a program and are willing for the compiler to optimize only the reasonably sized blocks in that program.
The following changes have been made to increase compatibility with the old host compiler:
In particular, the following errors are flagged only if RULES(NOLAXLINK) has been specified:
Note that these are all still errors, and use of RULES(NOLAXLINK) is encouraged. Perhaps only the weakest link will use RULES(LAXLINK).
The following compiler/library and VisualAge PL/I component problems have been fixed since the last fixpak: