home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 2
/
Tech Arsenal 2 (Arsenal Computer).iso
/
casm
/
ctc0010.lst
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
UTF-8
Wrap
File List
|
1994-08-01
|
71.0 KB
|
1,068 lines
C Set ++ Compiler Version 2.0
Fixes List
-----------------------------
*******************************************************************************
* *
* This CSD contains fixes that are common to C/C++ Tools Version 2.0 and *
* Version 2.01. Notwithstanding 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. *
* *
*******************************************************************************
===============================================================================
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 when
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 _alloca
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 int
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 operations
that use the BP register when optimizing 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 is 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 compiling a
statement of the form:
<function typedef> <_Optlink specifier> <function 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-member 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 was generated
by the linker when a user provided 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 unusually large
program with optimization turned on.
-------------------------------------------------------------------------------
PJ14345 CFE #pragma margins and /Sg options causes erroneous /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..ight
-------------------------------------------------------------------------------
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 problem 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 and
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 functions 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 character 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 functions 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.
=========================================================================