Fixes are available
XL C/C++ for Linux Fix Pack 9 (August 2013 Update) for 11.1
April 2011 Update for XL C/C++ for Linux, V11.1
July 2011 Update for XL C/C++ for Linux, V11.1
October 2011 Update for XL C/C++ for Linux, V11.1
June 2012 Update for XL C/C++ for Linux, V11.1
October 2012 Update for XL C/C++ for Linux, V11.1
XL C/C++ for Linux Fix Pack 8 (June 2013 Update) for 11.1
APAR status
Closed as program error.
Error description
The following test case traps if compiled with -O3 -qflttrap=imp -qstrict xlc -O3 -qflttrap=imp -qstrict fltint.c && ./a.out i 0 c '0' Trace/BPT trap ----- $cat fltint.c #include <stdio.h> #include <fptrap.h> void foo(int val, int *dst) { int i; for (i = 0; i < 1; i++) *dst = val; } int zero; void bar(char *fmt) { int rc, i, c, t; double x; rc = 0 ; x = zero ? 0 : 1e100; for (i = 0; i < 1 && rc == 0; i++) { c = fmt[0]; printf("i %d c '%c'\n", i, c); switch (c) { case 'A': break; case 'B': foo((int)x, &t); break; default: rc = 1; break; } } } int main() { (void) fp_enable(TRP_INVALID); bar("0"); return 0; }
Local fix
Use -qflttrap instead of -qflttrap=imp
Problem summary
PROBLEM DESCRIPTION: A potentially trapping floating point instruction could be moved past a guarding branch USERS AFFECTED: Users of -qflttrap or those enabling floating point traps via AIX function calls
Problem conclusion
Two additional flags now suppress moving potentially trapping instructions past branches. With the fix, users can use -qfloat=fenv or -qstrict=guards to guard the condition. For example, compile with xlc -O3 -qflttrap=imp -qfloat=fenv or xlc -O3 -qflttrap=imp -qstrict=guards.
Temporary fix
Comments
APAR Information
APAR number
LI76109
Reported component name
XL C/C++ FOR LI
Reported component ID
5724X1400
Reported release
B10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2011-04-27
Closed date
2011-04-27
Last modified date
2011-04-27
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
XL C/C++ FOR LI
Fixed component ID
5724X1400
Applicable component levels
RB10 PSN IZ89322
UP06/09/13
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSXVZZ","label":"XL C\/C++ for Linux"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"B10","Line of Business":{"code":"LOB57","label":"Power"}}]
Document Information
Modified date:
17 October 2021