home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IBM Presents OS/2 Software Hits 1995
/
OS-2_SW_HITS_2ND_EDITION_1995.ISO
/
i17
/
ctc0011.doc
< prev
next >
Wrap
Text File
|
1995-01-04
|
90KB
|
1,434 lines
C Set ++ Compiler Version 2.0
Fixes List
-----------------------------
This package includes the following files:
CTC0010 ZIP15BL4 - Zipped file
CTC0010 DOC15BL4 - Document for v2.0 libraries
The file once downloaded with the binary option, needs to be
unpacked using PKUNZIP2 onto the system disk.
************************************************************************
* *
* This CSD contains fixes that are common to C/C++ Tools Version 2.0 *
* and Version 2.01. Not with standing the version statements *
* contained in the files of this CSD, this is not an upgrade of *
* Version 2.0 to Version 2.01. *
* *
* The code to which you have access is determined by the version of *
* the software to which you are licensed. *
* *
************************************************************************
========================================================================
CTC0011 is informal Corrective Service
************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
QUAL-IMP BE Compiling a module without a main() function
using the /O /Ol /Gu options result a compile-
time trap.
------------------------------------------------------------------------
QUAL-IMP BE When the multiplication of char or short constants
results in an overflow, incorrect code may be
generated if the results of the multiply is used
in a comparison.
-----------------------------------------------------------------------
QUAL-IMP BE An internal problem could result in a compile-time
exception when compiling a switch with /O+ /Ti+.
------------------------------------------------------------------------
QUAL-IMP BE In rare cases, stack space allocated by _alloca()
could become corrupted when using auto-inlining.
------------------------------------------------------------------------
QUAL-IMP BE Fixed an internal problem which in rare
circumstances could cause incorrect code generation
------------------------------------------------------------------------
PJ15990 BE ICL: When compiling with /Fw to generate
intermediate files, a bug in the ICL could result
in the incorrect intermediate files which causes
the compiler backend to trap.
------------------------------------------------------------------------
PJ16021 BE Defining an uninitialized variable of type double
in more than one module results in a LINK386 L2025
error (symbol defined more that once).
------------------------------------------------------------------------
PJ15991 BE ICL: A bug in the ICL could cause a compile-time
trap in the compiler back end when the /Ol+ option
is used.
------------------------------------------------------------------------
PJ15987 BE An internal problem occurring during register
assignment could cause a compile-time exception.
------------------------------------------------------------------------
PJ16024 BE Fixes a problem where the epilog of a function could
be incorrect if the function contains a call to
_alloca.
------------------------------------------------------------------------
PJ15881 BE Statements of the form "x ? INT_MAX : INT_MIN;"
could be optimized incorrectly.
------------------------------------------------------------------------
PJ15876 BE The last compare and jump in strncat() should be
unsigned rather that signed.
------------------------------------------------------------------------
PJ15882 BE Fixed a problem where compiling with /Gr and then
running at ring 0 causes a Stack Segment Overrun
trap.
------------------------------------------------------------------------
PJ15880 BE Incorrect code may be generated when a conditional
expression is logically negated and used as the test
expression within an if statement.
------------------------------------------------------------------------
PJ15894 BE The conversion from a segmented pointer to a flat
pointer may not occur if the _Seg16 pointer is cast
to an int.
------------------------------------------------------------------------
PJ15935 BE Fixes a register assigning problem which could
cause a run-time trap when calling a function via
a pointer.
------------------------------------------------------------------------
PJ16023 BE Fixes a problem where compiling with /Ti+ causes
the compiler to create a huge temporary file.
------------------------------------------------------------------------
PJ15986 BE A problem occurring while trying to optimize the
usage of registers could result in incorrect code
generation.
------------------------------------------------------------------------
PJ15883 BE In rare cases, the generated code for the builtin
version of strcmp could be incorrect when one of
it's parameters is a function.
------------------------------------------------------------------------
PJ15993 BE Consecutive / and % operators with identical
operands inside simple loops could be compiled
incorrectly.
------------------------------------------------------------------------
PJ15869 BE Compiling an "if" that contains a negated ternary
expression could cause a compile-time trap.
------------------------------------------------------------------------
QUAL-IMP BE Using #pragma alloc_text() to place a function
in the default code segment (CODE32) may result
in a run-time exception since two CODE32 segments
may be created.
------------------------------------------------------------------------
PJ15872 BE Fixed an internal problem that could cause a
compile-time trap when compiling an simple "if"
containing the logical negation of a floating-
point variable.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect debug information generated which could
cause IPMD to fail.
-------------------------------------------------------------------------
QUAL-IMP BE When using the /Gt option, static arrays of the
same type could be mapped on top of each other
in rare cases.
------------------------------------------------------------------------
PJ16038 BE Fixes a register assigner bug that could cause
incorrect register spills/reloads of 8 or 16 bit
values.
------------------------------------------------------------------------
PJ15870 BE In rare cases, the code generated for the builtin
version of memchr could be incorrect when using
the /G5 option.
------------------------------------------------------------------------
PJ15994 BE Instruction scheduling could cause code containing
consecutive memsets to fail.
------------------------------------------------------------------------
PJ15996 BE An internal problem occurring during loop unrolling
could result in a compile-time exception.
------------------------------------------------------------------------
PJ15933 BE An illegal MOV instruction could be generated when
converting a 32-bit value to an 8-bit value.
------------------------------------------------------------------------
PJ15934 BE An internal problem occurring while handling
floating-point parameters in registers could cause
a compile-time trap.
------------------------------------------------------------------------
PJ16313 BE Incorrect code may be generated when converting an
integer value to a floating-point value if the
integer variable is used after the conversion.
------------------------------------------------------------------------
PJ16037 C++FE In some rare cases, compiler might corrupt
CFE identifier names that are also macro names not
eligible for macro expansion.
e.g., #define max(a,b) (((a) > (b)) ? (a) : (b))
int max;
! -> max here could be corrupted
------------------------------------------------------------------------
QUAL-IMP CFE Compiler is not generating correct code for the side
effect in the following 'if' statement:
if (*++p == '-0' && ]1) ;
'p' does not get incremented as expected.
-------------------------------------------------------------------------
QUAL-IMP CFE Compiler is not correctly recognizing that
statements in a 'switch' before any 'case' or
'default' are unreachable.
-------------------------------------------------------------------------
PJ15888 CFE Declaration of function returning pointer to array
of unsigned int without 'int' specifier is
misinterpreted.
i.e., (*foo())-| {}
causes the compiler to generate erroneous error
message. It should be accepted in the same way
as:
int (*foo())-| {}
-----------------------------------------------------------------------
PJ15887 CFE Compiler incorrectly issues error message for the
following correct code segment:
char * const kpz;
kpzφ0∙ = '-0';
------------------------------------------------------------------------
QUAL-IMP CFE Compiler hangs when compiling source code with
comment on the last line and the comment exceeds the
right margin.
------------------------------------------------------------------------
PJ16029 CFE Calling from 16 bit to 32 bit, and passing a pointer
does not result in the pointer being automatically
thunked.
-------------------------------------------------------------------------
PJ16028 CFE When ICC is invoked to compile a large number of
files in a command line or a response file, ICC
fails with message "Severe Error: Unable to retrieve
messages from message file."
------------------------------------------------------------------------
PJ16027 CRT If the result from internal function called by
strtod() would cause underflow exception, it is
rounded to zero, with proper error signaling.
------------------------------------------------------------------------
PJ15886 CRT strdup() allocates memory with malloc(), so it
cannot be freed in a program that was compiled
with /Gt+. Changes to the heap algorithm now permit
any type of memory (normal, tiled, or debug) to be
passed to any kind of free() or realloc() function.
In the case of realloc(), the resulting memory will
be of the same type as the original.
-----------------------------------------------------------------------
PJ15885 CRT _LHUGE_VAL is a macro that is defined in math has
being a reference to an external variable. The
variable was notbeing exported from the library
DLL. This has been corrected.
------------------------------------------------------------------------
PJ15884 CRT Floating point number formatting has been changed
to better handle any precision for floating point
numbers.
------------------------------------------------------------------------
PJ16026 CRT tmpnam() used to produce the same name in the first,
tenth hundreth call. It is guaranteed that it
will now make TMP_MAX unique names.
-------------------------------------------------------------------------
PJ16273 CRT getcwd() and getdcwd() library functions will fail
on OS/2 Warp if the caller does not specify a
buffer.
------------------------------------------------------------------------
PJ16025 BE In case of running out of file handles, tempnam()
will increase the number of allowable file handles
and try again.
------------------------------------------------------------------------
QUAL-IMP DLLRNAME DLLRNAME may not be able to handle renaming DDE4SBS.
DLL in the current directory.
------------------------------------------------------------------------
PJ16030 DLLRNAME Attempting to rename a DLL in another directory ME
with DLLRNA results in the renamed DLL being left
in the current directory.
------------------------------------------------------------------------
PJ16031 CPPFILT CPPFILT has been modified so that it doesn't use
CMD.EXE to invoke a sub-program.
-------------------------------------------------------------------------
PJ16057 C++FE The compiler was issuing an incorrect error for the
conversion of a pointer to a pointer to member of
the same type.
------------------------------------------------------------------------
PJ16083 C++FE The compiler was generating an error for a user
defined postfix increment operator for an enum.
------------------------------------------------------------------------
PJ16055 C++FE The value oxFFFFFFFF was not being accepted as a
valid enum value. It's size was also being set
to the wrong size.
------------------------------------------------------------------------
QUAL-IMP C++FE Mysterious external variables ___nnn being generated
with the /O+ compile option.
------------------------------------------------------------------------
PJ16056 C++FE #pragma export of an overloaded const and non-const
function was generating an error, and only one
function was being exported.
------------------------------------------------------------------------
QUAL-IMP C++FE New "#pragma defineonly" to match the AIX C Set++
compiler
------------------------------------------------------------------------
PJ15905 C++FE The compiler was trapping when it tried to issue
an error message for the invalid use of extern "C++"
as a function parameter.
------------------------------------------------------------------------
PJ15930 C++FE The compiler displayed 65536 as the column number
when the source file is a precompiled header file.
This cause a problem when trying to invoke an
editor automatically under the WorkFrame. The fix
is to display 1 as the column number when the source
file is a precompiled header.
------------------------------------------------------------------------
PJ15931 C++FE In an array of dimension N containing pointers to
memeber, and with M initializers where M < N, the
remaining N-M members should be initialized to zero.
Instead, they were being left uninitalized and the
first N-M were being zeroed.
-------------------------------------------------------------------------
PJ16032 C++FE Fixed problem with accessing base classes in
hierarchies containing virtual base classes.
------------------------------------------------------------------------
PJ16275 C++FE In some cases, temporary objects were being
destructed twice. In some other cases, objects
caught in a catch clause were not being destructed
at all.
------------------------------------------------------------------------
QUAL-IMP Samples PMLINES sample program in SAMPLE1A used the
WinPeekMsg() API incorrectly, causing the sample to
fail on OS/2 Warp.
**********************************************************************
CTC0010 is informal Corrective Service
**********************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-----------------------------------------------------------------------
PJ14307 BE A dangling assignment to a floating point
parameter inside a function can cause a
floating point stack overflow if called
often enough
-----------------------------------------------------------------------
PJ14318 BE This fix will correct a boundary problem that
occurs often compiling with option /Gt+ if
your program contains static data objects
exactly equal to 64K in Size. the problem
does not occur when option /Gt- is specified.
-----------------------------------------------------------------------
PJ14309 BE Fixed a register problem that may occur when
using _allocate with optimization.
-----------------------------------------------------------------------
PJ14310 BE A floating-point parameter for a function call
could be set up incorrectly if the call is
the last operation in a function (the tail
call optimization).
-----------------------------------------------------------------------
PJ14311 BE Storing a char into an int and then later
storing the back into the char could, in very
rare circumstances, produce incorrect code.
-----------------------------------------------------------------------
PJ14312 BE Nested for loops in which the iteration
variables are members of the same structure
may cause incorrect code generation.
-----------------------------------------------------------------------
PJ14313 BE Floating-point parameters may be left on the
NPX register stack if there is an "if {...}"
immediately above a "for (;;)" loop near the
start of a function. This can later result in
a floating point stack overflow exception.
-----------------------------------------------------------------------
PJ14314 BE An internal problem could result in a compile-
time exception when processing a function
with floating-point parameters.
-----------------------------------------------------------------------
PJ14315 BE Calling a function with two or more similar
aggregate parameters could result in incorrect
code generation.
-----------------------------------------------------------------------
PJ14316 BE Incorrect code could be generated for 16-bit
operation that use the BP register when optim-
izing code without the /Op- compile parameter
also specified.
-----------------------------------------------------------------------
PJ14317 BE If a conditional break inside an infinite
loop jumps to a return, static variables used
in the loop may not be correct at the return.
-----------------------------------------------------------------------
QUAL-IMP BE Accessing an int as a bitfield structure has
undefined behaviour according to the ANSI C
standard. However, the behaviour has been
changed so that it is more in line with
"intuitively obvious" behaviour.
---------------------------------------------------------------------
PJ14424 BE In very rare circumstances, incorrect code
may be generated when the only use of a
parameter ia a copy to a local variable.
----------------------------------------------------------------------
QUAL-IMP BE Division and remainder operations that
conditionally execute within a loop could be
moved outside of the loop, perhaps causing
unexpected divide-by-zero exceptions. (a result
of the invariant code motion optimizations)
-----------------------------------------------------------------------
PJ14579 BE Under rare circumstances, due to an internal
problem, compiling a large C++ module with
/O+ /Ti+ can cause a compile-time exception.
-----------------------------------------------------------------------
QUAL-IMP C++FE The compiler was not restricting the change
of char to signed or unsigned char during
integral promotions only.
They are three distinct types.
Note: This fix may cause code that previously
compiled cleanly to produce errors. It is
simply the compiler detecting an error that it
wasn't detecting previously.
-----------------------------------------------------------------------
PJ14428 C++FE When a variable is initialized , any temporaries
that are created in the initializer expression
should have their destruction delayed until
the end of the block. For a reference variable
to a ternary expression this is not the case
and the destructors are being called too soon.
------------------------------------------------------------------------
PJ14431 C++FE Compiler traps while generating a message
for an inaccessible constant expression in
a switch statement
------------------------------------------------------------------------
QUAL-IMP C++FE Compiler may trap when generating the error
message EDC3004: "{" statement is not allowed
in this scope.
------------------------------------------------------------------------
QUAL-IMP C++FE The compiler issues an invalid error message
for an unrecognized type when the symbol is
actually a template argument T.
------------------------------------------------------------------------
QUAL-IMP C++FE The compiler generates an error when trying
to pass a array argument to a class template
that takes a char * arg.
------------------------------------------------------------------------
QUAL-IMP C++FE A declaration without a type specification
causes the C++ compiler front end to trap
when generating an error message.
----------------------------------------------------------------------
QUAL-IMP C++FE The C++ compiler front end traps when compi-
ling a statement of the form:
<function typedef> <_Optlink specifier>
<functin name> (<empty argument list>)
-----------------------------------------------------------------------
PJ14433 C++FE The C++ compiler is restricting the use of:
#pragma comment(user,"..")
It can only occur once in a source file and
must appear before any C++ statements.
------------------------------------------------------------------------
PJ14434 C++FE The compiler is not generating a temp when
passing an array to a function that takes a
const char * const & argument. This results
in a bad address being passed to the function.
-----------------------------------------------------------------------
QUAL-IMP C++FE When a nested type that is a typedef is used
as a base class the compiler checks the access
of the target of the typedef instead of the
typedef name and an invalid access error is
generated.
------------------------------------------------------------------------
QUAL-IMP C++FE The C++ language specifies that for non-mem-
ber operator functions, at least one of the
arguments must be of class type, reference
to class, enum type, or reference to enum.
The compiler is generating an error for the
definition of a operator + function that
takes an enum and an int as parameters.
------------------------------------------------------------------------
QUAL-IMP C++FE Initialization of static reference variables
is happening at runtime static initialization
instead of at compile time.
------------------------------------------------------------------------
PJ14445 C++FE The preprocessor may generate the invalid error:
"The suffix for the floating point constant
is not valid."
when concatenating two valid tokens together
to form a floating point constant.
------------------------------------------------------------------------
QUAL-IMP C++RT A program that supplies its own version of
delete may have had the compiler supplied
version called instead of the user version
when linking dynamically.
QUAL-IMP C++RT Fixed problem where a duplicate symbol error
wasd generated by the linker when a user provi-
ded global new() was linked into a program
that also called set_new_handler().
------------------------------------------------------------------------
PJ14347 CFE If a variable is first declared as 'static'
variable in file scope, then declaration of
the same variable name in function scope
should refer to the same variable. This
linkage of identifiers does not work properly
when /Ti+ is not specified.
-----------------------------------------------------------------------
PJ14346 CFE Compiler generated segmented to flat pointer
conversion is missing for the following code
segment:
char * fp;
unsigned long l = 0;
fp = l < 0
? 0
: (char* _Seg16)(void*)(void* _Seg16)l;
------------------------------------------------------------------------
PJ14343 CFE Compiler internal error occurs compiling unu-
sually large program with optimization turned
on.
------------------------------------------------------------------------
PJ14345 CFE #pragma margins and /Sg options causes errone-
eous /Wppc info message when the line ends at
the right margin.
------------------------------------------------------------------------
PJ14325 CFE After Invoking the compiler from a network
drive with preload (/Tl) enabled, the network
drive stays locked.
------------------------------------------------------------------------
PJ14329 CFE In macro expansion, preprocessor mistreats
two dots followed by any character as an
elipsis.
#define test left..right
test is expanded to left..right
------------------------------------------------------------------------
QUAL-IMP CFE Some #line directives with file names specified
are not processed properly by the compiler.
-----------------------------------------------------------------------
QUAL-IMP CFE The compiler is failing to provide a closing
double quote (") on the executable name when
calling LINK386. This does not cause a prob-
lem with LINK386.EXE, but could cause problems
with other linkers.
-----------------------------------------------------------------------
QUAL-IMP CFE When ICC is compiling TEMPINC files, it is
possible that compiling one TEMPINC file will
update another one an make it out of date.
ICC needs to loop doing TEMPINC compiles
until all objects are up to date.
-----------------------------------------------------------------------
PJ14445 CFE The preprocessor erroneous issues an error
message for the following legal macro expansion:
#define MAKEHEX(a) 0x##a
float j = MAKEHEX(2e);
------------------------------------------------------------------------
PJ14454 CFE The C compiler generates incorrect code when
evaluating the address of an array of array
of structure members within another structure,
with array index of 0. e.g for the following
structure, the values of
&s2.s1û1σû0σ.j and &s2.s1û1σ->j are not
evaluated properly:
struct {
int i;
struct {
int j;
} s1û2σû3σ;
} s2;
-----------------------------------------------------------------------
PJ14279 CRT getcwd() fails intermittently, returning an
OS/2 error.
------------------------------------------------------------------------
PJ14281 CRT The spawnx() and execx() families of funct-
ions sometimes pass a incorrect parameter
list to the child process.
-----------------------------------------------------------------------
PJ14308 CRT When a file is opened for low level I/O in
text mode, and the last character read from
the file is a carriage return ('\r'), the
_read() function moves the file pointer back
by 1. This causes incorrect results only if
the next operation on the file is write()
or _tell().
-----------------------------------------------------------------------
PJ14456 CRT The TZ variable in the environment does not
support timezones which are not an integral
number of hours different from GMT. The
format of the TZ variable has been changed
to support this now. The format is now:
SSSû+|-σhhû:mmû:ssσσDDDû,sm,sw,st,em,ew,ed,
et,shiftσûσ indicates optional parameters.
Note the addition of the minutes and seconds
to the offset.
------------------------------------------------------------------------
PJ14455 CRT On OS/2 2.11, the DosKillThread API cannot
kill C library routines that get input from
the keyboard. This works on OS/2 2.0 and 2.1,
although it has unpredictable side effects.
The library has been changed to allow this
particular use of DosKillThread() to work
safely on OS/2 2.11. Using the DosKillThread()
API still has unpredictable side effects on
OS/2 2.0 and 2.1 (an OS limitation).
------------------------------------------------------------------------
QUAL-IMP SCL A bug in ostrstream causes program to trap.
The actual bug is inside streambuf's sync().
It tries to put the end of line chrarcter
into an empty stream buffer.
------------------------------------------------------------------------
PJ14427 SCL Memory is allocated by the iostream library
during static initialization, but is not being
freed during termination.
This causes a memory leak if the iostream
functins are statically linked to a DLL which
is dynamically loaded and unloaded.
------------------------------------------------------------------------
========================================================================
CTC0009 is formal Corrective Service
The following fixes are provided in Compiler CS CTC0009
*************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-----------------------------------------------------------------------
PJ13703 CFE Defining the first token in a program as
a character string with the /D option
causes an internal compiler error
-----------------------------------------------------------------------
QUAL-IMP CFE Label not found message does not
indicate which label is not found.
-----------------------------------------------------------------------
QUAL-IMP CFE Internal compiler error while generating
/Wenu messages for program with 'case'
statement outside 'switch' scope.
-----------------------------------------------------------------------
PJ13705 BE Fixed a parameter passing problem that
occurs when the last statement of a
function is to a _Pascal function.
-----------------------------------------------------------------------
QUAL-IMP BE Allow the optimizer to assign registers
a little more efficiently in certain
circumstances.
-----------------------------------------------------------------------
PJ13706 BE A loop that contains a goto to a return
could, in rare cases, cause incorrect
code generation.
-----------------------------------------------------------------------
PJ12329 CRT A 16-bit function will get a protection
exception if the function has a large
automatic storage area. This problem
occurs on secondary threads, and happens
because the stack is not committed when
the thread begins execution and the
16-bit code does not have stack probes.
The compiler runtime code that sets up
the 16bit stack needs to commit it.
-----------------------------------------------------------------------
PJ13704 CRT Compiling 16-32 callback funtions with
static link results in duplicate references
when linking.
Reference APAR PJ12507
-----------------------------------------------------------------------
QUAL-IMP CRT Now checking if a destructor exists
during error recovery in __vec__copy().
May have caused traps
=========================================================================
CTC0008 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0008
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-----------------------------------------------------------------------
PJ12307 BE Cannot access local variables of callback
functions within the Debugger.
-----------------------------------------------------------------------
PJ12325 BE Incorrect code may be generated for a
conditional increment or decrement if the
comparison is signed.
-----------------------------------------------------------------------
PJ12340 BE The conversion of an address to a segmented
address may be incorrectly done if the
address involves an index calculation
(ie: &array{i-1})
-----------------------------------------------------------------------
PJ12341 BE A register used by strncat() could be
clobbered under rare circumstances and
cause incorrect behaviour.
-----------------------------------------------------------------------
PJ12376 BE Fixed an internal problem with the handling
of conditional increments with side effects.
-----------------------------------------------------------------------
PJ12431 BE Incorrect register selection could cause
incorrect results when performing a bitwise
AND (&) with a constant.
-----------------------------------------------------------------------
PJ12507 BE & CRT Compiling 16 to 32 callback functions with
/Gh+ causes a run-time trap.
-----------------------------------------------------------------------
QUAL-IMP BE Incorrect register selection could lead to
traps or unexpected results with 32 to 16 to
16 to 32 code.
-----------------------------------------------------------------------
QUAL-IMP BE Fixed a problem similarto PJ11975 for
conditional decrements.
-----------------------------------------------------------------------
PJ12567 CRT Exception handler was not deregistered within
heap_check when using /TM+
-----------------------------------------------------------------------
PJ12326 CFE If listing is enabled (/Ls, /Li, or /Lj) and
the source code contains nested #if, #elif
and #ifdef, the compiler might fail with
unexpected compiler error.
-----------------------------------------------------------------------
PJ12327 CFE & C++FE After compiling programs with preload turned
on, sometimes the front-end traps after the
compilation is completed.
-----------------------------------------------------------------------
PJ12477 CFE The compiler was not checking against
possible errors reading the source and
header files.
-----------------------------------------------------------------------
PJ12490 CFE ICC will be changed to ignore /Si+ option
when /Fb+ option is specified.
-----------------------------------------------------------------------
QUAL-IMP CFE Pre-load program was not checking the return
codes from some API calls.
-----------------------------------------------------------------------
QUAL-IMP CFE If the compiler is first invoked from a
directory with preload option enabled, while
the compiler stays loaded, the user is
prevented from removing the directory.
This is inconvenient for the user.
-----------------------------------------------------------------------
QUAL-IMP CFE Compiling program with function calls with
very large number of arguments causes
compiler to trap.
-----------------------------------------------------------------------
PJ12378 C++FE If a class is _Exported, then a member
function is subsequently defined to be
"inline", the compiler still tells the linker
to export the function. This causes an
"undefined external" linker error.
-----------------------------------------------------------------------
PJ12388 C++FE A C++ program compiled with optimization
will cause the front-end to trap if a "const
int" static class data member is referenced
with explicit class qualification.
-----------------------------------------------------------------------
PJ12427 C++FE Erroneous conversion error between typedefs,
friend functions and the use of the friend
function.
-----------------------------------------------------------------------
PJ12445 C++FE Compiler trap processing declaration of const
var symbol previously used without being
declared.
------------------------------------------------------------------------
PJ12479 C++FE Preprocessor trap when processing a macro
defined to NULL
------------------------------------------------------------------------
PJ12492 C++FE When one anonymous union is nested inside
another in a C++ program, incorrect addresses
are generated for the union members.
------------------------------------------------------------------------
QUAL-IMP C++FE Fixed #pragma page() and #pragma skip() so
that a listing file will not be generated if
the listing option is not activated on the
command line.
------------------------------------------------------------------------
QUAL-IMP C++FE If the argument list of a macro is supplied
via another macro, the macro might not be
expanded as expected.
Note: Corresponding CFE fix was implemented
in CTC0006 as PJ11929
------------------------------------------------------------------------
QUAL-IMP C++FE Wrapper <demangle.h> with #pragma pack
------------------------------------------------------------------------
PJ12328 UTIL When a new C Set++ project (ie. no compiler
options have been set), is invoked under the
build action on the WorkFrame, the compiler
DLL will return the default action. The
default action is not to generate any .W
files.
------------------------------------------------------------------------
PJ12522 UTIL Munch was giving the error "assert
<line_number> invalid object record." This
error was incorrectly being produced for
valid object record formats.
========================================================================
CTC0007 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0007 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11951 BE & CFE The optimizer misses a chance to inline
certain C++ functions.
------------------------------------------------------------------------
PJ11979 CFE In source code:
int main (void) {
int a, b; b = 1; a = 2; return 0;
}
The symbols for a and b are generated in a
different order depending on whether /Ti is
on. They should be generated in the same
way no matter what the /Ti setting is.
------------------------------------------------------------------------
QUAL-IMP CFE When /La compiler option is used, some of the
structures and unions are incorrectly shown
in the listing
------------------------------------------------------------------------
PJ12108 CRT Library fixes made to solve problems when
debug allocated objects were freed with
non-debug routines and vice-versa.
In addition the environment variable
DDE4_HEAP_SKIP was added whereby the user can
skip the _heap_check that occur when debug
routines are invoked. The syntax is as
follows:
set DDE4_HEAP_SKIP=increment,starting
where: 'increment' is how often a
heap_check will be invoked, and 'starting'
(which is optional) is how many calls to
debug memory routines must occur before
heap_checks are done.
Example: DDE4_HEAP_SKIP=100,1000
will perform a heap_check after 1000 debug
memory routines have been called and on every
100 calls after that.
Example: DDE4_HEAP_SKIP=50
will perform a heap_check on every 50 calls
made to a debug memory routine
Note: If DDE4_HEAP_SKIP is not set in the
environment then the default will be to
invoke heap_check on every call to a debug
memory routine.
========================================================================
CTC0006 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0006 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ11896 BE Optimization Problem: A for loop that
functions like a memcpy() could be
incorrectly optimized if the source of the
copy is a struct member.
-------------------------------------------------------------------------
PJ11952 BE Optimization Problem: An internal problem
with expression simplification could result
in incorrect code generation.
-------------------------------------------------------------------------
PJ11953 BE Optimization Problem: Within an inner switch
of nested switches, a goto jumping to a break
for the outer switch could be turned into a
break for the inner switch.
-------------------------------------------------------------------------
PJ11975 BE Optimization Problem: Statements of the form:
"if (f1 < f2) i++", where f1 and f1 have
floating-point datatypes, could cause a
compile-time exception in the BE.
-------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: MOD operations could
generate results of the wrong sign if both
operands are negative. Similar results could
occur for MOD and DIV by a negative power of
2.
-------------------------------------------------------------------------
QUAL-IMP BE Fixed a small problem with the generated
assembler listing file - an incorrect symbol
could be used.
-------------------------------------------------------------------------
PJ11872 C++FE Fixed a trap in the C++ frontend. The trap
occurred when we tried to compile a source
file that contained a class that had 2
declarations of the same friend function and
a typedef for that function.
-------------------------------------------------------------------------
PJ11887 C++FE Fixed a trap when compiling code with a
definition of a function with _Far16 _Pascal
linkage.
-------------------------------------------------------------------------
PJ11981 C++FE If a conversion function yields a reference
to a class with constructors, and a temporary
is built from the result of that conversion,
the temporary is initialized by bitwise
copying instead of by calling its copy
constructor.
-------------------------------------------------------------------------
PJ11982 C++FE The compiler will deliberately not inline
some functions if doing so would break C++
exception handling. However, when exception
handling is disabled by /Gx+, the compiler
still fails to inline those functions.
-------------------------------------------------------------------------
PJ11983 C++FE A complex expression containing more than one
conditional subexpression (i.e. the x ? y :
z construct) may be generated such that the
subexpressions are evaluated in the wrong
order.
-------------------------------------------------------------------------
PJ11984 C++FE An inline function consisting of a single
return statement that returns a
type-converted parameter may be incorrectly
inlined.
-------------------------------------------------------------------------
PJ11881 CFE Sizeof typedef within sizeof sometimes
returns arbitrary value.
-------------------------------------------------------------------------
PJ11929 CFE If the argument list of a macro is supplied
via another macro, the macro might not be
expanded as expected.
-------------------------------------------------------------------------
PJ11889 CRT If the function that executes when a thread
begins execution calls 16-bit code, then
EDCThunkProlog is called from within the
function prolog. EDCThunkProlog tries to
access data that is outside the stack frame,
and since this is the first frame on the
stack, that storage is not allocated to the
stack. A protection exception occurs.
=========================================================================
CTC0005 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0005 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11625 BE Optimization Problem: Compiling source that
contains floating-point code could cause a
compile-time trap in the backend.
------------------------------------------------------------------------
PJ11688 BE Optimization Problem: Statements of the form
"do { i++; } while (condition); i--;" could
be incorrectly optimized.
------------------------------------------------------------------------
PJ11692 BE Incorrect debug info could be generated for a
data member of a class with type "char *
const".
------------------------------------------------------------------------
PJ11695 BE Optimization Problem: Instruction scheduling
could clobber the result of constant multiply
across a call.
------------------------------------------------------------------------
PJ11696 BE Optimization Problem: Using an int variable
as an array of chars within a loop could
result in incorrect code generation.
------------------------------------------------------------------------
PJ11697 BE Optimization Problem: Statements of the form
"while (cond) { if (--i) { i++; break; } }"
could be incorrectly optimized.
------------------------------------------------------------------------
PJ11698 BE Optimization Problem: If the "count" paramter
of strncat() is a builtin string function,
incorrect code could be generated.
------------------------------------------------------------------------
PJ11699 BE Optimization Problem: Tail calling a _Pascal
function from another function could result
in an exception at run-time.
------------------------------------------------------------------------
PJ11701 BE strncat() could copy one byte even if "count"
parameter is a variable of value 0.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Adding two negative
numbers and then negating the result could be
optimized incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE Without optimization, an expression of the
form "*((char*)&arrayûindexσ+i)" could
generate an incorrect OBJ even though the
ASM is correct.
------------------------------------------------------------------------
PJ11491 C++FE new() is not returning a valid pointer when
allocating a 0-sized array.
------------------------------------------------------------------------
PJ11492 C++FE The delete() operator for an object was not
being called with the debug parameters when
that object was being deleted because its
constructor threw an exception.
------------------------------------------------------------------------
PJ11574 C++FE Reduce the long link times and large swapper
file created when linking C++ programs that
contain templates.
------------------------------------------------------------------------
PJ11575 C++FE If a virtual base class appears more than
once in the class hierarchy, then one copy of
if may be initialized several times and the
other copies not initialized.
------------------------------------------------------------------------
PJ11584 C++FE The compiler may crash when generating debug
information for a class that has no
user-supplied nor compiler-generated inline
functions. This is rare, since there are
usually some compiler-generated ones.
------------------------------------------------------------------------
PJ11585 C++FE If a C++ compilation includes definitions of
classes that contain virtual functions, all
of which are inline functions, the compiler
will generate those classes and functions
whether or not they are actually used. This
fix generates them only when necessary
------------------------------------------------------------------------
QUAL-IMP C++FE A C++ program containing a brace-enclosed
statement block outside of a function body
crashes the front-end when compiled with
/Wuse+ if there is an unused label define
in the block
------------------------------------------------------------------------
QUAL-IMP C++FE A goto within a catch block is incorrectly
diagnosed as a jump into the catch block,
which is illegal since it bypasses
initialization of the catch variable
------------------------------------------------------------------------
QUAL-IMP C++RT Fixed memory leak that occurred when memory
is allocated for an object however, it is not
constructed because it's constructor threw an
exception.
------------------------------------------------------------------------
PJ11702 CFE The compiler is not recognizing a constant
expression properly when initialization
involves an array within a structure within
an array of structures
------------------------------------------------------------------------
PJ11703 CFE Using CSD 1 of C Set ++, the test case is
expected to have a warning message, but the
compiler should not be trapping.
------------------------------------------------------------------------
PJ11686 CRT The problem lies in reading across memory
blocks. The code did not take into account
of the number of characters read in from the
previous blocks and hence reading more than
necessary.
------------------------------------------------------------------------
PJ11687 CRT AL register will now be set by the library
when making a call to DosGetMessage.
=========================================================================
CTC0004 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0004 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11127 BE Optimization Problem: Multiplying a variable
by a constant and the adding or subtracting 1
could result in incorrect code generation.
------------------------------------------------------------------------
PJ11128 BE Optimization Problem: An internal problem
could result in traps or unexpected results
with 32 to 16 or 16 to 32 code.
------------------------------------------------------------------------
PJ11129 BE Optimization Problem: In rare circumstances,
doing arithmetic with shorts could result in
traps or unexpected results.
------------------------------------------------------------------------
PJ11134 BE Optimization Problem: The result of a right
shift of a negative value, though
implementation defined, could differ at /O-
and /O+.
------------------------------------------------------------------------
PJ11135 BE Optimization Problem: The backend could abort
with fatal error EDC4005 in intermediate file
ROOPT when optimizing an if-then-else.
------------------------------------------------------------------------
PJ11137 BE Optimization Problem: Expressions of the
form: "*(float *) &var", where var is an int,
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11138 BE Optimization Problem: An internal problem
occuring when compiling floating-point code
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11139 BE Incorrect code could be generated when
negating a char variable and then storing the
result into an int variable.
------------------------------------------------------------------------
PJ11140 BE Optimization Problem: Statements of the form:
"x--; if (cond) x += 2;" may be incorrectly
optimized.
------------------------------------------------------------------------
PJ11141 BE Run-time traps could occur in code using 16
to 32 callback functions if the code crossed
a 64K boundary.
------------------------------------------------------------------------
PJ11142 BE When using strncat(), an extra NULL was being
appended to the end of the destination string
if the length of the source string was less
than "n".
------------------------------------------------------------------------
PJ11143 BE Optimization Problem: Statements of the form:
"if (]x) {y = 0;} else {y = 1;}" could cause
a compile-time trap if x is a float-point
type.
------------------------------------------------------------------------
QUAL-IMP BE Under certain conditions, the optimizer could
leave around some useless LEA instructions.
This has now been fixed.
------------------------------------------------------------------------
QUAL-IMP BE When exporting callback functions, an
incorrect symbol could be used, resulting in
link errors.
------------------------------------------------------------------------
PJ11176 CFE Compiler generates incorrect code for
referencing array of array in structure
with array index of 0.
ie: a.bûiσû0σ.c = 1; a.bûiσ->c = 2;
------------------------------------------------------------------------
PJ11177 CFE If a variable is first declared and then
initialized both with a typedef type and
a qualifier, the compiler generates incorrect
code.
ie: const typedef_name var;
const typedef_name var = 0;
------------------------------------------------------------------------
PJ11179 CFE When initializing a member of a structure
casting the member to _Seg16 pointer causes
unexpected compiler error.
------------------------------------------------------------------------
PJ11180 CFE When #pragma handler is specified for some
functions, the compiler randomly generates
incorrect code that exports some of those
functions.
------------------------------------------------------------------------
PJ11181 C++FE The following message is produced when both
sides of a conditional expression are the
same:
recoverable EDC4005: Error occured in
intermediate file RBEXPR(4902)
------------------------------------------------------------------------
PJ11182 C++FE An initialized function-scope static variable
will cause the C++ front end to GPF if a
compiler temporary is required when
evaluating the initializing expression.
------------------------------------------------------------------------
PJ11183 CRT FILE struct members violate user name space.
------------------------------------------------------------------------
PJ11185 CRT MATHERR not handling domain errors.
=========================================================================
CTC0003 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0003 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10704 BE Incorrect debug information could cause IPMD
to trap in DDE4BE32.DLL while debugging C++
programs.
------------------------------------------------------------------------
PJ10705 BE Incorrect debug information for const member
functions could cause expression evaluation
problems in IPMD.
------------------------------------------------------------------------
PJ10706 BE Incorrect debug information could cause IPMD
to hang when debugging large programs.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect debug information could confuse
IPMD while debugging C++ programs.
------------------------------------------------------------------------
PJ10461 CRT Serialization code used in the runtime
library may cause system traps. This
usually occurs when one of the thread
unexpectedly terminates.
------------------------------------------------------------------------
PJ10703 C++RTL CPPFILT utility truncates the mangled
function names if it is greater than 233
characters.
=========================================================================
CTC0002 is formal Corrective Service
The following fixes are provided in Compiler CS CTC0002 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10544 BE Optimization Problem: Compiling with /G5 /Ms
may optimize SUB ESP,4 into PUSH EAX at
inappropriate places.
------------------------------------------------------------------------
PJ10545 BE Incorrect code may be generated when copying
structures whose size is less than 12 bytes.
------------------------------------------------------------------------
PJ10546 BE Optimization Problem: An internal problem
during common subexpression elimination could
cause a compile-time exception.
------------------------------------------------------------------------
PJ10547 BE Optimization Problem: Incorrect code
generation may result when optimizing a loop
that contains a goto which acts like a break.
------------------------------------------------------------------------
PJ10549 BE Optimization Problem: Instruction scheduling
may move instructions out of the protected
area between _disable and _enable.
------------------------------------------------------------------------
PJ10550 BE Optimization Problem: Returning a floating
point value as an integer may cause problems
on machines without FP co-processors when
compiled with /O and either /G4 or /G5.
------------------------------------------------------------------------
PJ10552 BE The enum data offset field of a COMDAT placed
in a user segment was being set to a non-zero
value.
------------------------------------------------------------------------
PJ10553 BE Optimization Problem: An internal problem
could cause a compile-time trap when
compiling with /O+ /Gf+.
------------------------------------------------------------------------
PJ10556 BE The BE was not growing the number of file
handles available. This caused a
compile-time exception when the BE ran out of
file handles.
------------------------------------------------------------------------
PJ10557 BE Optimization Problem: Calling a 32-bit
function from the last statement of a _Far16
_Pascal function could be compiled
incorrectly.
------------------------------------------------------------------------
PJ10558 BE Optimization Problem: The incorrect register
may be cleared when returning 0.
------------------------------------------------------------------------
PJ10559 BE A constant left-shifted by another constant
may be folded incorrectly when compiled with
/Gi.
------------------------------------------------------------------------
PJ10560 BE Optimization Problem: Tail call optimization
was being incorrectly applied to a call to a
pascal linkage function from a system linkage
function.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Bad register selection
around switch statements could cause
incorrect code generation.
------------------------------------------------------------------------
QUAL-IMP BE With C++, returning a complex structure from
a function whose destructor has been inlined
could be compiled incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE An internal problem could cause a
compile-time trap when compiling, with /Gr
/Rn, a _Far32 _Pascal function that returns a
pointer.
------------------------------------------------------------------------
PJ10478 CFE The preprocessor was getting an internal
compiler error for certain macro expansion.
------------------------------------------------------------------------
PJ10477 CFE If a source/header file contains null
characters, the compiler gets an internal
compiler error and may result in a huge
swapper that may bring down your system.
------------------------------------------------------------------------
QUAL-IMP CFE Error message was being erroneously issued
when '_Export" keyword or '#pragma export'
are specified more than once for the same
object.
------------------------------------------------------------------------
PJ10566 C++FE Conversion function results in an
unconstructed temporary. No constructor was
called for the temporary object.
------------------------------------------------------------------------
PJ10567 C++FE When passing a class as a by value parameter
a temporary is not used and the class is
passed by reference.
------------------------------------------------------------------------
PJ10568 C++FE Member friend incorrectly inherits function
linkage from linkage specifier.
------------------------------------------------------------------------
PJ10569 C++FE Invalid Error message EDC3458 produced.
-----------------------------------------------------------------------
PJ10570 C++FE GPF calling virtual member function of a
template class when the module uses #pragma
data_seg.
------------------------------------------------------------------------
PJ10571 C++FE Invalid error for postfix operator ++ on a
reference in a conditional expression.
------------------------------------------------------------------------
PJ10572 C++FE Invalid error message EDC3276 and GPF when
compiling a conditional expression.
------------------------------------------------------------------------
QUAL-IMP C++FE Runtime GPF accessing static data member
at location 0.
------------------------------------------------------------------------
QUAL-IMP C++FE /Ms causes a runtime GPF when exception
handling is used.
------------------------------------------------------------------------
PJ10462 CRT Thunk Prologue incorrectly probes stack
causing system traps. This may occur
with any 32-16 calls not in thread one.
------------------------------------------------------------------------
QUAL-IMP CRT Free not handling debug object. An debug
memory object (as allocated by the debug
memory routine) can cause system trap
after it is passed to the regular free()
function for freeing.
------------------------------------------------------------------------
QUAL-IMP CRT Spawn/Exec family functions should ignore
net error. If the net error is not ignored,
the search on the PATH stops prematurely,
which may cause spawns/exec functions not to
find any program whose path appears
after the net work path causing the error.
------------------------------------------------------------------------
QUAL-IMP UTIL Compiler dialog did not parse a file when the
file contains a '//' comment. It ignored
lines after the '//' character until a blank
line is reached.
------------------------------------------------------------------------
QUAL-IMP UTIL Dialog did not free up memory when saving
or retrieving information to/from the project
file extended attribute.
=========================================================================
CTC0001 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0001 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ09575 DOC Hitting Ctrl H in EPM for contextual help
did not work for printf or scanf. A change
was made in the DDE4CLIB.NDX file..
------------------------------------------------------------------------
QUAL-IMP ICC When /Fa compilation switch was used to
create assembler file, and a template file
was compiled, the compiler trapped.
------------------------------------------------------------------------
QUAL-IMP ICC Added the description of /Tm option to ICC
help.
------------------------------------------------------------------------
PJ09573 FE Fixed the compiler to disallow illegal
initialization of two-dimensional array
of char with character string without braces.
------------------------------------------------------------------------
PJ09574 FE Structure initialization failed with an
extra set of braces.
------------------------------------------------------------------------
QUAL-IMP FE Usage of _Export keyword caused the compiler
to fail.
------------------------------------------------------------------------
QUAL-IMP UTIL Beta project causes Workframe to trap.
------------------------------------------------------------------------
QUAL-IMP UTIL Update English panels to fix a Japanese
VGA screen.
------------------------------------------------------------------------
QUAL-IMP UTIL Remove the minimize capability of the
notebook dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL No keyboard focus when the notebook dialog
first appears.
------------------------------------------------------------------------
QUAL-IMP UTIL Incorrect focus when Alt key is pressed
inside a dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL /Xc should not generate any command line
include paths.
------------------------------------------------------------------------
QUAL-IMP C++FE The /Ms option is changing the linkage of
internally declared compiler functions.
This can result in runtime traps when using
memory management or C++ exception handling.
------------------------------------------------------------------------
QUAL-IMP C++FE The linker fails when using /ND to rename
a data segment. The compiler is generating
bad code for partially initialized
structures.
------------------------------------------------------------------------
QUAL-IMP C++FE Using the compiler options /La or /Lb causes
the compiler to trap.
------------------------------------------------------------------------
PJ09576 C++FE Linking a program that contains templates
causes an invalid error to be generated by
lib.exe. The error is "LIB0007: Error :
Unable to open D:\00900000.6.OBJ"
------------------------------------------------------------------------
PJ09577 C++FE Large program with many template functions,
(more than 1023), traps at runtime.
------------------------------------------------------------------------
PJ09578 C++FE When linking programs that contain templates
and object files that were generated by TASM
the message: "Unknown Record Type {ox..},
offset {..} is generated.
------------------------------------------------------------------------
PJ09579 C++FE The compiler is incorrectly resolving to a
function template instead of using a
previously declared member function.
------------------------------------------------------------------------
PJ09580 C++FE Object destructors are not always run after
a throw statement.
------------------------------------------------------------------------
PJ09581 C++FE Compiling code that uses _Far16 and _Pascal
keywords causes an internal compiler error:
"Exception #C0000005: 30751 occurred in
file .., function .."
------------------------------------------------------------------------
QUAL-IMP C++RT Incorrectly handling exceptions in multiple
runtime environments.
------------------------------------------------------------------------
PJ09568 BE Compiling source files with the same names
may result in conflicting BSS static areas.
------------------------------------------------------------------------
PJ09570 BE Optimization Problem: Incorrect code could be
generated when the result of a comparison is
subtracted from a variable.
------------------------------------------------------------------------
PJ09571 BE The debug info could become corrupted in very
large files which results in only assembler
view being available within IPMD.
------------------------------------------------------------------------
PJ09572 BE Optimization Problem: An internal problem
during loop optimizations could cause a
compile-time exception in the back-end.
------------------------------------------------------------------------
PJ09569 BE Optimization Problem: Incorrect code could be
produced for loops ending with an
if-then-else where the last statement of the
else is a break.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem in
store removal could cause incorrect code.
-----------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem
may cause a compile-time exception in the
back-end.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect code generation for _Far16 _Pascal
functions that return floating-point types
could cause a run-time exception.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem,
when compiling with /Ti+, may cause incorrect
code generation for breaks within loops.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: The optimizer was
incorrectly folding (0 / x) and (0 % x).
------------------------------------------------------------------------
QUAL-IMP BE Casting a floating-point value to int and
then comparing the result to another int that
was previously cast from a floating-point
value may produce incorrect results.
=========================================================================