SI15174 - ILEC400-CMPL V5R3 C FE PTF #2

PTF ( Program Temporary Fixes ) Cover letter


Order this fix

Abstract

ILEC400-CMPL V5R3 C FE PTF #2


Pre/Co-Requisite PTF / Fix List

REQ  LICENSED      PTF/FIX  LEVEL

TYPE PROGRAM  REL  NUMBER   MIN/MAX  OPTION
---- -------- ---  -------  -------  ------
NONE



NOTICE:
-------
   Application of this PTF may disable or render ineffective programs that
   use system memory addresses not generated by the IBM translator,
   including programs that circumvent control technology designed to limit
   interactive capacity to purchased levels.  This PTF may be a prerequisite
   for future PTFs.  By applying this PTF you authorize and agree to the
   foregoing.

   This PTF is subject to the terms of the license agreement which
   accompanied, or was contained in, the Program for which you are obtaining
   the PTF.  You are not authorized to install or use the PTF except as part
   of a Program for which you have a valid Proof of Entitlement.

   SUBJECT TO ANY WARRANTIES WHICH CAN NOT BE EXCLUDED OR EXCEPT AS EXPLICITLY
   AGREED TO IN THE APPLICABLE LICENSE AGREEMENT OR AN APPLICABLE SUPPORT
   AGREEMENT, IBM MAKES NO WARRANTIES OR CONDITIONS EITHER EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OR CONDITIONS OF
   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON INFRINGEMENT,
   REGARDING THE PTF.

   The applicable license agreement may have been provided to you in printed
   form and/or may be viewed using the Work with Software Agreements (WRKSFWAGR)
   CL command.


APAR Error Description / Circumvention

DESCRIPTION OF PROBLEM FIXED FOR APAR SE16886 :
-----------------------------------------------
   Various ILE C compiler problems were uncovered during early
   V5R3 testing.  This is a list of the problems/symptoms
   corrected by this APAR:

   1> MCH4229 (Dictionary entry not valid) error when #pragma
   argopt is applied to a pointer to function.

   2> Breakpoints in *LIST view are incorrect when *SHOWSYS option
   is used.

   3> Packed decimal division gives incorrect result.

   4> Character parameters are not widened when passed to K&R (old)
   style function.

   5> Error number 3492 for extended ASCII characters of wchar_t
   with LOCALETYPE(*LOCALEUTF).

   6> MCH3601 at runtime with nested OS linkage typedefs.  When a
   program calls two other programs, the parameters are not passed
   to the second program properly.  The result is an MCH3601 error
   when the second program attempts to dereference the parameter
   that is passed to it.

   7> Packed decimal array not initialized properly.  When a global
   array of packed decimals is partially initialized, those
   elements that are not explicitly initialized are not set to
   zero properly.  Any attempt to reference those elements results
   in a MCH1212 "Decimal data error" message.

   8> Compiler ends with MCH3601 error from QCZPXLC for the
   following code segment.

   typedef int (*FUNC) (void);
   int A_func(void) {
       FUNC B_func;
       if (B_func() ? B_func() : 0) {
          return(1);
       }
   }

   9) Message CZM0207 and CZM0206 given for valid signed long long
   constant.
     (signed long long)9223372036854775807LL
     CZM0207(10) Integer constant <>LL out of range.
     CZM0206(30) Suffix of integer constant <>LL is not valid.

CORRECTION FOR APAR SE16886 :
-----------------------------
   Fixes for the various problems listed are as follows:

   1> The compiler was corrected to properly handle this situation.

   2> The debug output for breakpoints was corrected.

   3> Corrected.

   4> The C FE will now receive the K&R style parameters correctly.
   The language standard dictates that the compiler treat non-
   prototyped functions as if their arguments are "int" types.

   5> The compiler was converting incorrectly.  This has been
   fixed.

   6> Nested OS linkage typedefs are handled correctly.

   7> Elements which were not explicitly initialized are now
   properly initialized.

   8> Handling of the virtual function pointer when a function
   pointer is coded in the particular testcase is corrected.

   9> Some acquired space was not being initialized.  The compiler
   was fixed to set the acquired storage to zeros before use.

CIRCUMVENTION FOR APAR SE16886 :
--------------------------------
   There are no workarounds indicated for these problems.

DESCRIPTION OF PROBLEM FIXED FOR APAR SE16887 :
-----------------------------------------------
   When using the #pragma convert directive it is possible for the
   compiler to mistakenly add characters to the end of the CCSID
   value.  This can have two possible results.  First, the
   corrupted CCSID value could be an invalid CCSID.  If this were
   the case, a warning message (CZM0914) would be sent and the
   #pragma convert would be ignored.  Second, the corrupted CCSID
   could be a different, yet valid CCSID.  If this were the case
   the compiler would parse the #pragma convert successfully, but
   then character literal values and string literals in the region
   affected by the #pragma convert would have incorrect values.

CORRECTION FOR APAR SE16887 :
-----------------------------
   The compiler will no longer mistakenly add characters to the end
   of CCSID values for the #pragma convert directive.

CIRCUMVENTION FOR APAR SE16887 :
--------------------------------
   None.

DESCRIPTION OF PROBLEM FIXED FOR APAR SE17119 :
-----------------------------------------------
   CLE source compile fails with error MSGMCH3203 f/VVLDUMP
   t/QBNCRTMD

   The following piece of code fails to compile when
   TERASPACE(*YES) STGMDL(*TERASPACE) options are coded:

   int main()
   {
     if ("xyz") return 0;
     return 1;
   }

   The compile is failing at the IF stmt.  It's generating code for
   the IF incorrectly, which causes the back end translator to
   fail.

CORRECTION FOR APAR SE17119 :
-----------------------------
   Problem is with if("string") test in teraspace.
   The 8-byte address for teraspace needs to be compared against an
   8-byte NIL value.

CIRCUMVENTION FOR APAR SE17119 :
--------------------------------
   1.  Code the if ("string") line differently to avoid the
   failure, such as:
             if ("string" != (char *)0)
             if ("string" != NULL) with #include <stdlib.h>
             char *p = "string"; if (p)
             if ("string" != (void *)0)
   2.  Use DTAMDL(*LLP64)

DESCRIPTION OF PROBLEM FIXED FOR APAR SE18563 :
-----------------------------------------------
   The compiler fails with MCH3601 error when a #pragma argopt
   directive is applied to a pointer to function and the
   function is declared with an empty parameter list.
     int (*fp) ();
     #pragma argopt(fp)
   Application error.  MCH3601 unmonitored by QCZPXLC at
   statement 0000000004, instruction X'0000'.

CORRECTION FOR APAR SE18563 :
-----------------------------
   For a function to be defined as argopt, it must be prototyped.
   Functions defined with an empty parameter list are not
   considered prototyped.  The compiler will be updated to
   detect this situation and report an error, instead of ending
   with MCH3601.

CIRCUMVENTION FOR APAR SE18563 :
--------------------------------
   Remove #pragma argopt for functions which have an empty
   parameter list, as they are not considered prototyped.


Activation Instructions


   None.


Special Instructions


   None.


Default Instructions

   THIS PTF CAN BE APPLIED IMMEDIATE OR DELAYED.



Supersedes

PTF/FIX NO(S).  APAR TITLE LINE
--------------  ------------------------------------------------------------
   SI12758      V5R3 C FE PTF
   SI11799      BREAKPOINT ARE NOT SET CORRECTLY

Summary Information

System..............................................   iSeries
Models..............................................  
Release.............................................   V5R3M0  
Recompile...........................................   N    
Library.............................................   QSYS  
MRI Feature ........................................   NONE  
Cum Level...........................................   C5102530

System i Support

IBM disclaims all warranties, whether express or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. By furnishing this document, IBM grants no licenses to any related patents or copyrights. Copyright © 1996,1997,1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 IBM Corporation. Any trademarks and product or brand names referenced in this document are the property of their respective owners. Consult the Terms of use link for trademark information.

Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

i family

Software version:

V5R3M0

Operating system(s):

OS/400

Reference #:

SI15174

Modified date:

2010-06-01

Translate my page

Machine Translation

Content navigation