PPL-devel
Threads by month
- ----- 2025 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
September 2009
- 11 participants
- 306 discussions

[GIT] ppl/ppl(pip): Proper update of internal state of PIP_Problem object.
by François Galea 29 Sep '09
by François Galea 29 Sep '09
29 Sep '09
Module: ppl/ppl
Branch: pip
Commit: 842215c913d84316b2a73e0a50dd3312c2a04536
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=842215c913d8…
Author: François Galea <francois.galea(a)uvsq.fr>
Date: Tue Sep 29 16:21:25 2009 +0200
Proper update of internal state of PIP_Problem object.
---
src/PIP_Problem.cc | 6 ++++++
src/PIP_Tree.cc | 1 -
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/src/PIP_Problem.cc b/src/PIP_Problem.cc
index ced38e3..a772079 100644
--- a/src/PIP_Problem.cc
+++ b/src/PIP_Problem.cc
@@ -78,11 +78,17 @@ PPL::PIP_Problem::solve() const {
if (current_solution == 0)
x.current_solution = new PIP_Solution_Node(&x);
+ if (input_cs.empty()) {
+ // no constraints: solution = {0}
+ return OPTIMIZED_PIP_PROBLEM;
+ }
x.current_solution->update_tableau(external_space_dim,
first_pending_constraint,
input_cs,
parameters);
+ x.internal_space_dim = external_space_dim;
+ x.first_pending_constraint = input_cs.size();
Matrix initial_context(0, parameters.size()+1);
return_value = x.current_solution->solve(x.current_solution,
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc
index 3853e72..b16c902 100644
--- a/src/PIP_Tree.cc
+++ b/src/PIP_Tree.cc
@@ -619,7 +619,6 @@ PIP_Solution_Node::update_tableau(dimension_type external_space_dim,
tableau.t.add_row(param);
sign.push_back(row_sign(param));
}
- // FIXME: decide emptiness detection (and node removal)
}
void
1
0

[GIT] ppl/ppl(pip): Fixed regression due to change in index ordering in parameter constraints.
by François Galea 29 Sep '09
by François Galea 29 Sep '09
29 Sep '09
Module: ppl/ppl
Branch: pip
Commit: c32a7f8c1c5374b16a0d78934259f1b665fb6525
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=c32a7f8c1c53…
Author: François Galea <francois.galea(a)uvsq.fr>
Date: Tue Sep 29 14:45:48 2009 +0200
Fixed regression due to change in index ordering in parameter constraints.
---
src/PIP_Tree.cc | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc
index 1012838..3853e72 100644
--- a/src/PIP_Tree.cc
+++ b/src/PIP_Tree.cc
@@ -44,7 +44,7 @@ merge_assign(Matrix& x,
const Constraint_System& y,
const Variables_Set ¶meters) {
dimension_type width = x.num_columns();
- PPL_ASSERT(y.empty() || y.begin()->space_dimension() == width-1);
+ PPL_ASSERT(parameters.size() == width-1);
Row row(width, Row::Flags());
Variables_Set::iterator param_begin = parameters.begin();
Variables_Set::iterator param_end = parameters.end();
1
0
Module: ppl/ppl
Branch: floating_point
Commit: fab12fb96c8f5ad9bb8e5a1d230f9107bcb94a28
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=fab12fb96c8f…
Author: Fabio Biselli <fabio.biselli(a)studenti.unipr.it>
Date: Tue Sep 29 15:24:11 2009 +0200
Added a test.
Fixed a bug in left_one_var_refine().
---
src/BD_Shape.templates.hh | 4 +-
tests/Floating_Point_Expression/bdshape2.cc | 39 ++++++++++++++++++++++++++-
2 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/src/BD_Shape.templates.hh b/src/BD_Shape.templates.hh
index 46ba6b7..8a96555 100644
--- a/src/BD_Shape.templates.hh
+++ b/src/BD_Shape.templates.hh
@@ -4496,7 +4496,7 @@ BD_Shape<T>
// where k is an overaproximation of b - y
return;
}
- if (is_left_coeff_minus_one && is_right_coeff_one) {
+ if (is_left_coeff_minus_one && is_right_coeff_minus_one) {
PPL_DIRTY_TEMP(N, c_plus_minus_a_minus);
const FP_Interval_Type& left_a = left.inhomogeneous_term();
const FP_Interval_Type& right_c = right.inhomogeneous_term();
@@ -4505,7 +4505,7 @@ BD_Shape<T>
add_dbm_constraint(right_w_id+1, left_w_id+1, c_plus_minus_a_minus);
return;
}
- if (is_left_coeff_minus_one && is_right_coeff_minus_one) {
+ if (is_left_coeff_minus_one && is_right_coeff_one) {
// if right and left coefficents are negative the constraint
// - x - y <= b
// is ignored;
diff --git a/tests/Floating_Point_Expression/bdshape2.cc b/tests/Floating_Point_Expression/bdshape2.cc
index fab904b..daf8527 100644
--- a/tests/Floating_Point_Expression/bdshape2.cc
+++ b/tests/Floating_Point_Expression/bdshape2.cc
@@ -178,11 +178,48 @@ test04() {
}
+// tests [1, 3] + A <= [4, 4] - B and [4, 4] - B <= [1, 3] + A
+bool
+test05() {
+ Variable A(0);
+ Variable B(1);
+
+ FP_BD_Shape bd1(2);
+ bd1.add_constraint(A <= 2);
+ bd1.add_constraint(A - B <= 3);
+ bd1.add_constraint(B <= 2);
+ FP_BD_Shape known_result(bd1);
+ FP_Interval tmp(4);
+ FP_Linear_Form l2(-B);
+ l2 += tmp;
+ FP_Linear_Form l1(A);
+ tmp.lower() = 1;
+ tmp.upper() = 3;
+ l1 += tmp;
+ bd1.refine_with_linear_form_inequality(l1, l2);
+ print_constraints(bd1, "*** [1, 3] + A <= [4, 4] - B ***");
+
+ print_constraints(known_result, "*** known_result ***");
+
+ bool ok1 = (bd1 == known_result);
+
+ bd1.refine_with_linear_form_inequality(l2, l1);
+ print_constraints(bd1, "*** [4, 4] - B <= [1, 3] + A ***");
+
+ print_constraints(known_result, "*** known_result2 ***");
+
+ bool ok2 = (bd1 == known_result);
+
+ return ok1 && ok2;
+
+}
+
} // namespace
BEGIN_MAIN
//DO_TEST(test01);
//DO_TEST(test02);
//DO_TEST(test03);
- DO_TEST(test04);
+//DO_TEST(test04);
+ DO_TEST(test05);
END_MAIN
1
0

[GIT] ppl/ppl(floating_point): Added a preliminary version of test05. Edited previous tests.
by Roberto Amadini 29 Sep '09
by Roberto Amadini 29 Sep '09
29 Sep '09
Module: ppl/ppl
Branch: floating_point
Commit: 76440424192976381d1d198ece42d1068b211d16
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=764404241929…
Author: Roberto Amadini <r.amadini(a)virgilio.it>
Date: Tue Sep 29 13:02:52 2009 +0200
Added a preliminary version of test05. Edited previous tests.
---
tests/Floating_Point_Expression/digitalfilters1.cc | 82 +++++++++++++++++++-
1 files changed, 80 insertions(+), 2 deletions(-)
diff --git a/tests/Floating_Point_Expression/digitalfilters1.cc b/tests/Floating_Point_Expression/digitalfilters1.cc
index 9061076..92af68a 100644
--- a/tests/Floating_Point_Expression/digitalfilters1.cc
+++ b/tests/Floating_Point_Expression/digitalfilters1.cc
@@ -116,6 +116,7 @@ test03() {
oc.affine_image(R, FP_Linear_Form(X - S));
oc.affine_image(Y, FP_Linear_Form(X));
+
//if (R <= -D) Y = S - D;
FP_Linear_Form lr(R);
FP_Octagonal_Shape oc_then(oc);
@@ -136,7 +137,7 @@ test03() {
tmp = abstract_store.get_interval(Y);
nout << "Y in " << tmp << endl;
- return tmp.is_bounded();
+ return (tmp.lower() == -136);
}
// tests rate limiter using polyhedra abstract domain.
@@ -195,6 +196,82 @@ test04() {
tmp = abstract_store.get_interval(Y);
nout << "Y in " << tmp << endl;
+ return (tmp.lower() == -128);
+}
+
+// tests rate limiter using octagons abstract domain and
+// FP_Linear_Form_Abstract_Store.
+bool
+test05() {
+ Variable X(0); //input
+ Variable D(1); //input
+ Variable Y(2); //output
+ Variable S(3); //last output
+ Variable R(4); //actual rate
+ Var_FP_Expression x(0);
+ Var_FP_Expression d(1);
+ Var_FP_Expression y(2);
+ Var_FP_Expression s(3);
+ Var_FP_Expression r(4);
+ FP_Linear_Form lx(X);
+ FP_Linear_Form ld(D);
+ FP_Linear_Form ly(Y);
+ FP_Linear_Form ls;
+ FP_Linear_Form lr;
+ FP_Interval_Abstract_Store abstract_store(5);
+ FP_Linear_Form_Abstract_Store lf_abstract_store;
+ FP_Interval tmp(-128);
+ tmp.join_assign(128);
+ abstract_store.set_interval(X, tmp);
+ tmp.lower() = 0;
+ tmp.upper() = 16;
+ abstract_store.set_interval(D, tmp);
+ FP_Octagonal_Shape oc(abstract_store);
+
+ nout << "*** n = 0 ***" << endl;
+
+ //S = Y; R = X - S; Y = X;
+ oc.affine_image(S, ly);
+ //assign_linear_form
+ Var_FP_Expression* px = new Var_FP_Expression(0);
+ Var_FP_Expression* ps = new Var_FP_Expression(3);
+ Dif_FP_Expression x_dif_s(px, ps);
+ x_dif_s.linearize(abstract_store, lf_abstract_store, lr);
+ oc.affine_image(R, lr);
+ //assign_linear_form
+ oc.affine_image(Y, lx);
+ //assign_linear_form
+
+ //if (R <= -D) Y = S - D;
+ FP_Octagonal_Shape oc_then(oc);
+ oc_then.refine_with_linear_form_inequality(lr, -ld);
+ Var_FP_Expression* ps1 = new Var_FP_Expression(3);
+ Var_FP_Expression* pd = new Var_FP_Expression(2);
+ Dif_FP_Expression s1_dif_d(ps1, pd);
+ s1_dif_d.linearize(abstract_store, lf_abstract_store, ly);
+ oc_then.affine_image(Y, ly);
+ //assign_linear_form
+ oc.refine_with_linear_form_inequality(-ld, lr);
+ oc.upper_bound_assign(oc_then);
+ oc.refine_fp_interval_abstract_store(abstract_store);
+ //lub on FP_Interval_abstract_store
+
+ //if (R >= D) Y = S + D;
+ oc_then = oc;
+ oc_then.refine_with_linear_form_inequality(ld, lr);
+ Var_FP_Expression* ps2 = new Var_FP_Expression(3);
+ Var_FP_Expression* pd1 = new Var_FP_Expression(2);
+ Sum_FP_Expression s2_sum_d1(ps2, pd1);
+ s2_sum_d1.linearize(abstract_store, lf_abstract_store, ly);
+ oc_then.affine_image(Y, ly);
+ //assign_linear_form
+ oc.refine_with_linear_form_inequality(lr, ld);
+ oc.upper_bound_assign(oc_then);
+ oc.refine_fp_interval_abstract_store(abstract_store);
+ //lub on FP_Interval_abstract_store
+
+ tmp = abstract_store.get_interval(Y);
+ nout << "Y in " << tmp << endl;
return tmp.is_bounded();
}
@@ -202,7 +279,8 @@ test04() {
BEGIN_MAIN
DO_TEST(test01);
- //DO_TEST(test02);
+ DO_TEST(test02);
DO_TEST(test03);
DO_TEST(test04);
+ DO_TEST(test05);
END_MAIN
1
0
Module: ppl/ppl
Branch: floating_point
Commit: 6b0038a621b7c3eb5d18ad1174d9bc05525900d3
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=6b0038a621b7…
Author: Fabio Biselli <fabio.biselli(a)studenti.unipr.it>
Date: Tue Sep 29 14:57:47 2009 +0200
Added two tests;
Fixed a bug in left_one_var_refine() function.
---
src/BD_Shape.templates.hh | 2 +-
tests/Floating_Point_Expression/Makefile.am | 5 ++-
tests/Floating_Point_Expression/bdshape2.cc | 49 ++++++++++++++++++++++++--
3 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/src/BD_Shape.templates.hh b/src/BD_Shape.templates.hh
index 657a1c4..46ba6b7 100644
--- a/src/BD_Shape.templates.hh
+++ b/src/BD_Shape.templates.hh
@@ -4485,7 +4485,7 @@ BD_Shape<T>
const FP_Interval_Type& right_c = right.inhomogeneous_term();
sub_assign_r(c_plus_minus_a_minus, right_c.upper(), left_a.lower(),
ROUND_UP);
- add_dbm_constraint(left_w_id+1, right_w_id+1, c_plus_minus_a_minus);
+ add_dbm_constraint(right_w_id+1, left_w_id+1, c_plus_minus_a_minus);
return;
}
if (is_left_coeff_one && is_right_coeff_minus_one) {
diff --git a/tests/Floating_Point_Expression/Makefile.am b/tests/Floating_Point_Expression/Makefile.am
index fd77e8a..941c905 100644
--- a/tests/Floating_Point_Expression/Makefile.am
+++ b/tests/Floating_Point_Expression/Makefile.am
@@ -51,7 +51,8 @@ $(top_builddir)/src/libppl.la \
@extra_libraries@
ORIGINAL_TESTS = \
-digitalfilters1
+digitalfilters1 \
+bdshape2
#bdshape1 \
#floatingpointexpr1 \
@@ -134,6 +135,8 @@ print_INSTANCES:
digitalfilters1_SOURCES = digitalfilters1.cc
+bdshape2_SOURCE = bdshape2.cc
+
#polyhedron2_SOURCES = polyhedron2.cc
#polyhedron1_SOURCES = polyhedron1.cc
diff --git a/tests/Floating_Point_Expression/bdshape2.cc b/tests/Floating_Point_Expression/bdshape2.cc
index f4b4b47..fab904b 100644
--- a/tests/Floating_Point_Expression/bdshape2.cc
+++ b/tests/Floating_Point_Expression/bdshape2.cc
@@ -107,7 +107,7 @@ test03() {
Variable A(0);
Variable B(1);
- FP_Octagonal_Shape bd1(3);
+ FP_Octagonal_Shape bd1(2);
bd1.add_constraint(A <= 2);
bd1.add_constraint(A - B <= 3);
bd1.add_constraint(B <= 2);
@@ -138,10 +138,51 @@ test03() {
return ok1 && ok2;
}
+
+// tests [-0.5, 1] + A <= [2.5, 5] + B and [2.5, 5] + B <= [-0.5, 1] + A
+bool
+test04() {
+ Variable A(0);
+ Variable B(1);
+
+ FP_BD_Shape bd1(2);
+ bd1.add_constraint(A <= 2);
+ bd1.add_constraint(A - B <= 3);
+ bd1.add_constraint(B <= 2);
+ FP_BD_Shape known_result(bd1);
+ FP_Interval tmp(-0.5);
+ tmp.join_assign(1);
+ FP_Linear_Form l1(A);
+ l1 += tmp;
+ FP_Linear_Form l2(B);
+ tmp.lower() = 2.5;
+ tmp.upper() = 5;
+ l2 += tmp;
+ bd1.refine_with_linear_form_inequality(l1, l2);
+ print_constraints(bd1, "*** [-0.5, 1] + A <= [2.5, 5] + B ***");
+
+ known_result.add_constraint(2*A - 2*B <= 11);
+ print_constraints(known_result, "*** known_result ***");
+
+ bool ok1 = (bd1 == known_result);
+
+ bd1.refine_with_linear_form_inequality(l2, l1);
+ print_constraints(bd1, "*** [2.5, 5] + B <= [-0.5, 1] + A ***");
+
+ known_result.add_constraint((2*B) - (2*A) <= -3);
+ print_constraints(known_result, "*** known_result2 ***");
+
+ bool ok2 = (bd1 == known_result);
+
+ return ok1 && ok2;
+
+}
+
} // namespace
BEGIN_MAIN
- DO_TEST(test01);
- DO_TEST(test02);
-// DO_TEST(test03);
+//DO_TEST(test01);
+//DO_TEST(test02);
+//DO_TEST(test03);
+ DO_TEST(test04);
END_MAIN
1
0
Folks,
I am trying to compile the latest PPL on bluefire, an IBM Power6 running
AIX 5.3, with IBM's compiler xlc/xlC
(http://www.cisl.ucar.edu/docs/bluefire/be_quickstart.html#software)
Unfortunately, while the configure script is happy (see config.log for
details), the compilation fails as described in the attached make.log
and I have no clues about it.
Note that before it was failing with the following one, which I believe
was due to a different make version being used, but might be the first
culprit (I have the make.log for this too but I'm not sending it right now):
/usr/bin/sed -f ./ppl-config.sed >ppl-config.h
"../ppl-config.h", line 1.0: 1540-0809 (W) The source file is empty.
Do you have any recommendations about what I can do to fix the issue?
PS: I speak Italian, but I'm not sure if this list is read just by
Italian, despite its .it domain.
Thanks and Regards,
Davide Del Vento, Consulting Services Software Engineer
NCAR Computational & Information Services Laboratory
http://www.cisl.ucar.edu/hss/csg/
office: Mesa Lab, Room 42B
phone: (303) 497-1233
mobile: (720) 240-1704
email: ddvento(a)ucar.edu
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by the Parma Polyhedra Library configure 0.10.2, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ ./configure --prefix=/contrib/ppl-0.10.2 --with-libgmp-prefix=/contrib/gmp-4.3.1/ --with-java=/usr/java5/ --enable-cxx
## --------- ##
## Platform. ##
## --------- ##
hostname = be1005en.ucar.edu
uname -m = 00CBF2314C00
uname -r = 3
uname -s = AIX
uname -v = 5
/usr/bin/uname -p = powerpc
/bin/uname -X = unknown
/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = 5.3.0.0
/bin/universe = unknown
PATH: /contrib/Modules/3.2.6/bin
PATH: /usr/java5/bin/
PATH: /blhome/ddvento/bin/
PATH: /blhome/ddvento/opt/bin/
PATH: /usr/local/lsf/7.0/aix5-64/etc
PATH: /usr/local/lsf/7.0/aix5-64/bin
PATH: /usr/bin
PATH: /etc
PATH: /usr/sbin
PATH: /usr/ucb
PATH: /usr/bin/X11
PATH: /sbin
PATH: /usr/java5/jre/bin
PATH: /usr/java5/bin
PATH: /bin
PATH: /usr/bin/
PATH: /usr/local/bin/
PATH: /usr/vac/bin/
PATH: /usr/vacpp/bin/
PATH: /contrib/Python-2.5.2/bin/
PATH: /contrib/bin/
## ----------- ##
## Core tests. ##
## ----------- ##
configure:2298: checking build system type
configure:2316: result: powerpc-ibm-aix5.3.0.0
configure:2338: checking host system type
configure:2353: result: powerpc-ibm-aix5.3.0.0
configure:2393: checking for a BSD-compatible install
configure:2461: result: /usr/local/bin//install -c
configure:2472: checking whether build environment is sane
configure:2515: result: yes
configure:2540: checking for a thread-safe mkdir -p
configure:2579: result: /usr/local/bin//mkdir -p
configure:2592: checking for gawk
configure:2622: result: no
configure:2592: checking for mawk
configure:2622: result: no
configure:2592: checking for nawk
configure:2608: found /usr/bin/nawk
configure:2619: result: nawk
configure:2630: checking whether make sets $(MAKE)
configure:2652: result: yes
configure:2822: checking how to create a ustar tar archive
configure:2835: tar --version
tar: illegal option -- -
Usage: tar -{c|r|t|u|x} [ -BdDEFhilmopRsUvw ] [ -Number ] [ -f TarFile ]
[ -b Blocks ] [ -S [ Feet ] | [ Feet@Density ] | [ Blocksb ] ]
[ -L InputList ] [-X ExcludeFile] [ -N Blocks ] [ -C Directory ] File ...
Usage: tar {c|r|t|u|x} [ bBdDEfFhilLXmNopRsSUvw[0-9] ]
[ Blocks ] [ TarFile ] [ InputList ] [ ExcludeFile ]
[ [ Feet ] | [ Feet@Density ] | [ Blocksb ] ] [-C Directory ] File ...
configure:2838: $? = 1
configure:2835: gnutar --version
./configure[2836]: gnutar: not found
configure:2838: $? = 127
configure:2835: gtar --version
tar (GNU tar) 1.19
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
configure:2838: $? = 0
configure:2878: tardir=conftest.dir && eval gtar --format=ustar -chf - "$tardir" >conftest.tar
configure:2881: $? = 0
configure:2885: gtar -xf - <conftest.tar
configure:2888: $? = 0
configure:2901: result: gnutar
configure:3027: checking for gcc
configure:3054: result: xlc
configure:3286: checking for C compiler version
configure:3294: xlc --version >&5
xlc: 1501-216 (W) command option --version is not recognized - passed to ld
xlc(1) IBM (2007) xlc(1)
NAME
xlc, xlc++, xlC, cc, c89, c99, xlCcore, xlc++core and
related commands - invoke the IBM XL C/C++ compiler.
SYNTAX
<invocation-command> [ <option> | <inputfile> ] ...
DESCRIPTION
The invocation commands compile C and C++ source files.
The commands and their recommended uses are described
below.
Invocations Usage (supported standards)
_________________________________________________________
xlc, xlc_r, xlc_r4, Compile C source files.
xlc_r7, xlc128, xlc128_r, (ANSI C89, ISO C99,
xlc128_r4, xlc128_r7 IBM language extensions)
xlc++, xlc++_r, xlc++_r4, Compile C++ source files.
xlc++_r7, xlc++128,
xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC, xlC_r,
xlC_r4, xlC_r7, xlC128,
xlC128_r, xlC128_r4,
xlC128_r7
cc, cc_r, cc_r4, cc_r7, Compile legacy code that
cc128, cc128_r, cc128_r4, does not conform to Standard
cc128_r7 C. (pre-ANSI C)
c89, c89_r, c89_r4, Compile C source files with
c89_r7, c89_128, c89_128_r, strict conformance to the
c89_128_r4, c89_128_r7 C89 standard. (ANSI C89)
c99, c99_r, c99_r4, Compile C source files with
c99_r7, c99_128, c99_128_r, strict conformance to the
c99_128_r4, c99_128_r7 C99 standard. (ISO 99)
xlc++core, xlc++core_r, Compile C++ source files
xlc++core_r7, xlc++core128, but the compiler will
xlc++core128_r, link only to the core of
xlc++core128_r7, xlCcore, the runtime library.
xlCcore_r, xlCcore_r7,
xlC128core, xlC128core_r,
xlC128core_r7
gxlc Accepts GNU C options, maps
them to their equivalent XL
C option, then invokes xlc.
gxlc++, gxlC Accepts GNU C/C++ options, maps
them to their equivalent XL
C++ option,then invokes xlc++.
The main difference between these commands is that they use different
default options (which are set in the configuration file
/etc/vac.cfg.XX, where XX represents the AIX version).
See the Compiler Reference for more information on these invocation
commands.
All invocations with a suffix of _r allow for thread-safe
compilation. Use these commands to create threaded
applications or to link programs that use multi-threading.
These commands also process assembler source files and
object files. The compiler calls the link editor to
produce a single executable or shared library, unless you
specify the compiler options that prevent object files
from being linked.
The input file may have any of the following suffixes:
.C, .cpp, .cxx, C++ source file
.cc, .cp, .c++
.c C source file
.i Preprocessed C or C++ source file
.a Archive file
.o Object file for ld command
.s Assembler source file
.S Assembler source file that
needs preprocessing
.so Shared object file
OPTIONS
Compiler options are categorized by their functions and
may be used to set the compiler behavior. Options can be
flag options or keyword options.
Keyword options are specified in one of the following
ways:
-q<option>
-q<option>=<suboption>
-q<option>=<suboption>:<suboption>
Keyword options with no suboptions represent switches that
may be either on or off. -qx turns the switch on, and
-qnox turns the switch off. For example, -qsource tells
the compiler to produce a source listing and -qnosource
tells the compiler not to produce a source listing.
Output control options
-c Instructs the compiler to pass source files to the
compiler only. The compiled source files are not
sent to the linker. This option produces an object
file, file_name.o, for each valid source file.
-C | -C!
Preserves or removes comments in preprocessed
output.
When -C is used with the -E option, comments are
written to standard output; with the -P option,
comments are written to an output file.
When -C! is in effect, comments are removed.
-E Instructs the compiler to preprocess the source
files named in the compiler invocation and creates
an output preprocessed source file.
-G Tells the linkage editor to create a shared object
enabled for runtime linking.
-M Creates an output file that contains information to
be included in a "make" description file. This is
equivalent to specifying -qmakedep without a
suboption.
-qmakedep[=gcc]
Creates an output file that contains targets
suitable for inclusion in a description file for
the make command that describes the dependencies of
the main source file in the compilation.
Specifying 'gcc' changes the format of the
generated dependency file.
Specifying -qmakedep without 'gcc' is equivalent to
specifying -M.
-MF<path>
Specifies the target for the output generated by
the -qmakedep or -M options, where <path> can be a
full directory path or file name. Note that "-MF
<path>" (with a space before the argument) is also
acceptable. This option only has effect when
specified with -qmakedep or -M.
(C)-qmkshrobj, (C++)-qmkshrobj[=<priority>]
Creates a shared object from the generated object
files.
The optional number specifies the priority level
for initialization of all static objects in the
file. <priority> may be any number from -214782623
(highest priority-initialized first) to 214783647
(lowest priority-initialized last). If no priority
is specified, the default priority of 0 is used.
The priority is not used when linking shared
objects (using the xlc command) written in C.
Specifying -qmkshrobj implies -qpic.
See related options, -e <name> and -o <path>.
-o <path>
Specifies an output location for the object,
assembler, or executable files created by the
compiler. When the -o option is used during
compiler invocation, <path> can be the name of
either a file or a directory.
Default: -o a.out
-P Preprocesses the C or C++ source files named in the
compiler invocation and creates an output
preprocessed source file for each input source
file. The preprocessed output file has the same
name as the output file, with a .i suffix.
-S Generates an assembler language file (.s) for each
source file. The resulting .s files can be
assembled to produce object .o files or an
executable file (a.out).
Input control options
-+ (C++) Compiles any file, <file_name.nnn>, as a C++
language file, where <nnn> is any suffix other than
.a, .so, .o, .s, or .S. This option is equivalent
to the -qsourcetype=c++ option and should not be
used together with the -qsourcetype option.
-qcinc=<directory_path> | -qnocinc
(C++) Instructs the compiler to place an extern "C"
{ } wrapper around the contents of an include file,
where <directory_path> is the location of that
include file.
Default: -qnocinc
-I<directory_path>
Specifies an additional search path for include
file names that do not specify an absolute path.
Default:
The following directories are searched, in the
following order, after any paths that are
specified by the -I option:
1) The current directory.
2) The directory where the source file is
located.
3) /usr/include.
-qidirfirst | -qnoidirfirst
Specifies the search order for files included with
the #include "<file_name>" directive. Use
-qidirfirst with the -I option. If -qidirfirst is
specified, the directories specified by the
-I<directory_path> option are searched before the
directory in which the current file resides.
Default: -qnoidirfirst
-qinclude=<file_path>
Specifies additional header files that are included
before the first line of a source file in a
compilation unit and ahead of any headers which may
be specified by an #include statement on the first
line of the source file.
-qsourcetype=<type>
Determines whether to treat all recognized source
files as if they are of the source type specified
by <type> (regardless of file name suffix), or
whether to use the file name suffix to determine
the programming language.
Note that the option only affects files that are
specified on the command line following the option,
but not those that precede the option. The
-qsourcetype option should not be used together
with the -+ option. The suboptions are:
default
The compiler assumes that the programming
language of a source file will be implied by
its file name suffix.
c
The compiler compiles all source files
following this option as if they are C
language source files.
assembler
The compiler compiles all source files
following this option as if they are assembler
language source files.
assembler-with-cpp
The compiler compiles all source files
following this option as if they are assembler
language source files that need preprocessing.
Default: -qsourcetype=default
-qstdinc | -qnostdinc
Specifies whether the standard directories are
searched for files included by the #include
<file_name> and #include "file_name" directives.
The -qnostdinc option excludes the standard include
directories from the search path.
Default: -qstdinc
Language element control options
-qaltivec | -qnoaltivec
Instructs the compiler to support vector data types
and operators and is accepted when the architecture
specified by the -qarch option supports vector
instructions and -qenablevmx is enabled.
Default: -qnoaltivec
-qasm[=<sub>] | -qnoasm[=<sub>]
Controls the interpretation of, and subsequent
generation of code for, asm statements.
In (C), <sub> can only be 'gcc'.
In (C++), <sub> can be:
gcc
Interprets asm statements using GCC syntax.
stdcpp
Interprets asm statements using stdcpp syntax.
Default:
(C++) -qnoasm=stdcpp in compat366 or strict98
modes, and -qasm=gcc otherwise.
(C) -qasm=gcc
-qcpluscmt | -qnocpluscmt
(C) Permits the usage of "//" to introduce a
comment that lasts until the end of the current
source line, as in C++.
Default:
o -qcpluscmt when you invoke the compiler with
xlc, xlc_r, cc, or cc_r, or when -qlanglvl is
set to stdc99 or extc99.
o -qnocpluscmt otherwise.
-D<name>[=[<def>]]
Defines <name> as in the #define directive. <def>
is an optional definition or value assigned to
<name>. Specifying -D<name>= (with no <def>) is
equivalent to #define <name>; specifying
-D<name> is equivalent to #define <name> 1.
-qdbcs | -qnodbcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qmbcs.
Default: -qnodbcs
-qdfp | -qnodfp
Enables compiler support for decimal floating-point
types and literals.
Default: -qnodpf
-qdigraph | -qnodigraph
Allows usage of digraph key combinations or
keywords to represent characters not found on some
keyboards.
Default:
(C) -qdigraph when -qlanglvl is extc89,
extended, extc99 or stdc99, and -qnodigraph
otherwise.
(C++) -qdigraph
-qdollar | -qnodollar
Allows the '$' symbol to be used in the names of
identifiers. When -qdollar is in effect, the dollar
symbol '$' in an identifier is treated as a base
character. If the options -qnodollar and
-qlanglvl=ucs are both enabled, the dollar symbol
is treated as an extended character.
Default: -qnodollar
-qignprag=<option>
Instructs the compiler to ignore certain pragma
statements. The options are:
disjoint
Ignores all #pragma disjoint directives in the
source file.
isolated_call
Ignores all #pragma isolated_call directives
in the source file.
all
Ignores all #pragma isolated_call directives
and #pragma disjoint directives in the source
file.
omp
Ignores all OpenMP parallel processing
directives in the source file.
ibm
(C) Ignores all #pragma ibm snapshot
directives and all IBM SMP directives in the
source file.
-qkeyword=<keyword> | -qnokeyword=<keyword>
Controls whether the specified name is treated as a
keyword or as an identifier whenever it appears in
a program source.
By default, all the built-in keywords defined in
the C and C++ language standards are reserved as
keywords. You cannot add keywords to the language
with this option. However, you can use
-qnokeyword=<keyword> to disable built-in keywords,
and use -qkeyword=<keyword> to reinstate those
keywords.
(C) This option can also be used with the following
C keywords: restrict, typeof, asm and inline.
(C++) This option can be used with all C++ built-in
keywords.
-qlanglvl=<suboptions_list>
Selects the language level and language options for
the compilation. <suboptions_list> is a colon-
separated list of suboptions.
(C) For C language programs, <suboptions_list> is
{classic|extended|saa|saa12|stdc89|stdc99|extc89|extc99}:{ucs|noucs}.
classic
Allows the compilation of non-stdc89 programs,
and conforms closely to the K&R level
preprocessor.
extended
Provides compatibility with the RT compiler
and classic. This language level is based on
C89.
saa
Compilation conforms to the current SAA(R) C
CPI language definition. This is currently SAA
C Level 2.
saal2
Compilation conforms to the SAA C Level 2 CPI
language definition, with some exceptions.
stdc89
Compilation conforms to the ANSI C89 standard,
also known as ISO C90.
stdc99
Compilation conforms to the ISO C99 standard.
extc89
Compilation conforms to the ANSI C89 standard,
and accepts implementation-specific language
extensions.
extc99
Compilation conforms to the ISO C99 standard,
and accepts implementation-specific language
extensions.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in program
source code.
Default:
o -qlanglvl=ucs under language levels stdc99
and extc99.
o -qlanglvl=noucs for all other language
levels.
(C++) The suboptions for C++ language programs are:
compat366
Compilation conforms to some, but not all, IBM
C and C++ Compilers V3.6 features.
extended
Compilation is based on the strict98, with
some differences to accommodate extended
language features.
strict98
Compilation conforms to the ISO C++ standard
for C++ programs.
anonstruct | noanonstruct
This suboption controls whether anonymous
structs and anonymous classes are allowed in
your C++ source. By default, the compiler
allows anonymous structs.
anonunion | noanonunion
This suboption controls what members are
allowed in anonymous unions. When this
suboption is set to anonunion, anonymous
unions can have members of all types that
standard C++ allows in non-anonymous unions.
ansifor | noansifor
This suboption controls whether scope rules
defined in the C++ standard apply to names
declared in for-init statements. By default,
standard C++ rules are used.
ansisinit | noansisinit
This suboption can be used to select between
old (v3.6 or earlier) and current (v5.0 or
later) compiler object compatibility.
c99__func__ | noc99__func__
This suboption instructs the compiler to
recognize the C99 __func__ identifier.
The c99__func__ suboption is enabled by
default when -qlanglvl=extended is enabled. It
can be enabled for any language level by
specifying -qlanglvl=c99__func__, or disabled
by specifying -qlanglvl=noc99__func__.
c99complex | noc99complex
This suboption instructs the compiler to
recognize C99 complex data types and related
keywords. It is set by default for
-qlanglvl=extended.
c99complexheader | noc99complexheader
This suboption instructs the compiler to use
the C99 complex.h header file.
c99compoundliteral | noc99compoundliteral
This suboption instructs the compiler to
support the C99 compound literal feature. It
is set by default for -qlanglvl=extended.
c99hexfloat | noc99hexfloat
This suboption enables support for C99-style
hexadecimal floating constants in C++
applications. It is on by default for
-qlanglvl=extended.
c99vla | noc99vla
When c99vla is enabled, the compiler will
support the use of C99-type variable length
arrays in your C++ applications. It is set by
default for -qlanglvl=extended.
compatzea | nocompatzea
The -qlanglvl=compatzea option is a
compatibility option that lets you continue to
use a zero extent array with dimension of 1.
Default: -qlanglvl=nocompatzea
Specifying -qlanglvl=compatzea has effect only
if -qlanglvl=zeroextarray is also enabled.
dependentbaselookup | nodependentbaselookup
Provides the ability to specify compilation in
conformance with issue 213 of TC1 of the C++
standard.
Default: -qlanglvl=dependentbaselookup
gnu_assert | nognu_assert
Enables or disables support for the following
GNU C system identification assertions:
'#assert', '#unassert', '#cpu', '#machine',
'#system'.
gnu_complex | nognu_complex
This suboption instructs the compiler to
recognize GNU complex data types and related
keywords.
gnu_computedgoto | nognu_computedgoto
Enables support for computed gotos. This
suboption is enabled for -qlanglvl=extended.
gnu_explicitregvar | nognu_explicitregvar
(C) Allows you to control whether the compiler
accepts and ignores the specification of
explicit registers for variables.
gnu_externtemplate | nognu_externtemplate
This suboption enables or disables extern
template instantiations.
Default:
gnu_externtemplate is enabled by default
when compiling to the extended language
level.
gnu_include_next | nognu_include_next
Enables or disables support for the GNU C
#include_next preprocessor directive.
Default:
gnu_include_next is enabled by default for
-qlanglvl=extended.
gnu_labelvalue | nognu_labelvalue
Enables or disables support for labels as
values.
Default:
gnu_labelvalue is enabled by default for
-qlanglvl=extended.
gnu_locallabel | nognu_locallabel
Enables or disables support for locally-
declared labels.
gnu_membernamereuse | nognu_membernamereuse
Enables or disables reusing a template name in
a member list as a typedef.
gnu_suffixij | nognu_suffixij
Enables or disables support for GCC style
complex numbers. If gnu_suffixij is specified,
a complex number can be ended with suffix i/I
or j/J.
Default:
gnu_suffixij is enabled by default for
-qlanglvl=extended.
gnu_varargmacros | nognu_varargmacros
This option is similar to
-qlanglvl=varargmacros. For the list of the
main differences, refer to the Compiler
Reference.
Default:
gnu_varargmacros is set by default for
-qlanglvl=extended.
gnu_warning | nognu_warning
Enables or disables support for the GNU C
#warning preprocessor directive.
illptom | noillptom
This suboption controls what expressions can
be used to form pointers to members. C/C++ can
accept some forms that are in common use, but
do not conform to the C++ standard. The
compiler allows these forms by default.
implicitint | noimplicitint
This suboption controls whether the compiler
will accept missing or partially specified
types as implicitly specifying 'int'. This is
no longer accepted in the standard but may
exist in legacy code.
With the suboption set to noimplicitint, all
types must be fully specified.
With the suboption set to implicitint, a
function declaration at namespace scope or in
a member list will implicitly be declared to
return int.
newexcp | nonewexcp
This suboption determines whether or not the
C++ new operator throws an exception. If the
-qlanglvl=newexcp option is specified, the
standard exception std::bad_alloc is thrown
when the requested memory allocation fails.
This option does not apply to the nothrow
versions of the new operator.
The standard implementation of the new
operators fully support exceptions. For
compatibility with previous versions of
VisualAge C++, these operators return 0 by
default.
offsetnonpod | nooffsetnonpod
This suboption controls whether the offsetof
macro can be applied to classes that are not
data-only.
By default, the compiler allows offsetof to be
used with non-POD classes.
olddigraph | noolddigraph
This option controls whether old-style
digraphs are allowed in your C++ source. It
applies only when -qdigraph is also set.
By default, the compiler supports only the
digraphs specified in the C++ standard.
oldfriend | nooldfriend
This option controls whether friend
declarations that name classes without
elaborated class names are treated as C++
errors.
By default, the compiler lets you declare a
friend class without elaborating the name of
the class with the keyword class.
oldmath | nooldmath
This suboption controls which versions of math
function declarations in <math.h> are included
when you specify math.h as an included or
primary source file.
By default, the new standard math functions
are used. Build with -qlanglvl=nooldmath for
strict compliance with the C++ standard. For
compatibility with modules that were built
with earlier versions of VisualAge C++ and
predecessor products, you may need to build
with -qlanglvl=oldmath.
oldtempacc | nooldtempacc
This suboption controls whether access to a
copy constructor to create a temporary object
is always checked, even if creation of the
temporary object is avoided.
By default, the compiler suppresses the access
checking.
oldtmplalign | nooldtmplalign
Controls whether alignment rules specified for
nested templates are ignored.
When the default, -qlanglvl=nooldtmplalign, is
in effect, these alignment rules are not
ignored.
Specify -qlanglvl=oldtmplalign for
compatibility with VisualAge C++ 4.0 and
predecessor products.
oldtmplspec | nooldtmplspec
This suboption controls whether template
specializations that do not conform to the C++
standard are allowed.
By default, the compiler allows these old
specializations (-qlanglvl=nooldtmplspec).
redefmac | noredefmac
Specifies whether a macro can be redefined
without a prior #undef or undefine()
statement.
trailenum | notrailenum
This suboption controls whether trailing
commas are allowed in enum declarations.
By default, the compiler allows one or more
trailing commas at the end of the enumerator
list.
typedefclass | notypedefclass
This suboption provides backwards
compatibility with previous versions of
VisualAge C++ and predecessor products.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in C++
sources.
Default: -qlanglvl=noucs
varargmacros | novarargmacros
This C99 feature allows the use of a variable
argument list in function-like macros in your
C++ applications.
zeroextarray | nozeroextarray
This suboption controls whether zero-extent
arrays are allowed as the last non-static data
member in a class definition.
By default, the compiler allows arrays with
zero elements.
The default depends on the invocation command used:
Command Default
_____________________________________________
xlC/xlc++ extended
xlc extc99
cc extended
c89 stdc89
c99 stdc99
-qlonglong | -qnolonglong
Allows IBM-style long long integers. This option
cannot be used with -qlanglvl=stdc99 or
-qlanglvl=extc99.
Default:
o -qlonglong when compiling with xlc, xlc++,
xlC or cc.
o -qnolonglong when compiling with c89 or c99.
-qmacpstr | -qnomacpstr
Converts Pascal string literals into null-
terminated strings where the first byte contains
the length of the string.
Default: -qnomacpstr
-qmbcs | -qnombcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qdbcs.
Default: -qnombcs
-qstaticinline | -qnostaticinline
(C++) Controls whether inline functions are treated
as static or extern. Specifying -qnostaticinline
means the inline functions are treated as having
extern linkage.
Default: -qnostaticinline
-qtabsize=<size>
Changes the length of tabs as perceived by the
compiler, where <size> is the number of character
spaces representing a tab in the source program.
Default: -qtabsize=8
-qtrigraph | -qnotrigraph
Allows trigraph key combinations to represent
characters not found on some keyboards.
Default: -qtrigraph
However, if -qlanglvl=classic is enabled or
implied, the trigraphs are not recognized by
default.
-U<name>
Undefines the identifier <name> defined by the
compiler or by the -D<name> option.
-qutf | -qnoutf
Enables recognition of UTF literal syntax.
Default:
o (C) -qnoutf
o (C++) -qutf for all language levels except
-qlanglvl=strict98
o (C++) -qnoutf when -qlanglvl=strict98 is in
effect
Template control options (C++ only)
-qtempinc[=<directory_path>] | -qnotempinc
(C++) Generates separate template include files for
template functions and class declarations, and
places these files in a directory which can be
optionally specified.
Default: -qnotempinc
-qtemplatedepth=<number>
(C++) Specifies the maximum number of recursively
instantiated template specializations that will be
processed by the compiler. <number> can be a value
between 1 and INT_MAX.
Default: -qtemplatedepth=300
-qtemplaterecompile | -qnotemplaterecompile
(C++) Helps manage dependencies between compilation
units that have been compiled using the
-qtemplateregistry compiler option.
Default: -qnotemplaterecompile
-qtemplateregistry[=<filename>] | -qnotemplateregistry
(C++) Maintains records of all templates as they
are encountered in the source and ensures that only
one instantiation of each template is made.
Default: -qnotemplateregistry
-qtempmax=<number>
(C++) Specifies the maximum number of template
include files to be generated by the -qtempinc
option for each header file.
Default: -qtempmax=1
-qtmplinst=<suboption>
(C++) Allows you to manage implicit template
instantiations. <suboption> is one of the
following:
none
Instantiates only the inline functions. If
this is specified, -qtempinc and
-qtemplateregistry are ignored.
noinline
Suppresses all implicit instantiations.
auto
Handles the implicit instantiations according
to the -qtempinc and -qtemplateregistry
options. If both options are off, then
implicit instantiations are always performed.
always
Always perform implicit instantiations. This
will ignore the -qtempinc and
-qtemplateregistry options.
Default: -qtmplinst=auto
-qtmplparse=<option>
(C++) Controls whether parsing and semantic
checking are applied to template definition
implementations or only to template instantiations.
The compiler has the option to produce warning or
error messages. The suboptions are:
no
Does not parse, to reduce the number of errors
issued in code written for previous versions
of the compiler.
warn
Parses template definitions and issues warning
messages for semantic errors.
error
Treats problems in template definitions as
errors, even if the template is not
instantiated.
Default: -qtmplparse=no
Floating-point and integer control options
-qbitfields={signed|unsigned}
Specifies whether bit fields will be signed or
unsigned.
Default: -qbitfields=unsigned
-qchars={signed|unsigned}
Specifies whether the data type char will be signed
or unsigned.
Default: -qchars=unsigned
-qenum=<suboption>
Specifies the amount of storage occupied by
enumerations, where <suboption> can be:
small
Specifies that enumerations occupy the
smallest amount of space (1, 2, 4, or 8 bytes)
that can accurately represent the range of
values in the enumeration. Signage is
unsigned, unless the range of values includes
negative values.
int
Specifies that enumerations occupy 4 bytes and
are represented by int.
intlong
Specifies that enumerations occupy 8 bytes of
storage if the range of values in the
enumeration exceeds the limit for int.
Otherwise, the enumerations occupy 4 bytes of
storage and are represented by int.
1
Specifies that enumerations occupy 1 byte.
Type is signed or unsigned char.
2
Specifies that enumerations occupy 2 bytes.
Type is signed or unsigned short.
4
Specifies that enumerations occupy 4 bytes.
Type is signed or unsigned int.
8
Specifies that enumerations occupy 8 bytes.
Type is signed or unsigned long long in 32-bit
mode, and signed or unsigned long in 64-bit
mode.
Default: -qenum=intlong
-qfloat=<suboptions_list>
Specifies various floating-point suboptions. This
provides different strategies for speeding up or
improving the accuracy of floating-point
calculations. <suboptions_list> is a colon-
separated list of one or more of the following:
dfpemulate | nodfpemulate
Specifies whether decimal floating-point
computations are implemented in hardware
instructions or emulated in software by calls
to library functions.
-qdfp must be enabled for either suboption to
have any effect. nodfpemulate is only valid on
a system that supports decimal floating-point
instructions; that is, on AIX 5.3 and higher,
and with -qarch=pwr6 in effect. dfpemulate is
required for all other -qarch values.
Default: dfpemulate
fenv | nofenv
Specifies whether the code depends on the
hardware environment and whether to suppress
optimizations that could cause unexpected
results due to this dependency.
When nofenv is in effect, the compiler assumes
that the program does not depend on the
hardware environment, and that aggressive
compiler optimizations that change the
sequence of floating-point operations are
allowed to be performed. When fenv is in
effect, such optimizations are suppressed.
Default: nofenv
fltint | nofltint
Speeds up floating-point-to-integer
conversions by using faster inline code that
does not check for overflows. -qfloat=nofltint
checks floating-point-to-integer conversions
for out-of-range values.
Default:
o nofltint at -O2 optimization.
o fltint when -qnostrict or -O3 or higher
optimization level is in effect.
fold | nofold
Specifies that constant floating-point
expressions are to be evaluated at compile
time rather than at run time.
Default: fold
hscmplx | nohscmplx
Speeds up operations involving complex
division and complex absolute value. This
suboption, which provides a subset of the
optimizations of the hsflt suboption, is
preferred for complex calculations.
Default: nohscmplx
hsflt | nohsflt
The hsflt option speeds up calculations by
truncating instead of rounding computed values
to single precision before storing and on
conversions from floating-point to integer.
The nohsflt suboption specifies that single-
precision expressions are rounded after
expression evaluation and that floating-
point-to-integer conversions are to be checked
for out-of-range values.
Default: nohsflt
hssngl | nohssngl
The hssngl option specifies that single-
precision expressions are rounded only when
the results are stored into float memory
locations. The nohssngl option specifies that
single-precision expressions are rounded after
expression evaluation. Using hssngl can
improve runtime performance and is safer than
using -qfloat=hsflt.
Default: nohssngl
maf | nomaf
Makes floating-point calculations faster and
more accurate by using floating-point
multiply-add instructions where appropriate.
Default: maf
nans | nonans
Generates extra instructions to detect
signalling NaN when converting from single-
precision to double-precision at run time. The
option nonans specifies that this conversion
need not be detected.
Default: nonans
relax | norelax
Relaxes the strict IEEE-conformance slightly
for greater speed, typically by removing some
trivial, floating-point arithmetic operations,
such as adds and subtracts involving a zero on
the right.
Default: norelax
rndsngl | norndsngl
Specifies that the result of each single-
precision (float) operation is to be rounded
to single precision. -qfloat=norndsngl
specifies that rounding to single-precision
happens only after full expressions have been
evaluated.
Default: rndsngl
rngchk | norngchk
Specifying norngchk instructs the compiler to
skip range checking, allowing for increased
performance where division and sqrt operations
are performed repeatedly within a loop.
When rngchk is specified, range checking is
performed for input arguments for software
divide and inlined sqrt operations.
When -qstrict is active, the setting of this
option is forced to -qfloat=rngchk. When
-qnostrict is active, the setting of this
option is -qfloat=norngchk unless the
-qfloat=rngchk option is explicitly set by the
user.
Default: rngchk
rrm | norrm
Prevents floating-point optimizations that are
incompatible with runtime rounding to plus and
minus infinity modes.
Default: norrm
rsqrt | norsqrt
Specifies whether a sequence of code that
involves division by the result of a square
root can be replaced by calculating the
reciprocal of the square root and multiplying.
Allowing this replacement produces code that
runs faster. -qfloat=rsqrt has no effect
unless -qignerrno is also specified.
Default:
o norsqrt at -O2 optimization.
o rsqrt when when -qnostrict or -O3 or
higher optimization level is in effect.
single | nosingle
Allows single-precision arithmetic
instructions to be generated for single-
precision floating-point values. All PowerPC
processors support single-precision
instructions; however, if you wish to preserve
the behavior of applications compiled for
earlier architectures, in which all floating-
point arithmetic was performed in double-
precision and then truncated to single-
precision, you can use
-qfloat=nosingle:norndsngl. This suboption
provides computation precision results
compatible with those provided by the
deprecated options
-qarch=com|pwr|pwrx|pwr2|p2sc|601|602|603.
Default: single
spnans | nospnans
Detects signalling NaN on conversion from
single-precision to double-precision.
Default: nospnans
-qldbl128 | -qnoldbl128
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qlongdouble.
Default: -qnoldbl128
-qlongdouble | -qnolongdouble
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qldbl128.
Default: -qnolongdouble
-qlonglit | -qnolonglit
Makes unsuffixed literals into the long type in
64-bit mode.
Default: -qnolonglit
-y<rounding_mode>
Specifies the compile-time rounding mode of
constant floating-point expressions.
For binary floating-point types, <rounding_mode> is
one of the following:
m = round toward minus infinity
n = round to the nearest representable number, ties
to even
p = round toward plus infinity
z = round toward zero
Default: -yn
For decimal floating-point types, <rounding_mode>
is one of the following:
di = round toward infinities (away from zero)
dm = round toward minus infinity
dn = round to the nearest representable number,
ties to even
dna = round to the nearest representable number,
ties away from zero
dnz = round to the nearest representable number,
ties toward zero
dp = round toward plus infinity
dz = round toward zero
Default: -ydn
Object code control options
-q32, -q64
Selects either 32-bit or 64-bit compilation mode.
Use the -q32 and -q64 options, along with the
-qarch and -qtune compiler options, to optimize the
output of the compiler to the architecture on which
that output will be used.
Default: -q32
-qalloca
(C) Substitutes inline code for calls to function
alloca, as if #pragma alloca directives were in the
source code.
-ma (C) Substitutes inline code for calls to function
alloca.
-qeh[={v5|v6}] | -qnoeh
(C++) Controls whether exception handling is
enabled in the module being compiled.
v5
Instructs the compiler to generate exception-
handling code that is compatible with
VisualAge C++ V5.0.
v6
Instructs the compiler to generate new
exception-handling code, compatible with
VisualAge C++ V6.0, that correctly handles
try-catch blocks nested within other catch
blocks.
Default: -qeh=v6
-qexpfile=<file_name>
Saves the exported symbols in the specified file
and is only used together with the -qmkshrobj
compiler option.
Refer to the -qmkshrobj option for more
information.
-qfuncsect[=[no]implicitstaticref] | -qnofuncsect
Places instructions for each function in a separate
object file control section or csect. -qfuncsect
can take the following suboption:
implicitstaticref | noimplicitstaticref
Specifies whether the compiler generates dummy
references to the static area. Specifying
-qfuncsect with no suboption implies
implicitstaticref. Specifying
noimplicitstaticref removes unnecessary
references to the static data area.
Default: -qnofuncsect
-qinlglue | -qnoinlglue
This option inlines glue code that optimizes
external function calls when compiling at -q64 and
-O2 and higher.
Default: -qnoinlglue
-qkeepinlines | -qnokeepinlines
(C++) Instructs the compiler to keep or discard
definitions for unreferenced extern inline
functions. Discarding these definitions can reduce
the size of the object files. The -qkeepinlines
setting keeps the definitions of unreferenced
extern inline functions.
Default: -qnokeepinlines
-qpic[={small|large}] | -qnopic
Generates position-independent code (pic). Specify
-qpic=small if the global offset table must be 64
Kb or smaller, or -qpic=large if it can be larger
than 64 Kb.
Default: -qpic=small
-qppline | -qnoppline
When used in conjunction with the -E or -P options,
enables or disables the generation of #line
directives in the preprocessed output.
Default:
o -qnoppline with -P
o -qppline with -E
-qpriority=<num>
(C++) Specifies the priority level for the
initialization of static objects, where <num> is
the initialization priority level assigned to the
static objects within a file, or the priority level
of a shared or non-shared file or library.
You can specify a priority level from -(2147483647
+ 1) (highest priority) to +2147483647 (lowest
priority).
Default: -qpriority=0
-qproto | -qnoproto
(C) Assumes that all functions are prototyped.
Asserts that procedure call points agree with their
declarations even if the procedure has not been
prototyped. This allows the caller to pass
floating-point arguments in floating-point
registers instead of general-purpose registers.
Default: -qnoproto
-r Produces a relocatable object. This permits the
output file to be produced even though it contains
unresolved symbols.
-qreserved_reg=<registers_list>
Indicates that the specified register(s) cannot be
used during the compilation, except as a stack
pointer, frame pointer or in a different fixed
role. <registers_list> is a colon-separated list of
registers.
-qro | -qnoro
Specifies the storage type for string literals and
puts string literals in read-only storage.
Default:
o -qnoro with cc and its derivatives.
o -qro otherwise.
-qroconst | -qnoroconst
Specifies the storage location for constant values.
Default:
o -qroconst with xlc, xlc++, xlC, c89 and c99
invocations commands.
o -qnoroconst with cc.
-qroptr | -qnoroptr
Specifies the storage location for constant
pointers.
Default: -qnoroptr
-qrtti=<option> | -qnortti
(C++) Generates runtime type identification (RTTI)
information for the typeid and dynamic_cast
operators. The suboptions are:
all
Generates the information needed for the RTTI
typeid and dynamic_cast operators.
type | typeinfo
Generates the information needed for the RTTI
typeid operator only.
dyna | dynamiccast
Generates the information needed for the RTTI
dynamic_cast operator only.
Default: -qnortti
-s Strips the symbol table, line number information,
and relocation information from the output file.
-qsaveopt | -qnosaveopt
Saves the command-line options used for compiling a
source file, the version and level of each compiler
component invoked during compilation, and other
information to the corresponding object file.
This option must be used with the -c option.
Default: -qnosaveopt
-qstatsym | -qnostatsym
Adds user-defined, non-external names that have a
persistent storage class (such as initialized and
uninitialized static variables) to the name list
(the symbol table of objects).
Default: -qnostatsym
-qtbtable=<suboption>
Generates a traceback table that contains
information about each function, including the type
of function as well as stack frame and register
information. The traceback table is placed in the
text segment at the end of its code. Suboptions
include:
none
No traceback table is generated.
small
A traceback table is generated with no name or
parameter information. This is the default
with optimization if -g is not specified.
full
A full traceback table is generated. This is
the default with -qnoopt or -g specified.
Default:
o -qtbtable=full when compiling non-optimized
(without -O) or for debugging (with -g).
o -qtbtable=small otherwise.
-qthreaded | -qnothreaded
Ensures that all optimizations will be thread-safe
for executing in a multi-threaded environment.
Default:
o -qthreaded when compiling invocation
commands ending in "_r" or "_r7".
o -qnothreaded otherwise.
-qtls[=<model>] | -qnotls
Specifies the thread-local storage model to be used
by the application, where <model> can be:
global-dynamic
This model is the most general, and can be
used for all thread-local variables.
local-dynamic
This model provides better performance than
the global-dynamic model, and can be used for
thread-local variables defined in
dynamically-loaded modules.
initial-exec
This model provides better performance than
the global-dynamic or local-dynamic models,
and can be used for thread-local variables
defined in dynamically-loaded modules,
provided that those modules are loaded at the
same time as the executable.
local-exec
This model provides the best performance of
all of the models, but can only be used when
all thread-local variables are defined and
referenced by the main executable.
Default:
o -qtls=unsupported
o -qtls=initial_exec if the -qnopic compiler
option is enabled.
o -qtls=global_dynamic if the -qpic compiler
option is enabled.
-qunique | -qnounique
(C++) Generates unique names for static
constructor/destructor file compilation units.
Default: -qnounique
-qweakexp | -qnoweakexp
When used with the -qmkshrobj or -G options,
includes or excludes global symbols marked as weak
from the export list generated when you create a
shared object.
Default: -qweakexp
-qweaksymbol | -qnoweaksymbol
Instructs the compiler to generate weak symbols.
Default: -qweaksymbol
-qxcall | -qnoxcall
Generates code to treat static functions within a
compilation unit as if they were external
functions.
Default: -qnoxcall
Error checking and debugging options
-# Traces the compilation and generates information on
the progress of the compilation without invoking
the preprocessor, compiler, or linkage editor.
-qcheck[=<suboptions_list>] | -qnocheck
Generates code that performs certain types of
runtime checking. If a violation is encountered, a
runtime exception is raised by sending a SIGTRAP
signal to the process. <suboptions_list> is a
colon-separated list of one or more of the
following:
all
Enables all suboptions.
bounds | nobounds
Performs runtime checking of addresses when
subscripting within an object of known size.
divzero | nodivzero
Performs runtime checking of integer division.
A trap will occur if an attempt is made to
divide by zero.
nullptr | nonullptr
Performs runtime checking of addresses
contained in pointer variables used to
reference storage.
Default: -qnocheck
-qdbxextra | -qnodbxextra
(C) Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for debugging. Use this option with the -g
option to produce additional debugging information
for use with a debugger.
Default: -qnodbxextra
-qdpcl | -qnodpcl
Generates symbols that can be used by tools based
on the Dynamic Probe Class Library (DPCL) to see
the structure of an executable file.
Default: -qnodpcl
-qextchk | -qnoextchk
Generates bind-time type-checking information and
checks for compile-time consistency.
Default: -qnoextchk
-qflttrap[=<suboptions_list>] | -qnoflttrap
Generates instructions to detect and trap runtime
floating-point exceptions. <suboptions_list> is a
colon-separated list of one or more of the
following suboptions:
enable
Enables trapping of the specified exceptions.
imprecise
Only checks for the specified exceptions on
subprogram entry and exit.
inexact
Detects floating-point inexact exceptions.
invalid
Detects floating-point invalid operation
exceptions.
nanq
Generates code to detect and trap NaNQ (Not a
Number Quiet) exceptions handled or generated
by floating-point operations.
overflow
Detects floating-point overflow.
underflow
Detects floating-point underflow.
zerodivide
Detects floating-point division by zero.
Default: -qnoflttrap
-qformat=<options_list> | -qnoformat
Warns of possible problems with string input and
output format specifications. Functions diagnosed
are printf, scanf, strftime, strfmon family
functions and functions marked with format
attributes. <options_list> is a comma-separated
list of one or more of the following suboptions:
all | noall
Turns on all format diagnostic messages.
exarg | noexarg
Warns if excess arguments appear in printf and
scanf style function calls.
nlt | nonlt
Warns if a format string is not a string
literal, unless the format function takes its
format arguments as a va_list.
sec | nosec
Warns of possible security problems in use of
format functions.
y2k | noy2k
Warns of strftime formats that produce a 2-
digit year.
zln | nozln
Warns of zero-length formats.
Default:
o -qnoformat, which is equivalent to
-qformat=noall.
o -qformat=all if -qformat is specified
without any suboptions.
-qfullpath | -qnofullpath
Records the full or absolute path names of source
and include files in object files compiled with
debugging information (when you use the -g option).
Default: -qnofullpath
-g Generates debug information for debugging tools.
-qdbg is the long form of -g.
-g implies the -Q! option.
-qhalt=<sev>
Stops the compiler after the first phase if the
severity level of errors detected equals or exceeds
the specified level, <sev>. The severity levels in
increasing order of severity are:
i = informational messages
w = warning messages
e = error messages (C only)
s = severe error messages
Default: -qhalt=s
-qhaltonmsg=<msgnum_list>
(C++) Stops the compiler after the compilation
phase where it encounters the specified message
number(s), where <msgnum_list> is a comma-separated
list of message numbers.
-qheapdebug | -qnoheapdebug
Enables debug versions of memory management
functions.
Default: -qnoheapdebug
-qinfo[=[<suboption>][<groups_list>]] | -qnoinfo
Produces or suppresses informational messages.
<groups_list> is a colon-separated list. If a
<groups_list> is specified along with a
<suboption>, a colon must separate them. The
suboptions are:
all
Enables all diagnostic messages for all
groups.
noall
Disables all diagnostic messages for all
groups.
private
Lists shared variables that are made private
to a parallel loop.
reduction
Lists variables that are recognized as
reduction variables inside a parallel loop.
<groups_list> turns on or off specific groups of
messages and is a colon-separated list of one or
more of the following:
c99 | noc99
(C) C code that might behave differently
between C89 and C99 language levels
cls | nocls
C++ classes
cmp | nocmp
Possible redundancies in unsigned comparisons
cnd | nocnd
Possible redundancies or problems in
conditional expressions
cns | nocns
Operations involving constants
cnv | nocnv
Conversions
dcl | nodcl
Consistency of declarations
eff | noeff
Statements and pragmas with no effect
enu | noenu
Consistency of enum variables
ext | noext
Unused external definitions
gen | nogen
General diagnostic messages
gnr | nognr
Generation of temporary variables
got | nogot
Use of goto statements
ini | noini
Possible problems with initialization
lan | nolan
Language level effects
obs | noobs
Obsolete features
ord | noord
Unspecified order of evaluation
par | nopar
Unused parameters
por | nopor
Non-portable language constructs
ppc | noppc
Possible problems with using the preprocessor
ppt | noppt
Trace of preprocessor actions
pro | nopro
Missing function prototypes
rea | norea
Code that cannot be reached
ret | noret
Consistency of return statements
trd | notrd
Possible truncation or loss of data or
precision
tru | notru
Variable names truncated by the compiler
trx | notrx
Rounding of hexadecimal floating-point
constants
uni | nouni
Uninitialized variables
upg | noupg
Upgrade issues from one release to the next
release
use | nouse
(C++) Unused auto and static variables
vft | novft
(C++) Generation of virtual function tables in
C++ programs
zea | nozea
Zero-extent arrays
Default:
(C) -qnoinfo
(C++) -qinfo=lan:trx
If -qinfo is specified without a suboption, the
default is -qinfo=all for C and -qinfo=all:noppt
for C++.
-qinitauto=<hex_value> | -qnoinitauto
Initializes each byte or word of storage for
automatic variables to the specified hexadecimal
value <hex_value>. This generates extra code and
should only be used for error determination.
Default: -qnoinitauto
-qkeepparm | -qnokeepparm
Ensures that function parameters are stored on the
stack even if the application is optimized. As a
result, parameters remain in the expected memory
location, providing access to the values of these
incoming parameters to tools such as debuggers.
Default: -qnokeepparm
-qlinedebug | -qnolinedebug
Generates only abbreviated line number and source
file name information for the debugger.
Default: -qnolinedebug
-qmaxerr=<num>[:<sev>] | -qnomaxerr
Instructs the compiler to halt compilation when the
specified number of errors of the specified
severity (by default, the value of -qhalt) or
greater is reached. <num> must be an integer. The
severity levels, <sev>, are:
i = informational
w = warning
e = error (C only)
s = severe error
Default: -qnomaxerr
-qoptdebug | -qnooptdebug
When used with high levels of optimization,
-qoptdebug produces source files containing
optimized pseudocode that can be read by a
debugger.
An output file with a .optdbg extension is created
for each input file compiled with -qoptdebug. You
can use the information contained in this file to
help you understand how your code actually behaves
under optimization.
Default: -qnooptdebug
-qsymtab={unref|static}
(C) Determines what types of information appear in
the symbol table. The suboptions are:
unref
Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for processing by the debugger.
static
Adds user-defined, non-external names that
have a persistent storage class (such as
initialized and uninitialized static
variables) to the name list.
Default:
The default is to not add static variables to
the symbol table.
-qsyntaxonly
(C) Performs syntax checking without generating an
object file.
Default:
By default, source files are compiled and
linked to generate an executable file.
-qwarn64 | -qnowarn64
Enables checking for possible data conversion
problems between 32-bit and 64-bit compiler modes.
Default: -qnowarn64
Listing and messages options
-qattr[=full] | -qnoattr
Produces a compiler listing that includes an
attribute listing for all identifiers. If -qattr is
specified, the listing contains only those
identifiers that are used. If -qattr=full is
specified, the listing contains all names. If
-qnoattr is specified, no listing is produced.
Default: -qnoattr
-qdump_class_hierarchy
(C++) For each class object, this option dumps a
representation of its hierarchy and virtual
function table layout to a file. The file name is
created by appending ".class" to the source file
name.
-qflag=<listing_severity>:<terminal_severity>
Defines the minimum severity level of diagnostic
messages to be written to the listing file and to
the user terminal. <listing_severity> is the
minimum level for the listing file, and
<terminal_severity> is the minimum level for the
terminal. The message severity levels are:
i = informational messages
w = warning messages
e = error, severe error and unrecoverable error
messages (C only)
s = severe error and unrecoverable error messages
(C)
s = severe error messages (C++)
Default: -qflag=i:i
-qlist[={offset|nooffset}] | -qnolist
Produces a compiler listing that includes an object
listing. You can use the object listing to help
understand the performance characteristics of the
generated code and to diagnose execution problems.
offset | nooffset
Changes the offset of the PDEF header from
00000 to the offset of the start of the text
area.
Specifying -qlist without the suboption is
equivalent to list=nooffset.
Default: -qnolist
-qlistopt | -qnolistopt
Produces a compiler listing that displays all the
options that were in effect when the compiler was
invoked.
Default: -qnolistopt
-qphsinfo | -qnophsinfo
Reports the time taken in each compilation phase.
Phase information is sent to standard output. The
output takes the form <number1>/<number2> for each
phase where <number1> represents the CPU time used
by the compiler and <number2> represents the total
of the compiler time and the time that the CPU
spends handling system calls.
Default: -qnophsinfo
-qprint | -qnoprint
Enables or suppresses listings. Specifying
-qnoprint overrides all listing-producing options,
regardless of where they are specified, to suppress
listings.
Default: -qprint
-qreport | -qnoreport
Instructs the compiler to produce transformation
reports that show how program loops are optimized.
The transformation reports are included as part of
the compiler listing. This option requires -qhot or
-qsmp in order to have effect.
When used with -qipa=clonearch, -qreport produces
transformation reports on the procedures that are
cloned for the architectures specified by the
option.
Default: -qnoreport
-qshowinc[=<types_list>] | -qnoshowinc
Used with -qsource to selectively show user header
files (includes using " ") or system header files
(includes using < >) in the program source listing.
<types_list> is a colon-separated list of one or
more of the following types:
usr | nousr
Specifies whether to show user include files.
sys | nosys
Specifies whether to show system include
files.
all
Shows both user and system include files.
Default: -qnoshowinc
-qsource | -qnosource
Produces a compiler listing that includes source
code.
Default: -qnosource
-qsrcmsg | -qnosrcmsg
(C) Adds the corresponding source code lines to the
diagnostic messages in the stderr file.
Default: -qnosrcmsg
-qsuppress=<msg_id> | -qnosuppress=[<msg_id>]
Prevents the specified compiler or driver
informational or warning messages from being
displayed or added to the listings, where <msg_id>
is a colon-separated list of message numbers to
suppress or display.
NOTE: In (C++), -qnosuppress requires that you
supply message number(s), and in (C), -qnosuppress
does not allow you to supply any.
Default: -qnosuppress
-v Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a comma-separated list.
-V Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a space-separated list.
-qversion[=verbose]
Displays the official compiler product name and the
compiler version found on the system.
verbose
Additionally displays information about the
version, release, and level of each compiler
component installed.
-w Suppresses informational, language-level and
warning messages.
Specifying this option is equivalent to specifying
-qflag=e:e in C or -qflag=s:s in C++.
-qxref[=full] | -qnoxref
Specifies whether to produce a compiler listing
that includes a cross-reference listing of all
identifiers. Specifying -qxref will report only
identifiers that are used, -qxref=full reports all
identifiers in the program, and -qnoxref does not
report any identifiers in the program. The
-qnoprint option overrides this option.
Default: -qnoxref
Optimization and tuning options
-qaggrcopy={overlap|nooverlap}
Enables destructive copy operations for structures
and unions.
overlap | nooverlap
Enables or disables optimizations for
structure and union assignments. nooverlap
assumes that the source and destination for
structure and union assignments do not
overlap, allowing the compiler to generate
faster code. overlap inhibits these
optimizations.
Default: -qaggrcopy=nooverlap
-qalias=<suboptions_list>
Specifies the aliasing assertions to be applied to
your compilation unit. <suboptions_list> is a
colon-separated list of the following options:
addrtaken | noaddrtaken
Variables are disjoint from pointers unless
their address is taken.
allptrs | noallptrs
Pointers are never aliased if allptrs is
specified, but may be aliased if noallptrs is
specified. -qalias=allptrs implies
-qalias=typeptr.
ansi | noansi
If ansi is specified, type-based aliasing is
used during optimization, which restricts the
lvalues that can be safely used to access a
data object. This option has no effect unless
you also specify the -O option.
Specifying -qalias=noansi turns off type-based
aliasing completely.
global | noglobal
When global is in effect, type-based aliasing
rules are enabled during IPA link-time
optimization across compilation units. Both
-qipa and -qalias=ansi must be enabled for
-qalias=global to have an effect.
Specifying noglobal disables type-based
aliasing rules across compilation units.
restrict | norestrict
When restrict is in effect, optimizations for
pointers qualified with the restrict keyword
are enabled. Specifying norestrict disables
optimizations for restrict-qualified pointers.
-qalias=restrict is independent from other
-qalias suboptions.
typeptr | notypeptr
Pointers to different types are never aliased
if typeptr is specified, but may be aliased if
notypeptr is specified.
Default:
(C++)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
(C)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
for all invocation commands except cc.
-qalias=noaddrtaken:noallptrs:noansi:global:restrict:notypeptr
for the cc invocation command.
-qarch=<suboption>
Specifies the general processor architecture for
which the code (instructions) should be generated.
In general, the -qarch option allows you to target
a specific architecture for the compilation. For
any given -qarch setting, the compiler defaults to
a specific, matching -qtune setting, which can
provide additional performance improvements. The
suboptions are:
auto
Automatically detects the specific
architecture of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
403
Produces object code containing instructions
that will run on the PowerPC 403 hardware
platform.
604
Produces an object that contains instructions
that run on PowerPC 604 systems.
pwr3
Produces an object that contains instructions
that run on the POWER3 hardware platforms.
pwr4
Produces an object that contains instructions
that run on the POWER4 hardware platforms.
pwr5
Produces an object that contains instructions
that run on the POWER5 hardware platforms.
pwr5x
Produces an object that contains instructions
that run on the POWER5+ hardware platforms.
pwr6
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 architected mode. If you
would like support for decimal floating-point
instructions, be sure to specify this
suboption during compilation.
pwr6e
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 raw mode.
ppc
Produces an object that contains instructions
that run on any of the 32-bit PowerPC hardware
platforms. Using -q64 with ppc upgrades the
architecture to ppc64.
ppc64
Produces object code that will run on any 64-
bit PowerPC hardware platform. When compiled
in 32-bit mode, the resulting object code may
include instructions that are not recognized
or behave differently when run on 32-bit
PowerPC platforms.
ppcgr
In 32-bit mode, produces object code
containing optional graphics instructions for
PowerPC hardware platforms.
In 64-bit mode, produces object code
containing optional graphics instructions that
will run on 64-bit PowerPC platforms, but not
on 32-bit-only platforms. Using -q64 with
ppcgr upgrades the architecture to ppc64gr.
ppc64gr
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics instructions.
ppc64grsq
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics and square root
instructions.
ppc64v
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional vector instructions, such as a
PowerPC 970.
ppc970
Generates instructions specific to PowerPC 970
processors.
rs64a
Produces an object that contains instructions
that run on an RS64I hardware platform.
rs64b
Produces an object that contains instructions
that run on an RS64II hardware platform.
rs64c
Produces an object that contains instructions
that run on an RS64III hardware platform.
Default: -qarch=ppc
-qcache=<suboptions_list>
Describes the cache configuration for a specific
target execution machine, where <suboptions_list>
is a colon-separated list of one or more of the
following suboptions:
assoc=<number>
Specifies the set associativity of the cache,
where <number> is one of the following:
0 Direct-mapped cache
1 Fully associative cache
(number > 1) n-way set associative cache
auto
Automatically detects the specific cache
configuration of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
cost=<cycles>
Specifies the performance penalty, in CPU
cycles, resulting from a cache miss.
level=<level>
Specifies which level of cache is affected,
where level is one of the following::
1 Basic cache
2 Level-2 cache
3 Table Lookaside Buffer (TLB)
If a machine has more than one level of cache,
use a separate -qcache option.
line=<bytes>
Specifies the line size of the cache.
size=<Kbytes>
Specifies the total size of the cache.
type=<cache_type>
The settings apply to the specified type of
cache, where <cache_type> is one of the
following:
C or c = Combined data and instruction
cache
D or d = Data cache
I or i = Instruction cache
Default:
The -qtune setting determines the optimal
default -qcache settings for most typical
compilations. -O4, -O5, or -qipa must be
specified with the -qcache option.
-qcompact | -qnocompact
Reduces code size where possible, at the expense of
execution speed. Code size is reduced by inhibiting
optimizations that replicate or expand code inline.
This option takes effect only if -O2 or higher is
also used.
Default: -qnocompact
-qdataimported[=<variable_names>]
Specifies variables that the compiler can assume
are imported. <variable_names> is a colon-separated
list of variables. Specifying -qdataimported
without <variable_names> instructs the compiler to
assume that all variables are imported. This is
equivalent to specifying -qnotocdata.
(C++) Variable names must be specified using their
mangled names.
-qdatalocal[=<variable_names>]
Specifies variables that the compiler can assume
are local. <variable_names> is a colon-separated
list of variables. Specifying -qdatalocal with no
variables instructs the compiler to assume that all
variables are local. This is equivalent to
specifying -qtocdata.
(C++) Variable names must be specified using their
mangled names.
-qtocdata | -qnotocdata
Marks all data as local.
Default: -qnotocdata (marks all data as imported)
-qdirectstorage | -qnodirectstorage
Informs the compiler that write-through-enabled or
cache-inhibited storage may be referenced.
Default: -qnodirectstorage
-qenablevmx | -qnoenablevmx
Enables the generation of vector instructions for
processors that support them. These instructions
can offer higher performance when used with
algorithmic-intensive tasks such as multimedia
applications.
For -qenablevmx to have effect, the architecture
specified by the -qarch option must support vector
instructions.
If -qnoenablevmx is in effect, -qaltivec,
-qvecnvol, and -qhot=simd cannot be used.
Default: -qnoenablevmx
-qfdpr | -qnofdpr
Collects information about programs for use with
the IBM Feedback Directed Program Restructuring
(FDPR) performance-tuning utility.
Default: -qnofdpr
-qhot[=<suboption>] | -qnohot
Specifies whether or not to perform high-order
transformations during optimization. The suboptions
are:
arraypad[=<number>] | noarraypad
When <number> is specified, the compiler will
pad every array in the code. The pad amount
must be a positive integer value. Otherwise,
the compiler will pad any arrays where it
infers that there may be a benefit.
level={0|1}
Specifies the level of high-order
transformation to perform during compilation.
0
The compiler performs a subset of the
high-order transformations. Some of these
include early distribution, loop
interchange, and loop tiling, as
examples. Optimization level -O3 implies
-qhot=level=0.
1
At level=1, full high-order
transformation is performed.
-qhot=level=1 is equivalent to -qhot and
the compiler options that imply -qhot
also imply -qhot=level=1, unless
-qhot=level=0 is explicitly specified.
simd | nosimd
Converts certain operations in a loop that
apply to successive elements of an array into
a vector instruction. This call calculates
several results at one time, which is faster
than calculating each result sequentially. If
you specify -qhot=nosimd, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with vector
instructions. To enable -qhot=simd, you must
specify an architecture that supports vector
instructions.
vector | novector
When specified with -qnostrict and -qignerrno,
or an optimization level of -O3 or higher
(otherwise -qhot=vector has no effect), the
compiler converts certain operations in a loop
that apply to successive elements of an array
into a call to a routine in the Mathematical
Acceleration Subsystem (MASS) library, part of
the libxlopt.a library.
If you specify -qhot=novector, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with calls
to vector library routines.
Specifying -qhot without suboptions implies
-qhot=nosimd, -qhot=noarraypad, -qhot=vector and
-qhot=level=1. The -qhot option is also implied by
-qsmp, -O4, and -O5.
Default: -qnohot
-qignerrno | -qnoignerrno
Allows the compiler to perform optimizations that
assume errno is not modified by system calls.
Default: -qnoignerrno
-qipa[=<suboptions_list>] | -qnoipa
Turns on or customizes a class of optimizations
known as interprocedural analysis (IPA).
<suboptions_list> is a colon-separated list of the
following suboptions:
clonearch=<arch_name> | noclonearch
Specifies the architectures for which multiple
versions of the same instruction set are
produced, where <arch_name> is a comma-
separated list of architecture names. Use this
suboption if you require optimal performance
on multiple differing machines running the
same copy of your application.
cloneproc=<function_name> |
nocloneproc=<function_name>
Specifies the name of the functions to clone
for the architectures specified by the
clonearch suboption, where <function_name> is
a comma-separated list of function names.
exits=<procedures>
Specifies names of functions which represent
program exits. <procedures> is a comma-
separated list of procedures.
infrequentlabel=<procedures>
Specifies a comma-separated list of user-
defined labels that are likely to be called
infrequently during a program run.
inline[=<suboption>]
Specifying 'inline' with no suboption asserts
that all appropriate procedures will be
inlined. <suboption> can be one of the
following:
auto|noauto
Enables or disables automatic function
inlining by the high-level optimizer.
When -qipa=inline=auto is in effect, the
compiler considers all functions that are
under the maximum size limit (see below)
for inlining. When -qipa=inline=noauto is
in effect, only procedures listed in the
<procedures> suboption are considered for
inlining.
<procedures>
Specifies a comma-separated list of
procedures to attempt to inline.
limit=<num>
Specifies a limit on the size of a
calling function after inlining. This
only takes effect when inline=auto is on.
If you do not specify a value for <num>,
<num> is 8192 by default.
threshold=<num>
Specifies the upper size limit on
procedures to inline. This only takes
effect when inline=auto is on. If you do
not specify a value for <num>, <num> is
1024 by default.
Default: auto
noinline[=<procedures>]
Specifies a comma-separated list of procedures
which are not to be inlined. Specifying
noinline without <procedures>, asserts that no
procedures are to be inlined.
isolated=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and do not
directly refer to any global variable.
level=<level>
Determines the amount of IPA analysis and
optimization performed, where <level> can be
equal to:
0
Performs only minimal interprocedural
analysis and optimization.
1
Turns on inlining, limited alias
analysis, and limited call-site
tailoring.
2
Full interprocedural data flow and alias
analysis.
Default: 1
list[={<file_name>|short|long}]
Specifies an output listing file name during
the link phase. The default name is "a.lst".
Specifying 'long' or 'short' can be used to
request more or less information in the
listing file to determine which listing
sections will be included.
Default: short
lowfreq=<procedures>
Specifies a comma-separated list of procedures
that are likely to be called infrequently
during the course of a typical program run.
malloc16 | nomalloc16
Informs the compiler that the dynamic memory
allocation routines will return 16-byte
aligned memory addresses. The compiler can
then optimize the code based on that
assertion.
Default: -qipa=malloc16
missing={unknown|safe|isolated|pure}
Specifies the default assumption for
procedures not compiled with -qipa.
unknown
Greatly restricts the amount of
interprocedural optimization for calls to
unknown functions.
safe
Functions which do not indirectly call a
visible (not missing) function either
through direct call or function pointer.
isolated
Functions which do not directly reference
global variables accessible to visible
functions.
pure
Functions which are safe and isolated and
which do not indirectly alter storage
accessible to functions.
Default: missing=unknown
object | noobject
Specifies whether to include standard object
code in the object files. Specifying
'noobject' can substantially reduce overall
compile time by not generating object code
during the first IPA phase.
partition={small|medium|large}
Specifies the size of program sections that
are analyzed together. Larger partitions may
produce better analysis but require more
storage.
Default: partition=medium
pure=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that are
"isolated", "safe", and do not modify any data
objects that are visible to the caller.
safe=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that do not call
any other part of the program.
threads[=<suboption>] | nothreads
Runs portions of the IPA optimization process
during pass 2 in parallel threads, which can
speed up the linking process on multi-
processor systems. <suboption> can be one of
the following:
auto | noauto
When auto is in effect, the compiler
selects a number of threads heuristically
based on machine load. When noauto is in
effect, the compiler spawns one thread
per machine processor.
<number>
Instructs the compiler to use a specific
number of threads. <number> can be any
integer value in the range of 1 to 32767.
However, <number> is effectively limited
to the number of processors available on
your system.
Specifying threads with no suboptions implies
threads=auto.
Default: -qipa=threads
unknown=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and that may
update global variables and dummy arguments
and call other parts of the program compiled
with -qipa.
<file_name>
Specifies the name of a file that contains
suboption information in a special format.
Regular expressions are supported when specifying
procedure names for these suboptions:
cloneproc, nocloneproc, exits, inline, noinline,
isolated, lowfreq, pure, safe, unknown.
(C++) In C++ programs, procedure names must be
given in mangled form.
Default:
-qnoipa
-qipa=inline=auto:level=1:missing=unknown:partition=medium:threads=auto
when -O4 is in effect.
-qipa=inline=auto:level=2:missing=unknown:partition=medium:threads=auto
when -O5 is in effect.
-qipa=inline=auto:level=0:missing=unknown:partition=medium:threads=auto
when -qpdf1 or -qpdf2 is in effect.
-qisolated_call=<procedures>
Informs the compiler that specific functions do not
have or rely on side effects, other than those
implied by their parameters. <procedures> is a
colon-separated list of function names.
-qlargepage | -qnolargepage
Indicates that a program, designed to execute in a
large page memory environment, can take advantage
of large 16 MB pages provided on POWER4 and later
systems.
Default: -qnolargepage
-qlibansi | -qnolibansi
Assumes that all functions with the name of an ANSI
C defined library function are, in fact, the
library functions.
Default: -qnolibansi
-qmaxmem=<size>
Limits the amount of memory used by certain
memory-intensive optimizations to <size> kilobytes.
When <size> is -1, the optimizer will use as much
memory as needed.
Default:
o -qmaxmem=8192 when -O2 level optimization is
set.
o -qmaxmem=-1 when -O3 level or greater
optimization is set.
-qminimaltoc | -qnominimaltoc
Avoids Table of Contents (TOC) overflow conditions
by placing TOC entries into a separate data section
for each object file. By default, the compiler will
allocate at least one TOC entry for each unique
non-automatic variable reference in your program.
Default: -qnominimaltoc
-O[<level>]
Optimizes code at a choice of levels during
compilation. This is equivalent to
-qoptimize[=<level>]. <level> can be:
0
Performs only quick local optimizations such
as constant folding and elimination of local
common subexpressions.
2
Performs optimizations that the compiler
developers considered the best combination for
compilation speed and runtime performance. The
optimizations may change from product release
to release.
3
Performs some memory and compile-time
intensive optimizations in addition to those
executed with -O2. The -O3 specific
optimizations have the potential to alter the
semantics of a program. The compiler guards
against these optimizations at -O2 and the
option -qstrict is provided at -O3 to turn off
these aggressive optimizations. Specifying -O3
implies -qhot=level=0.
4
This option is the same as -O3, but also:
o sets the -qarch and -qtune options to the
architecture of the compiling machine.
o sets the -qcache option most appropriate
to the characteristics of the compiling
machine.
5
Equivalent to -O4 -qipa=level=2.
Specifying -O with no <level> is equivalent to
specifying -O2.
Default: -O0
-qoptimize[=<level>] | -qnooptimize
The long form of the -O option. -qoptimize=<level>
is equivalent to -O<level>. See the -O option.
Default: -qnooptimize
-p, -pg, -qprofile={-p|-pg}
Sets up the object files produced by the compiler
for profiling.
-pg is like -p, but it produces more extensive
statistics.
-qpdf1[=pdfname=<file_path] | -qnopdf1
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf1 produces an object that is instrumented to
collect runtime execution information. This is
phase 1 of the profile-directed feedback
optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf1
-qpdf2[=pdfname=<file_path>] | -qnopdf2
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf2 tunes application performance using the data
generated by running a program compiled with
-qpdf1. This is phase 2 of the profile-directed
feedback optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf2
-qprefetch | -qnoprefetch
Enables generation of prefetching instructions such
as dcbt and dcbz in compiled code.
Default: -qprefetch
-qprocimported[=<procedures>] | -qnoprocimported
Specifies functions that the compiler can assume
are imported. Imported functions are dynamically
bound with a shared portion of a library. Code
generated for calls to functions marked as imported
may be larger, but is faster than the default code
sequence generated for functions marked as unknown.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qproclocal[=<procedures>] | -qnoproclocal
Specifies functions that the compiler can assume
are local. Local functions are statically bound
with the functions that call them; smaller, faster
code is generated for calls to such functions.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qprocunknown[=<procedures>] | -qnoprocunknown
Specifies functions that the compiler can assume
are unknown. Unknown functions are resolved to
either statically or dynamically bound objects
during linking. <procedures> is a colon-separated
list of function identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-Q[<suboption>]
(C++) Instructs the compiler to try to inline
functions. Inlining is performed if possible but,
depending on which optimizations are performed,
some functions might not be inlined.
(C) Specifies which specific functions the compiler
should attempt to inline. You must specify at least
an optimization level of -O2 for inlining to take
effect with -Q. To turn on inline expansion for
calls to procedures in different scopes, you must
also use the -qipa=inline.
(C++) In the C++ language, this option can take the
form:
-Q
Compiler inlines all functions that it can.
-Q!
Compiler does not inline any functions.
(C) In the C language, this option can take the
form:
-Q
Attempts to inline all appropriate functions
with 20 executable source statements or fewer,
subject to the setting of any of the
suboptions to the -Q option. If -Q is
specified last, all functions are inlined.
-Q!
Does not inline any functions. If -Q! is
specified last, no functions are inlined.
-Q-<names>
Does not inline functions listed in <names>,
where <names> is a colon-separated list. All
other appropriate functions are inlined. The
option implies -Q.
-Q+<names>
Attempts to inline the functions listed in
<names>, where <names> is a colon-separated
list. All other appropriate functions are
inlined.
-Q=<threshold>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <threshold> for
the function to be inlined.
Default: -Q!
-qinline[<suboption>] | -qnoinline
Specifies whether to attempt to inline functions
instead of generating calls to a function.
(C++) In C++, you cannot specify any suboptions.
-qinline specifies that all appropriate functions
should be inlined, and -qnoinline specifies that no
functions should be inlined.
(C) In C, this option can take the following forms:
-qinline
The compiler attempts to inline all
appropriate functions with 20 executable
source statements or fewer, subject to any
other settings of the suboptions to the
-qinline option.
-qinline+<procedures>
Attempts to inline the functions listed in
<procedures> and any other appropriate
functions, where <procedures> is a colon-
separated list.
-qinline-<procedures>
Specifies that functions listed in
<procedures> do not get inlined, where
<procedures> is a colon-separated list.
-qnoinline
Does not inline any functions.
-qinline=threshold=<num>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <num> for the
function to be inlined. <num> must be a
positive integer.
Default:
The default is to treat inline specifications
as a hint to the compiler, and the result
depends on other options that you select. If
you specify the -g option (to generate debug
information), inlining may be affected.
-qshowpdf | -qnoshowpdf
Used with -qpdf1 and a minimum optimization level
of -O2 to add additional call and block count
profiling information to an executable.
Default: -qnoshowpdf
-qsmallstack | -qnosmallstack
Reduces the size of the stack frame. This option is
only valid when used together with IPA (-qipa, -O4,
-O5 compiler options).
Default: -qnosmallstack
-qsmp[=<suboptions_list>] | -qnosmp
Enables parallelization of program code.
<suboptions_list> is a colon-separated list of one
or more of the following suboptions:
auto | noauto
Enables automatic parallelization and
optimization. If noauto is specified,
automatic parallelization of program code is
disabled; only program code explicitly
parallelized with OpenMP directives is
optimized.
Default: auto
nested_par | nonested_par
If nested_par is specified, prescriptive
nested parallel constructs are parallelized by
the compiler.
Default: nonested_par
omp | noomp
Enables strict OpenMP compliance. Only OpenMP
parallelization pragmas are recognized.
Default: noomp
opt | noopt
Enables automatic parallelization but disables
optimization of parallelized program code. If
noopt is specified, optimization of
parallelized program code is disabled.
Default: opt
rec_locks | norec_locks
Specifies whether to use recursive locks.
Default: norec_locks
schedule=<type>
Specifies what kinds of scheduling algorithms
and chunking are used for loops to which no
other scheduling algorithm has been explicitly
assigned in the source code. <type> can be:
o affinity[=<num>]
o dynamic[=<num>]
o guided[=<num>]
o runtime
o static[=<num>],
where <num> is the number of loop iterations.
Default: schedule=runtime
stackcheck | nostackcheck
Causes the compiler to check for stack
overflow by slave threads at run time, and
issue a warning if the remaining stack size is
less than the number of bytes specified by the
stackcheck option of the XLSMPOPTS environment
variable. This suboption is intended for
debugging purposes, and only takes effect when
XLSMPOPTS=stackcheck is also set.
Default: nostackcheck
threshold[=<num>]
When -qsmp=auto is in effect, controls the
amount of automatic loop parallelization that
occurs. The value of <num> represents the
lower limit allowed for parallelization of a
loop, based on the level of "work" present in
a loop.
Default:
<num> must be a positive integer of 0 or
greater. If you specify threshold with no
suboption, the program uses a default value
of 100.
Specifying -qsmp without suboptions is equivalent
to
-qsmp=auto:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100
or
-qsmp=opt:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100.
Default: -qnosmp
-qspeculateabsolutes | -qnospeculateabsolutes
Works with the -qtocmerge -bl:file for non-IPA
links and with the -bl:file for IPA links to
disable speculation at absolute addresses.
The bl:file is necessary for the compiler to know
which addresses are absolutes.
Default: -qspeculateabsolutes
-qstrict | -qnostrict
Turns off aggressive optimizations which have the
potential to alter the semantics of your program.
-qstrict sets -qfloat=nofltint:norsqrt. -qnostrict
sets -qfloat=rsqrt. This option is only valid with
-O2 or higher optimization levels.
Default:
o -qnostrict at -O3 or higher.
o -qstrict otherwise.
-qstrict_induction | -qnostrict_induction
Turns off loop induction variable optimizations
that have the potential to alter the semantics of
your program.
Default:
o -qnostrict_induction at -O2 or higher.
o -qstrict_induction otherwise.
-qtocmerge | -qnotocmerge
Enables TOC merging to reduce TOC pointer loads and
improves the scheduling of external loads. Reads
from the file specified in -bImportfile linker
option and merges the address information to access
ranges of external addresses using a single table
of contents entry.
Default: -qnotocmerge
-qtune=<suboption>
Specifies the architecture system for which the
executable program is optimized.
<suboption> must be one of the following:
403
Generates object code optimized for all the
PowerPC 403 processors.
604
Generates object code optimized for all the
PowerPC 604 processors.
auto
Generates object code optimized for the
hardware platform on which the program is
compiled.
balanced
Optimizations are tuned across a selected
range of recent hardware.
ppc970
Generates instructions specific to PowerPC 970
hardware platforms.
pwr3
Generates object code optimized for the POWER3
hardware platforms.
pwr4
Generates object code optimized for the POWER4
hardware platforms.
pwr5
Generates object code optimized for the POWER5
hardware platforms.
pwr6
Generates object code optimized for the POWER6
hardware platforms.
rs64a
Generates object code optimized for the RS64I
processor.
rs64b
Generates object code optimized for the RS64II
processor.
rs64c
Generates object code optimized for the
RS64III processor.
Default:
-qtune=balanced when the default -qarch
setting is in effect. Otherwise, the default
depends on the effective -qarch setting.
-qunroll[=<suboption>] | -qnounroll
Unrolls inner loops in the program. This can help
improve program performance. The suboptions are:
auto
Instructs the compiler to perform basic loop
unrolling.
yes
Instructs the compiler to search for more
opportunities for loop unrolling than that
performed with auto. In general, this
suboption is more likely to increase compile
time or program size than auto processing, but
it may also improve your application's
performance.
no
Instructs the compiler to not unroll loops.
Default: -qunroll=auto
If -qunroll is specified with no suboptions, the
compiler assumes -qunroll=yes. -qnounroll is
equivalent to -qunroll=no.
-qunwind | -qnounwind
Informs the compiler that the stack can be unwound
while a routine in the compilation is active.
Specifying -qnounwind can improve the optimization
of non-volatile register saves and restores.
Default: -qunwind
Linking options
-b{dynamic|shared|static}
Controls how shared objects are processed by the
linkage editor. The suboptions are:
dynamic, shared
Causes the linker to process subsequent shared
objects in dynamic mode. In dynamic mode,
shared objects are not statically included in
the output file. Instead, the shared objects
are listed in the loader section of the output
file.
-bdynamic and -bshared are synonymous.
static
Causes the linker to process subsequent shared
objects in static mode. In static mode, shared
objects are statically linked in the output
file.
Default: -bshared
-bmaxdata:<bytes>
Specifies the maximum amount of space to reserve
for the program data segment for programs where the
size of these regions is a constraint. Combined
data space is slightly less than 256MB, or lower,
depending on the limits for the user ID.
Default: -bmaxdata:0
-brtl Controls runtime linking for the output file.
-qcrt | -qnocrt
Instructs the linker to use the standard system
startup files at link time.
Default: -qcrt
-e <name>
Sets the entry name for a shared executable and is
only used together with -qmkshrobj.
-f<file_name>
Names a file to store a list of object files for
the compiler to pass to the linker. The <file_name>
file should contain only the names of object files.
There should be one object file per line.
-L<dir>
Searches the path directory for library files
specified by the -l<key> option.
Default:
The default is to search only the standard
directories.
-l<key>
Searches the file lib<key>.so and then lib<key>.a
for dynamic linking, or only lib<key>.a for static
linking.
Default:
The default is to search only some of the
compiler runtime libraries.
-qlib | -qnolib
Specifies whether the compiler should use the
standard system libraries at link time. -qnolib is
similar to the gcc option nostdlib; the driver will
not pass the standard system startup files or
libraries when linking.
Default: -qlib
-qtwolink | -qnotwolink
(C++) Links twice in order to minimize the number
of static constructors included from libraries and
object files.
Default: -qnotwolink
-Z<prefix>
This linker option specifies a prefix for the
library search path. This is useful when developing
a new version of a library.
Portability and migration options
-qalign=<suboption>
Specifies what aggregate alignment rules the
compiler uses for file compilation, where the
alignment suboptions are:
bit_packed
The compiler uses the bit_packed alignment
rules.
full
The compiler uses the RISC System/6000
alignment rules. This is the same as power.
mac68k
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the twobyte
suboption.
natural
The compiler maps structure members to their
natural boundaries.
packed
The compiler uses the packed alignment rules.
power
The compiler uses the RISC System/6000
alignment rules.
twobyte
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the mac68k
suboption.
Default: -qalign=full
-qalignrulefor=power=[no]typedefrespectsrule
(C++) When used with -qalign=power, determines
whether a 4-byte alignment ceiling is applied to
non-first members of structures that are of type
typedef to array of element type that exceeds the
alignment ceiling.
typedefrespectsrule | notypedefrespectsrule
When typedefrespectsrule is in effect, the
member follows the normal alignment rules for
-qalign=power. This suboption provides
compatibility with code compiled with
-qalign=power with XL C++ V6.0 and earlier.
When notypedefrespectsrule is in effect, a
member that exceeds the alignment ceiling of 4
bytes is aligned on 4-byte boundaries. This
suboption provides compatibility with code
compiled with -qalign=power with XL C++ V7.0
and V8.0.
Default: -qalignrulefor=power=typedefrespectsrule
-qgenproto[=parmnames] | -qnogenproto
(C) Generates ANSI prototypes from K&R function
definitions and displays them on standard output.
Specifying -qgenproto without '=parmnames' will
cause prototypes to be generated without parameter
names.
Default: -qnogenproto
-qnamemangling=<scheme>
(C++) Chooses the name mangling scheme for external
symbol names generated from C++ source code. The
<scheme> can be:
ansi
Fully supports the most recent language
features of Standard C++.
v9
Compatible with XL C++ V9.0.
v8
Compatible with XL C++ V8.0.
v7
Compatible with XL C++ V7.0.
v6
Compatible with VisualAge C++ V6.0.
v5
The scheme for VisualAge C++ V5.0.
v4
The scheme for VisualAge C++ V4.0.
v3
The scheme for VisualAge C++ releases before
V4.0.
compat
Same as v3.
Default: -qnamemangling=ansi
-qobjmodel={classic|ibm}
(C++) Specifies the object model.
classic
This object model is compatible with version
3.6 of the IBM C and C++ compilers.
ibm
Uses the object model introduced with version
5.0 of VisualAge C++ for AIX. Objects compiled
with this object model will use less memory
and have better performance for deep
inheritance with virtual bases.
Default: -qobjmodel=classic
-qoldpassbyvalue | -qnooldpassbyvalue
(C++) Specifies how classes containing const or
reference members are passed in function arguments.
All classes in the compilation unit are affected by
this option. When -qoldpassbyvalue is specified,
the compiler mimics the IBM C/C++ compilers v3.6
compiler in that when a class containing a const or
reference member is passed as a function argument,
it is not passed by value. All such classes in the
compilation unit are affected.
Default: -qnooldpassbyvalue
-qupconv | -qnoupconv
(C) Preserves the unsigned specification when
performing integral promotions.
Default:
o -qupconv when -qlanglvl={extended|classic}.
o -qnoupconv otherwise.
-qvecnvol | -qnovecnvol
Specifies whether to use volatile or non-volatile
vector registers. Volatile vector registers are
registers whose value is not preserved across
function calls or in the context of save, jump or
switch system library functions. If -qnoenablevmx
is enabled, this option is ignored.
Default: -qnovecnvol
Compiler customization options
-qasm_as=<asm_path> [<flags_list>]
Specifies the path and flags used to invoke the
assembler in order to handle assembler code in an
asm statement. <asm_path> is the full path to the
assembler to be used, and <flags_list> is a series
of one or more flags (and their arguments),
separated by spaces. Single quotes (or double
quotes) are required around the string of arguments
if any spaces exist.
-B[<prefix>]
Determines substitute path names for programs used
during compilation, such as the compiler,
assembler, linkage editor, and preprocessor, where
<prefix> can be any program name recognized by the
-t compiler option. The optional <prefix> defines
part of a path name to the new programs. The -t
parameter, <program>, specifies the program to
which the <prefix> is to be appended. When
specifying <prefix>, there must be a slash (/)
after the folder name.
-qc_stdinc=<paths_list>
(C) Changes the standard search location for the XL
C headers. <paths_list> is a colon-separated list
of paths to search.
-qcpp_stdinc=<paths_list>
(C++) Specifies the standard search directories for
the XL C++ headers, where <paths_list> is a colon-
separated list of paths.
-F[<config_file>][:<stanza>]
Names an alternative configuration file (.cfg) for
the compiler. <config_file> is the name of a
compiler configuration file. <stanza> is the name
of the command used to invoke the compiler. This
directs the compiler to use the entries under
<stanza> in the <config_file> to set up the
compiler environment. At least one of the arguments
must be supplied.
-qpath=<program>:<path>
Constructs alternate program names for compiler
components. The program and directory path
specified are used in place of the regular program.
<program> can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-qspill=<size>
Specifies the size of the register allocation spill
area in bytes.
Default: -qspill=512
-t<programs_list>
Applies the prefix from the -B option to the
specified programs in <programs_list>.
<programs_list> is a chain (i.e: -tbcI) of one or
more of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-W<program>,<options_list>
Gives the specified option(s) to the compiler
program, <program>. <options_list> is a comma-
separated list of one or more options. <program>
can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = c++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = linkage helper (C++ only)
p = Preprocessor
SEE ALSO
gxlc(1), gxlc++(1), c++filt(1), CreateExportList(1),
linkxlC(1), makeC++SharedLib(1), vacndi(1), vacppndi(1),
showpdf(1), mergepdf(1), resetpdf(1), cleanpdf(1).
For more information, refer to the following Web sites:
http://www.ibm.com/software/awdtools/xlcpp/library/
http://www.ibm.com/software/awdtools/xlcpp/support/
COPYRIGHT
Licensed Materials - Property of IBM.
IBM XL C/C++ Enterprise Edition for AIX, V9.0.
5724-S71
Copyright IBM Corp. 1991, 2007. All Rights Reserved.
AIX, IBM, POWER3, POWER4, POWER5, POWER5+, POWER6,
PowerPC, PowerPC 604 and SAA are trademarks or registered
trademarks of International Business Machines Corporation
in the United States, other countries, or both.
Windows is a trademarks of Microsoft Corporation in the
United States, other countries, or both.
US Government Users Restricted Rights - Use, duplication
or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
configure:3298: $? = 249
configure:3305: xlc -v >&5
exec: export(export,XL_CONFIG=/etc/vac.cfg.53:xlc,NULL)
exec: less(less,/usr/vacpp/exe/default_msg/vacpp.txt,NULL)
xlc(1) IBM (2007) xlc(1)
NAME
xlc, xlc++, xlC, cc, c89, c99, xlCcore, xlc++core and
related commands - invoke the IBM XL C/C++ compiler.
SYNTAX
<invocation-command> [ <option> | <inputfile> ] ...
DESCRIPTION
The invocation commands compile C and C++ source files.
The commands and their recommended uses are described
below.
Invocations Usage (supported standards)
_________________________________________________________
xlc, xlc_r, xlc_r4, Compile C source files.
xlc_r7, xlc128, xlc128_r, (ANSI C89, ISO C99,
xlc128_r4, xlc128_r7 IBM language extensions)
xlc++, xlc++_r, xlc++_r4, Compile C++ source files.
xlc++_r7, xlc++128,
xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC, xlC_r,
xlC_r4, xlC_r7, xlC128,
xlC128_r, xlC128_r4,
xlC128_r7
cc, cc_r, cc_r4, cc_r7, Compile legacy code that
cc128, cc128_r, cc128_r4, does not conform to Standard
cc128_r7 C. (pre-ANSI C)
c89, c89_r, c89_r4, Compile C source files with
c89_r7, c89_128, c89_128_r, strict conformance to the
c89_128_r4, c89_128_r7 C89 standard. (ANSI C89)
c99, c99_r, c99_r4, Compile C source files with
c99_r7, c99_128, c99_128_r, strict conformance to the
c99_128_r4, c99_128_r7 C99 standard. (ISO 99)
xlc++core, xlc++core_r, Compile C++ source files
xlc++core_r7, xlc++core128, but the compiler will
xlc++core128_r, link only to the core of
xlc++core128_r7, xlCcore, the runtime library.
xlCcore_r, xlCcore_r7,
xlC128core, xlC128core_r,
xlC128core_r7
gxlc Accepts GNU C options, maps
them to their equivalent XL
C option, then invokes xlc.
gxlc++, gxlC Accepts GNU C/C++ options, maps
them to their equivalent XL
C++ option,then invokes xlc++.
The main difference between these commands is that they use different
default options (which are set in the configuration file
/etc/vac.cfg.XX, where XX represents the AIX version).
See the Compiler Reference for more information on these invocation
commands.
All invocations with a suffix of _r allow for thread-safe
compilation. Use these commands to create threaded
applications or to link programs that use multi-threading.
These commands also process assembler source files and
object files. The compiler calls the link editor to
produce a single executable or shared library, unless you
specify the compiler options that prevent object files
from being linked.
The input file may have any of the following suffixes:
.C, .cpp, .cxx, C++ source file
.cc, .cp, .c++
.c C source file
.i Preprocessed C or C++ source file
.a Archive file
.o Object file for ld command
.s Assembler source file
.S Assembler source file that
needs preprocessing
.so Shared object file
OPTIONS
Compiler options are categorized by their functions and
may be used to set the compiler behavior. Options can be
flag options or keyword options.
Keyword options are specified in one of the following
ways:
-q<option>
-q<option>=<suboption>
-q<option>=<suboption>:<suboption>
Keyword options with no suboptions represent switches that
may be either on or off. -qx turns the switch on, and
-qnox turns the switch off. For example, -qsource tells
the compiler to produce a source listing and -qnosource
tells the compiler not to produce a source listing.
Output control options
-c Instructs the compiler to pass source files to the
compiler only. The compiled source files are not
sent to the linker. This option produces an object
file, file_name.o, for each valid source file.
-C | -C!
Preserves or removes comments in preprocessed
output.
When -C is used with the -E option, comments are
written to standard output; with the -P option,
comments are written to an output file.
When -C! is in effect, comments are removed.
-E Instructs the compiler to preprocess the source
files named in the compiler invocation and creates
an output preprocessed source file.
-G Tells the linkage editor to create a shared object
enabled for runtime linking.
-M Creates an output file that contains information to
be included in a "make" description file. This is
equivalent to specifying -qmakedep without a
suboption.
-qmakedep[=gcc]
Creates an output file that contains targets
suitable for inclusion in a description file for
the make command that describes the dependencies of
the main source file in the compilation.
Specifying 'gcc' changes the format of the
generated dependency file.
Specifying -qmakedep without 'gcc' is equivalent to
specifying -M.
-MF<path>
Specifies the target for the output generated by
the -qmakedep or -M options, where <path> can be a
full directory path or file name. Note that "-MF
<path>" (with a space before the argument) is also
acceptable. This option only has effect when
specified with -qmakedep or -M.
(C)-qmkshrobj, (C++)-qmkshrobj[=<priority>]
Creates a shared object from the generated object
files.
The optional number specifies the priority level
for initialization of all static objects in the
file. <priority> may be any number from -214782623
(highest priority-initialized first) to 214783647
(lowest priority-initialized last). If no priority
is specified, the default priority of 0 is used.
The priority is not used when linking shared
objects (using the xlc command) written in C.
Specifying -qmkshrobj implies -qpic.
See related options, -e <name> and -o <path>.
-o <path>
Specifies an output location for the object,
assembler, or executable files created by the
compiler. When the -o option is used during
compiler invocation, <path> can be the name of
either a file or a directory.
Default: -o a.out
-P Preprocesses the C or C++ source files named in the
compiler invocation and creates an output
preprocessed source file for each input source
file. The preprocessed output file has the same
name as the output file, with a .i suffix.
-S Generates an assembler language file (.s) for each
source file. The resulting .s files can be
assembled to produce object .o files or an
executable file (a.out).
Input control options
-+ (C++) Compiles any file, <file_name.nnn>, as a C++
language file, where <nnn> is any suffix other than
.a, .so, .o, .s, or .S. This option is equivalent
to the -qsourcetype=c++ option and should not be
used together with the -qsourcetype option.
-qcinc=<directory_path> | -qnocinc
(C++) Instructs the compiler to place an extern "C"
{ } wrapper around the contents of an include file,
where <directory_path> is the location of that
include file.
Default: -qnocinc
-I<directory_path>
Specifies an additional search path for include
file names that do not specify an absolute path.
Default:
The following directories are searched, in the
following order, after any paths that are
specified by the -I option:
1) The current directory.
2) The directory where the source file is
located.
3) /usr/include.
-qidirfirst | -qnoidirfirst
Specifies the search order for files included with
the #include "<file_name>" directive. Use
-qidirfirst with the -I option. If -qidirfirst is
specified, the directories specified by the
-I<directory_path> option are searched before the
directory in which the current file resides.
Default: -qnoidirfirst
-qinclude=<file_path>
Specifies additional header files that are included
before the first line of a source file in a
compilation unit and ahead of any headers which may
be specified by an #include statement on the first
line of the source file.
-qsourcetype=<type>
Determines whether to treat all recognized source
files as if they are of the source type specified
by <type> (regardless of file name suffix), or
whether to use the file name suffix to determine
the programming language.
Note that the option only affects files that are
specified on the command line following the option,
but not those that precede the option. The
-qsourcetype option should not be used together
with the -+ option. The suboptions are:
default
The compiler assumes that the programming
language of a source file will be implied by
its file name suffix.
c
The compiler compiles all source files
following this option as if they are C
language source files.
assembler
The compiler compiles all source files
following this option as if they are assembler
language source files.
assembler-with-cpp
The compiler compiles all source files
following this option as if they are assembler
language source files that need preprocessing.
Default: -qsourcetype=default
-qstdinc | -qnostdinc
Specifies whether the standard directories are
searched for files included by the #include
<file_name> and #include "file_name" directives.
The -qnostdinc option excludes the standard include
directories from the search path.
Default: -qstdinc
Language element control options
-qaltivec | -qnoaltivec
Instructs the compiler to support vector data types
and operators and is accepted when the architecture
specified by the -qarch option supports vector
instructions and -qenablevmx is enabled.
Default: -qnoaltivec
-qasm[=<sub>] | -qnoasm[=<sub>]
Controls the interpretation of, and subsequent
generation of code for, asm statements.
In (C), <sub> can only be 'gcc'.
In (C++), <sub> can be:
gcc
Interprets asm statements using GCC syntax.
stdcpp
Interprets asm statements using stdcpp syntax.
Default:
(C++) -qnoasm=stdcpp in compat366 or strict98
modes, and -qasm=gcc otherwise.
(C) -qasm=gcc
-qcpluscmt | -qnocpluscmt
(C) Permits the usage of "//" to introduce a
comment that lasts until the end of the current
source line, as in C++.
Default:
o -qcpluscmt when you invoke the compiler with
xlc, xlc_r, cc, or cc_r, or when -qlanglvl is
set to stdc99 or extc99.
o -qnocpluscmt otherwise.
-D<name>[=[<def>]]
Defines <name> as in the #define directive. <def>
is an optional definition or value assigned to
<name>. Specifying -D<name>= (with no <def>) is
equivalent to #define <name>; specifying
-D<name> is equivalent to #define <name> 1.
-qdbcs | -qnodbcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qmbcs.
Default: -qnodbcs
-qdfp | -qnodfp
Enables compiler support for decimal floating-point
types and literals.
Default: -qnodpf
-qdigraph | -qnodigraph
Allows usage of digraph key combinations or
keywords to represent characters not found on some
keyboards.
Default:
(C) -qdigraph when -qlanglvl is extc89,
extended, extc99 or stdc99, and -qnodigraph
otherwise.
(C++) -qdigraph
-qdollar | -qnodollar
Allows the '$' symbol to be used in the names of
identifiers. When -qdollar is in effect, the dollar
symbol '$' in an identifier is treated as a base
character. If the options -qnodollar and
-qlanglvl=ucs are both enabled, the dollar symbol
is treated as an extended character.
Default: -qnodollar
-qignprag=<option>
Instructs the compiler to ignore certain pragma
statements. The options are:
disjoint
Ignores all #pragma disjoint directives in the
source file.
isolated_call
Ignores all #pragma isolated_call directives
in the source file.
all
Ignores all #pragma isolated_call directives
and #pragma disjoint directives in the source
file.
omp
Ignores all OpenMP parallel processing
directives in the source file.
ibm
(C) Ignores all #pragma ibm snapshot
directives and all IBM SMP directives in the
source file.
-qkeyword=<keyword> | -qnokeyword=<keyword>
Controls whether the specified name is treated as a
keyword or as an identifier whenever it appears in
a program source.
By default, all the built-in keywords defined in
the C and C++ language standards are reserved as
keywords. You cannot add keywords to the language
with this option. However, you can use
-qnokeyword=<keyword> to disable built-in keywords,
and use -qkeyword=<keyword> to reinstate those
keywords.
(C) This option can also be used with the following
C keywords: restrict, typeof, asm and inline.
(C++) This option can be used with all C++ built-in
keywords.
-qlanglvl=<suboptions_list>
Selects the language level and language options for
the compilation. <suboptions_list> is a colon-
separated list of suboptions.
(C) For C language programs, <suboptions_list> is
{classic|extended|saa|saa12|stdc89|stdc99|extc89|extc99}:{ucs|noucs}.
classic
Allows the compilation of non-stdc89 programs,
and conforms closely to the K&R level
preprocessor.
extended
Provides compatibility with the RT compiler
and classic. This language level is based on
C89.
saa
Compilation conforms to the current SAA(R) C
CPI language definition. This is currently SAA
C Level 2.
saal2
Compilation conforms to the SAA C Level 2 CPI
language definition, with some exceptions.
stdc89
Compilation conforms to the ANSI C89 standard,
also known as ISO C90.
stdc99
Compilation conforms to the ISO C99 standard.
extc89
Compilation conforms to the ANSI C89 standard,
and accepts implementation-specific language
extensions.
extc99
Compilation conforms to the ISO C99 standard,
and accepts implementation-specific language
extensions.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in program
source code.
Default:
o -qlanglvl=ucs under language levels stdc99
and extc99.
o -qlanglvl=noucs for all other language
levels.
(C++) The suboptions for C++ language programs are:
compat366
Compilation conforms to some, but not all, IBM
C and C++ Compilers V3.6 features.
extended
Compilation is based on the strict98, with
some differences to accommodate extended
language features.
strict98
Compilation conforms to the ISO C++ standard
for C++ programs.
anonstruct | noanonstruct
This suboption controls whether anonymous
structs and anonymous classes are allowed in
your C++ source. By default, the compiler
allows anonymous structs.
anonunion | noanonunion
This suboption controls what members are
allowed in anonymous unions. When this
suboption is set to anonunion, anonymous
unions can have members of all types that
standard C++ allows in non-anonymous unions.
ansifor | noansifor
This suboption controls whether scope rules
defined in the C++ standard apply to names
declared in for-init statements. By default,
standard C++ rules are used.
ansisinit | noansisinit
This suboption can be used to select between
old (v3.6 or earlier) and current (v5.0 or
later) compiler object compatibility.
c99__func__ | noc99__func__
This suboption instructs the compiler to
recognize the C99 __func__ identifier.
The c99__func__ suboption is enabled by
default when -qlanglvl=extended is enabled. It
can be enabled for any language level by
specifying -qlanglvl=c99__func__, or disabled
by specifying -qlanglvl=noc99__func__.
c99complex | noc99complex
This suboption instructs the compiler to
recognize C99 complex data types and related
keywords. It is set by default for
-qlanglvl=extended.
c99complexheader | noc99complexheader
This suboption instructs the compiler to use
the C99 complex.h header file.
c99compoundliteral | noc99compoundliteral
This suboption instructs the compiler to
support the C99 compound literal feature. It
is set by default for -qlanglvl=extended.
c99hexfloat | noc99hexfloat
This suboption enables support for C99-style
hexadecimal floating constants in C++
applications. It is on by default for
-qlanglvl=extended.
c99vla | noc99vla
When c99vla is enabled, the compiler will
support the use of C99-type variable length
arrays in your C++ applications. It is set by
default for -qlanglvl=extended.
compatzea | nocompatzea
The -qlanglvl=compatzea option is a
compatibility option that lets you continue to
use a zero extent array with dimension of 1.
Default: -qlanglvl=nocompatzea
Specifying -qlanglvl=compatzea has effect only
if -qlanglvl=zeroextarray is also enabled.
dependentbaselookup | nodependentbaselookup
Provides the ability to specify compilation in
conformance with issue 213 of TC1 of the C++
standard.
Default: -qlanglvl=dependentbaselookup
gnu_assert | nognu_assert
Enables or disables support for the following
GNU C system identification assertions:
'#assert', '#unassert', '#cpu', '#machine',
'#system'.
gnu_complex | nognu_complex
This suboption instructs the compiler to
recognize GNU complex data types and related
keywords.
gnu_computedgoto | nognu_computedgoto
Enables support for computed gotos. This
suboption is enabled for -qlanglvl=extended.
gnu_explicitregvar | nognu_explicitregvar
(C) Allows you to control whether the compiler
accepts and ignores the specification of
explicit registers for variables.
gnu_externtemplate | nognu_externtemplate
This suboption enables or disables extern
template instantiations.
Default:
gnu_externtemplate is enabled by default
when compiling to the extended language
level.
gnu_include_next | nognu_include_next
Enables or disables support for the GNU C
#include_next preprocessor directive.
Default:
gnu_include_next is enabled by default for
-qlanglvl=extended.
gnu_labelvalue | nognu_labelvalue
Enables or disables support for labels as
values.
Default:
gnu_labelvalue is enabled by default for
-qlanglvl=extended.
gnu_locallabel | nognu_locallabel
Enables or disables support for locally-
declared labels.
gnu_membernamereuse | nognu_membernamereuse
Enables or disables reusing a template name in
a member list as a typedef.
gnu_suffixij | nognu_suffixij
Enables or disables support for GCC style
complex numbers. If gnu_suffixij is specified,
a complex number can be ended with suffix i/I
or j/J.
Default:
gnu_suffixij is enabled by default for
-qlanglvl=extended.
gnu_varargmacros | nognu_varargmacros
This option is similar to
-qlanglvl=varargmacros. For the list of the
main differences, refer to the Compiler
Reference.
Default:
gnu_varargmacros is set by default for
-qlanglvl=extended.
gnu_warning | nognu_warning
Enables or disables support for the GNU C
#warning preprocessor directive.
illptom | noillptom
This suboption controls what expressions can
be used to form pointers to members. C/C++ can
accept some forms that are in common use, but
do not conform to the C++ standard. The
compiler allows these forms by default.
implicitint | noimplicitint
This suboption controls whether the compiler
will accept missing or partially specified
types as implicitly specifying 'int'. This is
no longer accepted in the standard but may
exist in legacy code.
With the suboption set to noimplicitint, all
types must be fully specified.
With the suboption set to implicitint, a
function declaration at namespace scope or in
a member list will implicitly be declared to
return int.
newexcp | nonewexcp
This suboption determines whether or not the
C++ new operator throws an exception. If the
-qlanglvl=newexcp option is specified, the
standard exception std::bad_alloc is thrown
when the requested memory allocation fails.
This option does not apply to the nothrow
versions of the new operator.
The standard implementation of the new
operators fully support exceptions. For
compatibility with previous versions of
VisualAge C++, these operators return 0 by
default.
offsetnonpod | nooffsetnonpod
This suboption controls whether the offsetof
macro can be applied to classes that are not
data-only.
By default, the compiler allows offsetof to be
used with non-POD classes.
olddigraph | noolddigraph
This option controls whether old-style
digraphs are allowed in your C++ source. It
applies only when -qdigraph is also set.
By default, the compiler supports only the
digraphs specified in the C++ standard.
oldfriend | nooldfriend
This option controls whether friend
declarations that name classes without
elaborated class names are treated as C++
errors.
By default, the compiler lets you declare a
friend class without elaborating the name of
the class with the keyword class.
oldmath | nooldmath
This suboption controls which versions of math
function declarations in <math.h> are included
when you specify math.h as an included or
primary source file.
By default, the new standard math functions
are used. Build with -qlanglvl=nooldmath for
strict compliance with the C++ standard. For
compatibility with modules that were built
with earlier versions of VisualAge C++ and
predecessor products, you may need to build
with -qlanglvl=oldmath.
oldtempacc | nooldtempacc
This suboption controls whether access to a
copy constructor to create a temporary object
is always checked, even if creation of the
temporary object is avoided.
By default, the compiler suppresses the access
checking.
oldtmplalign | nooldtmplalign
Controls whether alignment rules specified for
nested templates are ignored.
When the default, -qlanglvl=nooldtmplalign, is
in effect, these alignment rules are not
ignored.
Specify -qlanglvl=oldtmplalign for
compatibility with VisualAge C++ 4.0 and
predecessor products.
oldtmplspec | nooldtmplspec
This suboption controls whether template
specializations that do not conform to the C++
standard are allowed.
By default, the compiler allows these old
specializations (-qlanglvl=nooldtmplspec).
redefmac | noredefmac
Specifies whether a macro can be redefined
without a prior #undef or undefine()
statement.
trailenum | notrailenum
This suboption controls whether trailing
commas are allowed in enum declarations.
By default, the compiler allows one or more
trailing commas at the end of the enumerator
list.
typedefclass | notypedefclass
This suboption provides backwards
compatibility with previous versions of
VisualAge C++ and predecessor products.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in C++
sources.
Default: -qlanglvl=noucs
varargmacros | novarargmacros
This C99 feature allows the use of a variable
argument list in function-like macros in your
C++ applications.
zeroextarray | nozeroextarray
This suboption controls whether zero-extent
arrays are allowed as the last non-static data
member in a class definition.
By default, the compiler allows arrays with
zero elements.
The default depends on the invocation command used:
Command Default
_____________________________________________
xlC/xlc++ extended
xlc extc99
cc extended
c89 stdc89
c99 stdc99
-qlonglong | -qnolonglong
Allows IBM-style long long integers. This option
cannot be used with -qlanglvl=stdc99 or
-qlanglvl=extc99.
Default:
o -qlonglong when compiling with xlc, xlc++,
xlC or cc.
o -qnolonglong when compiling with c89 or c99.
-qmacpstr | -qnomacpstr
Converts Pascal string literals into null-
terminated strings where the first byte contains
the length of the string.
Default: -qnomacpstr
-qmbcs | -qnombcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qdbcs.
Default: -qnombcs
-qstaticinline | -qnostaticinline
(C++) Controls whether inline functions are treated
as static or extern. Specifying -qnostaticinline
means the inline functions are treated as having
extern linkage.
Default: -qnostaticinline
-qtabsize=<size>
Changes the length of tabs as perceived by the
compiler, where <size> is the number of character
spaces representing a tab in the source program.
Default: -qtabsize=8
-qtrigraph | -qnotrigraph
Allows trigraph key combinations to represent
characters not found on some keyboards.
Default: -qtrigraph
However, if -qlanglvl=classic is enabled or
implied, the trigraphs are not recognized by
default.
-U<name>
Undefines the identifier <name> defined by the
compiler or by the -D<name> option.
-qutf | -qnoutf
Enables recognition of UTF literal syntax.
Default:
o (C) -qnoutf
o (C++) -qutf for all language levels except
-qlanglvl=strict98
o (C++) -qnoutf when -qlanglvl=strict98 is in
effect
Template control options (C++ only)
-qtempinc[=<directory_path>] | -qnotempinc
(C++) Generates separate template include files for
template functions and class declarations, and
places these files in a directory which can be
optionally specified.
Default: -qnotempinc
-qtemplatedepth=<number>
(C++) Specifies the maximum number of recursively
instantiated template specializations that will be
processed by the compiler. <number> can be a value
between 1 and INT_MAX.
Default: -qtemplatedepth=300
-qtemplaterecompile | -qnotemplaterecompile
(C++) Helps manage dependencies between compilation
units that have been compiled using the
-qtemplateregistry compiler option.
Default: -qnotemplaterecompile
-qtemplateregistry[=<filename>] | -qnotemplateregistry
(C++) Maintains records of all templates as they
are encountered in the source and ensures that only
one instantiation of each template is made.
Default: -qnotemplateregistry
-qtempmax=<number>
(C++) Specifies the maximum number of template
include files to be generated by the -qtempinc
option for each header file.
Default: -qtempmax=1
-qtmplinst=<suboption>
(C++) Allows you to manage implicit template
instantiations. <suboption> is one of the
following:
none
Instantiates only the inline functions. If
this is specified, -qtempinc and
-qtemplateregistry are ignored.
noinline
Suppresses all implicit instantiations.
auto
Handles the implicit instantiations according
to the -qtempinc and -qtemplateregistry
options. If both options are off, then
implicit instantiations are always performed.
always
Always perform implicit instantiations. This
will ignore the -qtempinc and
-qtemplateregistry options.
Default: -qtmplinst=auto
-qtmplparse=<option>
(C++) Controls whether parsing and semantic
checking are applied to template definition
implementations or only to template instantiations.
The compiler has the option to produce warning or
error messages. The suboptions are:
no
Does not parse, to reduce the number of errors
issued in code written for previous versions
of the compiler.
warn
Parses template definitions and issues warning
messages for semantic errors.
error
Treats problems in template definitions as
errors, even if the template is not
instantiated.
Default: -qtmplparse=no
Floating-point and integer control options
-qbitfields={signed|unsigned}
Specifies whether bit fields will be signed or
unsigned.
Default: -qbitfields=unsigned
-qchars={signed|unsigned}
Specifies whether the data type char will be signed
or unsigned.
Default: -qchars=unsigned
-qenum=<suboption>
Specifies the amount of storage occupied by
enumerations, where <suboption> can be:
small
Specifies that enumerations occupy the
smallest amount of space (1, 2, 4, or 8 bytes)
that can accurately represent the range of
values in the enumeration. Signage is
unsigned, unless the range of values includes
negative values.
int
Specifies that enumerations occupy 4 bytes and
are represented by int.
intlong
Specifies that enumerations occupy 8 bytes of
storage if the range of values in the
enumeration exceeds the limit for int.
Otherwise, the enumerations occupy 4 bytes of
storage and are represented by int.
1
Specifies that enumerations occupy 1 byte.
Type is signed or unsigned char.
2
Specifies that enumerations occupy 2 bytes.
Type is signed or unsigned short.
4
Specifies that enumerations occupy 4 bytes.
Type is signed or unsigned int.
8
Specifies that enumerations occupy 8 bytes.
Type is signed or unsigned long long in 32-bit
mode, and signed or unsigned long in 64-bit
mode.
Default: -qenum=intlong
-qfloat=<suboptions_list>
Specifies various floating-point suboptions. This
provides different strategies for speeding up or
improving the accuracy of floating-point
calculations. <suboptions_list> is a colon-
separated list of one or more of the following:
dfpemulate | nodfpemulate
Specifies whether decimal floating-point
computations are implemented in hardware
instructions or emulated in software by calls
to library functions.
-qdfp must be enabled for either suboption to
have any effect. nodfpemulate is only valid on
a system that supports decimal floating-point
instructions; that is, on AIX 5.3 and higher,
and with -qarch=pwr6 in effect. dfpemulate is
required for all other -qarch values.
Default: dfpemulate
fenv | nofenv
Specifies whether the code depends on the
hardware environment and whether to suppress
optimizations that could cause unexpected
results due to this dependency.
When nofenv is in effect, the compiler assumes
that the program does not depend on the
hardware environment, and that aggressive
compiler optimizations that change the
sequence of floating-point operations are
allowed to be performed. When fenv is in
effect, such optimizations are suppressed.
Default: nofenv
fltint | nofltint
Speeds up floating-point-to-integer
conversions by using faster inline code that
does not check for overflows. -qfloat=nofltint
checks floating-point-to-integer conversions
for out-of-range values.
Default:
o nofltint at -O2 optimization.
o fltint when -qnostrict or -O3 or higher
optimization level is in effect.
fold | nofold
Specifies that constant floating-point
expressions are to be evaluated at compile
time rather than at run time.
Default: fold
hscmplx | nohscmplx
Speeds up operations involving complex
division and complex absolute value. This
suboption, which provides a subset of the
optimizations of the hsflt suboption, is
preferred for complex calculations.
Default: nohscmplx
hsflt | nohsflt
The hsflt option speeds up calculations by
truncating instead of rounding computed values
to single precision before storing and on
conversions from floating-point to integer.
The nohsflt suboption specifies that single-
precision expressions are rounded after
expression evaluation and that floating-
point-to-integer conversions are to be checked
for out-of-range values.
Default: nohsflt
hssngl | nohssngl
The hssngl option specifies that single-
precision expressions are rounded only when
the results are stored into float memory
locations. The nohssngl option specifies that
single-precision expressions are rounded after
expression evaluation. Using hssngl can
improve runtime performance and is safer than
using -qfloat=hsflt.
Default: nohssngl
maf | nomaf
Makes floating-point calculations faster and
more accurate by using floating-point
multiply-add instructions where appropriate.
Default: maf
nans | nonans
Generates extra instructions to detect
signalling NaN when converting from single-
precision to double-precision at run time. The
option nonans specifies that this conversion
need not be detected.
Default: nonans
relax | norelax
Relaxes the strict IEEE-conformance slightly
for greater speed, typically by removing some
trivial, floating-point arithmetic operations,
such as adds and subtracts involving a zero on
the right.
Default: norelax
rndsngl | norndsngl
Specifies that the result of each single-
precision (float) operation is to be rounded
to single precision. -qfloat=norndsngl
specifies that rounding to single-precision
happens only after full expressions have been
evaluated.
Default: rndsngl
rngchk | norngchk
Specifying norngchk instructs the compiler to
skip range checking, allowing for increased
performance where division and sqrt operations
are performed repeatedly within a loop.
When rngchk is specified, range checking is
performed for input arguments for software
divide and inlined sqrt operations.
When -qstrict is active, the setting of this
option is forced to -qfloat=rngchk. When
-qnostrict is active, the setting of this
option is -qfloat=norngchk unless the
-qfloat=rngchk option is explicitly set by the
user.
Default: rngchk
rrm | norrm
Prevents floating-point optimizations that are
incompatible with runtime rounding to plus and
minus infinity modes.
Default: norrm
rsqrt | norsqrt
Specifies whether a sequence of code that
involves division by the result of a square
root can be replaced by calculating the
reciprocal of the square root and multiplying.
Allowing this replacement produces code that
runs faster. -qfloat=rsqrt has no effect
unless -qignerrno is also specified.
Default:
o norsqrt at -O2 optimization.
o rsqrt when when -qnostrict or -O3 or
higher optimization level is in effect.
single | nosingle
Allows single-precision arithmetic
instructions to be generated for single-
precision floating-point values. All PowerPC
processors support single-precision
instructions; however, if you wish to preserve
the behavior of applications compiled for
earlier architectures, in which all floating-
point arithmetic was performed in double-
precision and then truncated to single-
precision, you can use
-qfloat=nosingle:norndsngl. This suboption
provides computation precision results
compatible with those provided by the
deprecated options
-qarch=com|pwr|pwrx|pwr2|p2sc|601|602|603.
Default: single
spnans | nospnans
Detects signalling NaN on conversion from
single-precision to double-precision.
Default: nospnans
-qldbl128 | -qnoldbl128
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qlongdouble.
Default: -qnoldbl128
-qlongdouble | -qnolongdouble
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qldbl128.
Default: -qnolongdouble
-qlonglit | -qnolonglit
Makes unsuffixed literals into the long type in
64-bit mode.
Default: -qnolonglit
-y<rounding_mode>
Specifies the compile-time rounding mode of
constant floating-point expressions.
For binary floating-point types, <rounding_mode> is
one of the following:
m = round toward minus infinity
n = round to the nearest representable number, ties
to even
p = round toward plus infinity
z = round toward zero
Default: -yn
For decimal floating-point types, <rounding_mode>
is one of the following:
di = round toward infinities (away from zero)
dm = round toward minus infinity
dn = round to the nearest representable number,
ties to even
dna = round to the nearest representable number,
ties away from zero
dnz = round to the nearest representable number,
ties toward zero
dp = round toward plus infinity
dz = round toward zero
Default: -ydn
Object code control options
-q32, -q64
Selects either 32-bit or 64-bit compilation mode.
Use the -q32 and -q64 options, along with the
-qarch and -qtune compiler options, to optimize the
output of the compiler to the architecture on which
that output will be used.
Default: -q32
-qalloca
(C) Substitutes inline code for calls to function
alloca, as if #pragma alloca directives were in the
source code.
-ma (C) Substitutes inline code for calls to function
alloca.
-qeh[={v5|v6}] | -qnoeh
(C++) Controls whether exception handling is
enabled in the module being compiled.
v5
Instructs the compiler to generate exception-
handling code that is compatible with
VisualAge C++ V5.0.
v6
Instructs the compiler to generate new
exception-handling code, compatible with
VisualAge C++ V6.0, that correctly handles
try-catch blocks nested within other catch
blocks.
Default: -qeh=v6
-qexpfile=<file_name>
Saves the exported symbols in the specified file
and is only used together with the -qmkshrobj
compiler option.
Refer to the -qmkshrobj option for more
information.
-qfuncsect[=[no]implicitstaticref] | -qnofuncsect
Places instructions for each function in a separate
object file control section or csect. -qfuncsect
can take the following suboption:
implicitstaticref | noimplicitstaticref
Specifies whether the compiler generates dummy
references to the static area. Specifying
-qfuncsect with no suboption implies
implicitstaticref. Specifying
noimplicitstaticref removes unnecessary
references to the static data area.
Default: -qnofuncsect
-qinlglue | -qnoinlglue
This option inlines glue code that optimizes
external function calls when compiling at -q64 and
-O2 and higher.
Default: -qnoinlglue
-qkeepinlines | -qnokeepinlines
(C++) Instructs the compiler to keep or discard
definitions for unreferenced extern inline
functions. Discarding these definitions can reduce
the size of the object files. The -qkeepinlines
setting keeps the definitions of unreferenced
extern inline functions.
Default: -qnokeepinlines
-qpic[={small|large}] | -qnopic
Generates position-independent code (pic). Specify
-qpic=small if the global offset table must be 64
Kb or smaller, or -qpic=large if it can be larger
than 64 Kb.
Default: -qpic=small
-qppline | -qnoppline
When used in conjunction with the -E or -P options,
enables or disables the generation of #line
directives in the preprocessed output.
Default:
o -qnoppline with -P
o -qppline with -E
-qpriority=<num>
(C++) Specifies the priority level for the
initialization of static objects, where <num> is
the initialization priority level assigned to the
static objects within a file, or the priority level
of a shared or non-shared file or library.
You can specify a priority level from -(2147483647
+ 1) (highest priority) to +2147483647 (lowest
priority).
Default: -qpriority=0
-qproto | -qnoproto
(C) Assumes that all functions are prototyped.
Asserts that procedure call points agree with their
declarations even if the procedure has not been
prototyped. This allows the caller to pass
floating-point arguments in floating-point
registers instead of general-purpose registers.
Default: -qnoproto
-r Produces a relocatable object. This permits the
output file to be produced even though it contains
unresolved symbols.
-qreserved_reg=<registers_list>
Indicates that the specified register(s) cannot be
used during the compilation, except as a stack
pointer, frame pointer or in a different fixed
role. <registers_list> is a colon-separated list of
registers.
-qro | -qnoro
Specifies the storage type for string literals and
puts string literals in read-only storage.
Default:
o -qnoro with cc and its derivatives.
o -qro otherwise.
-qroconst | -qnoroconst
Specifies the storage location for constant values.
Default:
o -qroconst with xlc, xlc++, xlC, c89 and c99
invocations commands.
o -qnoroconst with cc.
-qroptr | -qnoroptr
Specifies the storage location for constant
pointers.
Default: -qnoroptr
-qrtti=<option> | -qnortti
(C++) Generates runtime type identification (RTTI)
information for the typeid and dynamic_cast
operators. The suboptions are:
all
Generates the information needed for the RTTI
typeid and dynamic_cast operators.
type | typeinfo
Generates the information needed for the RTTI
typeid operator only.
dyna | dynamiccast
Generates the information needed for the RTTI
dynamic_cast operator only.
Default: -qnortti
-s Strips the symbol table, line number information,
and relocation information from the output file.
-qsaveopt | -qnosaveopt
Saves the command-line options used for compiling a
source file, the version and level of each compiler
component invoked during compilation, and other
information to the corresponding object file.
This option must be used with the -c option.
Default: -qnosaveopt
-qstatsym | -qnostatsym
Adds user-defined, non-external names that have a
persistent storage class (such as initialized and
uninitialized static variables) to the name list
(the symbol table of objects).
Default: -qnostatsym
-qtbtable=<suboption>
Generates a traceback table that contains
information about each function, including the type
of function as well as stack frame and register
information. The traceback table is placed in the
text segment at the end of its code. Suboptions
include:
none
No traceback table is generated.
small
A traceback table is generated with no name or
parameter information. This is the default
with optimization if -g is not specified.
full
A full traceback table is generated. This is
the default with -qnoopt or -g specified.
Default:
o -qtbtable=full when compiling non-optimized
(without -O) or for debugging (with -g).
o -qtbtable=small otherwise.
-qthreaded | -qnothreaded
Ensures that all optimizations will be thread-safe
for executing in a multi-threaded environment.
Default:
o -qthreaded when compiling invocation
commands ending in "_r" or "_r7".
o -qnothreaded otherwise.
-qtls[=<model>] | -qnotls
Specifies the thread-local storage model to be used
by the application, where <model> can be:
global-dynamic
This model is the most general, and can be
used for all thread-local variables.
local-dynamic
This model provides better performance than
the global-dynamic model, and can be used for
thread-local variables defined in
dynamically-loaded modules.
initial-exec
This model provides better performance than
the global-dynamic or local-dynamic models,
and can be used for thread-local variables
defined in dynamically-loaded modules,
provided that those modules are loaded at the
same time as the executable.
local-exec
This model provides the best performance of
all of the models, but can only be used when
all thread-local variables are defined and
referenced by the main executable.
Default:
o -qtls=unsupported
o -qtls=initial_exec if the -qnopic compiler
option is enabled.
o -qtls=global_dynamic if the -qpic compiler
option is enabled.
-qunique | -qnounique
(C++) Generates unique names for static
constructor/destructor file compilation units.
Default: -qnounique
-qweakexp | -qnoweakexp
When used with the -qmkshrobj or -G options,
includes or excludes global symbols marked as weak
from the export list generated when you create a
shared object.
Default: -qweakexp
-qweaksymbol | -qnoweaksymbol
Instructs the compiler to generate weak symbols.
Default: -qweaksymbol
-qxcall | -qnoxcall
Generates code to treat static functions within a
compilation unit as if they were external
functions.
Default: -qnoxcall
Error checking and debugging options
-# Traces the compilation and generates information on
the progress of the compilation without invoking
the preprocessor, compiler, or linkage editor.
-qcheck[=<suboptions_list>] | -qnocheck
Generates code that performs certain types of
runtime checking. If a violation is encountered, a
runtime exception is raised by sending a SIGTRAP
signal to the process. <suboptions_list> is a
colon-separated list of one or more of the
following:
all
Enables all suboptions.
bounds | nobounds
Performs runtime checking of addresses when
subscripting within an object of known size.
divzero | nodivzero
Performs runtime checking of integer division.
A trap will occur if an attempt is made to
divide by zero.
nullptr | nonullptr
Performs runtime checking of addresses
contained in pointer variables used to
reference storage.
Default: -qnocheck
-qdbxextra | -qnodbxextra
(C) Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for debugging. Use this option with the -g
option to produce additional debugging information
for use with a debugger.
Default: -qnodbxextra
-qdpcl | -qnodpcl
Generates symbols that can be used by tools based
on the Dynamic Probe Class Library (DPCL) to see
the structure of an executable file.
Default: -qnodpcl
-qextchk | -qnoextchk
Generates bind-time type-checking information and
checks for compile-time consistency.
Default: -qnoextchk
-qflttrap[=<suboptions_list>] | -qnoflttrap
Generates instructions to detect and trap runtime
floating-point exceptions. <suboptions_list> is a
colon-separated list of one or more of the
following suboptions:
enable
Enables trapping of the specified exceptions.
imprecise
Only checks for the specified exceptions on
subprogram entry and exit.
inexact
Detects floating-point inexact exceptions.
invalid
Detects floating-point invalid operation
exceptions.
nanq
Generates code to detect and trap NaNQ (Not a
Number Quiet) exceptions handled or generated
by floating-point operations.
overflow
Detects floating-point overflow.
underflow
Detects floating-point underflow.
zerodivide
Detects floating-point division by zero.
Default: -qnoflttrap
-qformat=<options_list> | -qnoformat
Warns of possible problems with string input and
output format specifications. Functions diagnosed
are printf, scanf, strftime, strfmon family
functions and functions marked with format
attributes. <options_list> is a comma-separated
list of one or more of the following suboptions:
all | noall
Turns on all format diagnostic messages.
exarg | noexarg
Warns if excess arguments appear in printf and
scanf style function calls.
nlt | nonlt
Warns if a format string is not a string
literal, unless the format function takes its
format arguments as a va_list.
sec | nosec
Warns of possible security problems in use of
format functions.
y2k | noy2k
Warns of strftime formats that produce a 2-
digit year.
zln | nozln
Warns of zero-length formats.
Default:
o -qnoformat, which is equivalent to
-qformat=noall.
o -qformat=all if -qformat is specified
without any suboptions.
-qfullpath | -qnofullpath
Records the full or absolute path names of source
and include files in object files compiled with
debugging information (when you use the -g option).
Default: -qnofullpath
-g Generates debug information for debugging tools.
-qdbg is the long form of -g.
-g implies the -Q! option.
-qhalt=<sev>
Stops the compiler after the first phase if the
severity level of errors detected equals or exceeds
the specified level, <sev>. The severity levels in
increasing order of severity are:
i = informational messages
w = warning messages
e = error messages (C only)
s = severe error messages
Default: -qhalt=s
-qhaltonmsg=<msgnum_list>
(C++) Stops the compiler after the compilation
phase where it encounters the specified message
number(s), where <msgnum_list> is a comma-separated
list of message numbers.
-qheapdebug | -qnoheapdebug
Enables debug versions of memory management
functions.
Default: -qnoheapdebug
-qinfo[=[<suboption>][<groups_list>]] | -qnoinfo
Produces or suppresses informational messages.
<groups_list> is a colon-separated list. If a
<groups_list> is specified along with a
<suboption>, a colon must separate them. The
suboptions are:
all
Enables all diagnostic messages for all
groups.
noall
Disables all diagnostic messages for all
groups.
private
Lists shared variables that are made private
to a parallel loop.
reduction
Lists variables that are recognized as
reduction variables inside a parallel loop.
<groups_list> turns on or off specific groups of
messages and is a colon-separated list of one or
more of the following:
c99 | noc99
(C) C code that might behave differently
between C89 and C99 language levels
cls | nocls
C++ classes
cmp | nocmp
Possible redundancies in unsigned comparisons
cnd | nocnd
Possible redundancies or problems in
conditional expressions
cns | nocns
Operations involving constants
cnv | nocnv
Conversions
dcl | nodcl
Consistency of declarations
eff | noeff
Statements and pragmas with no effect
enu | noenu
Consistency of enum variables
ext | noext
Unused external definitions
gen | nogen
General diagnostic messages
gnr | nognr
Generation of temporary variables
got | nogot
Use of goto statements
ini | noini
Possible problems with initialization
lan | nolan
Language level effects
obs | noobs
Obsolete features
ord | noord
Unspecified order of evaluation
par | nopar
Unused parameters
por | nopor
Non-portable language constructs
ppc | noppc
Possible problems with using the preprocessor
ppt | noppt
Trace of preprocessor actions
pro | nopro
Missing function prototypes
rea | norea
Code that cannot be reached
ret | noret
Consistency of return statements
trd | notrd
Possible truncation or loss of data or
precision
tru | notru
Variable names truncated by the compiler
trx | notrx
Rounding of hexadecimal floating-point
constants
uni | nouni
Uninitialized variables
upg | noupg
Upgrade issues from one release to the next
release
use | nouse
(C++) Unused auto and static variables
vft | novft
(C++) Generation of virtual function tables in
C++ programs
zea | nozea
Zero-extent arrays
Default:
(C) -qnoinfo
(C++) -qinfo=lan:trx
If -qinfo is specified without a suboption, the
default is -qinfo=all for C and -qinfo=all:noppt
for C++.
-qinitauto=<hex_value> | -qnoinitauto
Initializes each byte or word of storage for
automatic variables to the specified hexadecimal
value <hex_value>. This generates extra code and
should only be used for error determination.
Default: -qnoinitauto
-qkeepparm | -qnokeepparm
Ensures that function parameters are stored on the
stack even if the application is optimized. As a
result, parameters remain in the expected memory
location, providing access to the values of these
incoming parameters to tools such as debuggers.
Default: -qnokeepparm
-qlinedebug | -qnolinedebug
Generates only abbreviated line number and source
file name information for the debugger.
Default: -qnolinedebug
-qmaxerr=<num>[:<sev>] | -qnomaxerr
Instructs the compiler to halt compilation when the
specified number of errors of the specified
severity (by default, the value of -qhalt) or
greater is reached. <num> must be an integer. The
severity levels, <sev>, are:
i = informational
w = warning
e = error (C only)
s = severe error
Default: -qnomaxerr
-qoptdebug | -qnooptdebug
When used with high levels of optimization,
-qoptdebug produces source files containing
optimized pseudocode that can be read by a
debugger.
An output file with a .optdbg extension is created
for each input file compiled with -qoptdebug. You
can use the information contained in this file to
help you understand how your code actually behaves
under optimization.
Default: -qnooptdebug
-qsymtab={unref|static}
(C) Determines what types of information appear in
the symbol table. The suboptions are:
unref
Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for processing by the debugger.
static
Adds user-defined, non-external names that
have a persistent storage class (such as
initialized and uninitialized static
variables) to the name list.
Default:
The default is to not add static variables to
the symbol table.
-qsyntaxonly
(C) Performs syntax checking without generating an
object file.
Default:
By default, source files are compiled and
linked to generate an executable file.
-qwarn64 | -qnowarn64
Enables checking for possible data conversion
problems between 32-bit and 64-bit compiler modes.
Default: -qnowarn64
Listing and messages options
-qattr[=full] | -qnoattr
Produces a compiler listing that includes an
attribute listing for all identifiers. If -qattr is
specified, the listing contains only those
identifiers that are used. If -qattr=full is
specified, the listing contains all names. If
-qnoattr is specified, no listing is produced.
Default: -qnoattr
-qdump_class_hierarchy
(C++) For each class object, this option dumps a
representation of its hierarchy and virtual
function table layout to a file. The file name is
created by appending ".class" to the source file
name.
-qflag=<listing_severity>:<terminal_severity>
Defines the minimum severity level of diagnostic
messages to be written to the listing file and to
the user terminal. <listing_severity> is the
minimum level for the listing file, and
<terminal_severity> is the minimum level for the
terminal. The message severity levels are:
i = informational messages
w = warning messages
e = error, severe error and unrecoverable error
messages (C only)
s = severe error and unrecoverable error messages
(C)
s = severe error messages (C++)
Default: -qflag=i:i
-qlist[={offset|nooffset}] | -qnolist
Produces a compiler listing that includes an object
listing. You can use the object listing to help
understand the performance characteristics of the
generated code and to diagnose execution problems.
offset | nooffset
Changes the offset of the PDEF header from
00000 to the offset of the start of the text
area.
Specifying -qlist without the suboption is
equivalent to list=nooffset.
Default: -qnolist
-qlistopt | -qnolistopt
Produces a compiler listing that displays all the
options that were in effect when the compiler was
invoked.
Default: -qnolistopt
-qphsinfo | -qnophsinfo
Reports the time taken in each compilation phase.
Phase information is sent to standard output. The
output takes the form <number1>/<number2> for each
phase where <number1> represents the CPU time used
by the compiler and <number2> represents the total
of the compiler time and the time that the CPU
spends handling system calls.
Default: -qnophsinfo
-qprint | -qnoprint
Enables or suppresses listings. Specifying
-qnoprint overrides all listing-producing options,
regardless of where they are specified, to suppress
listings.
Default: -qprint
-qreport | -qnoreport
Instructs the compiler to produce transformation
reports that show how program loops are optimized.
The transformation reports are included as part of
the compiler listing. This option requires -qhot or
-qsmp in order to have effect.
When used with -qipa=clonearch, -qreport produces
transformation reports on the procedures that are
cloned for the architectures specified by the
option.
Default: -qnoreport
-qshowinc[=<types_list>] | -qnoshowinc
Used with -qsource to selectively show user header
files (includes using " ") or system header files
(includes using < >) in the program source listing.
<types_list> is a colon-separated list of one or
more of the following types:
usr | nousr
Specifies whether to show user include files.
sys | nosys
Specifies whether to show system include
files.
all
Shows both user and system include files.
Default: -qnoshowinc
-qsource | -qnosource
Produces a compiler listing that includes source
code.
Default: -qnosource
-qsrcmsg | -qnosrcmsg
(C) Adds the corresponding source code lines to the
diagnostic messages in the stderr file.
Default: -qnosrcmsg
-qsuppress=<msg_id> | -qnosuppress=[<msg_id>]
Prevents the specified compiler or driver
informational or warning messages from being
displayed or added to the listings, where <msg_id>
is a colon-separated list of message numbers to
suppress or display.
NOTE: In (C++), -qnosuppress requires that you
supply message number(s), and in (C), -qnosuppress
does not allow you to supply any.
Default: -qnosuppress
-v Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a comma-separated list.
-V Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a space-separated list.
-qversion[=verbose]
Displays the official compiler product name and the
compiler version found on the system.
verbose
Additionally displays information about the
version, release, and level of each compiler
component installed.
-w Suppresses informational, language-level and
warning messages.
Specifying this option is equivalent to specifying
-qflag=e:e in C or -qflag=s:s in C++.
-qxref[=full] | -qnoxref
Specifies whether to produce a compiler listing
that includes a cross-reference listing of all
identifiers. Specifying -qxref will report only
identifiers that are used, -qxref=full reports all
identifiers in the program, and -qnoxref does not
report any identifiers in the program. The
-qnoprint option overrides this option.
Default: -qnoxref
Optimization and tuning options
-qaggrcopy={overlap|nooverlap}
Enables destructive copy operations for structures
and unions.
overlap | nooverlap
Enables or disables optimizations for
structure and union assignments. nooverlap
assumes that the source and destination for
structure and union assignments do not
overlap, allowing the compiler to generate
faster code. overlap inhibits these
optimizations.
Default: -qaggrcopy=nooverlap
-qalias=<suboptions_list>
Specifies the aliasing assertions to be applied to
your compilation unit. <suboptions_list> is a
colon-separated list of the following options:
addrtaken | noaddrtaken
Variables are disjoint from pointers unless
their address is taken.
allptrs | noallptrs
Pointers are never aliased if allptrs is
specified, but may be aliased if noallptrs is
specified. -qalias=allptrs implies
-qalias=typeptr.
ansi | noansi
If ansi is specified, type-based aliasing is
used during optimization, which restricts the
lvalues that can be safely used to access a
data object. This option has no effect unless
you also specify the -O option.
Specifying -qalias=noansi turns off type-based
aliasing completely.
global | noglobal
When global is in effect, type-based aliasing
rules are enabled during IPA link-time
optimization across compilation units. Both
-qipa and -qalias=ansi must be enabled for
-qalias=global to have an effect.
Specifying noglobal disables type-based
aliasing rules across compilation units.
restrict | norestrict
When restrict is in effect, optimizations for
pointers qualified with the restrict keyword
are enabled. Specifying norestrict disables
optimizations for restrict-qualified pointers.
-qalias=restrict is independent from other
-qalias suboptions.
typeptr | notypeptr
Pointers to different types are never aliased
if typeptr is specified, but may be aliased if
notypeptr is specified.
Default:
(C++)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
(C)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
for all invocation commands except cc.
-qalias=noaddrtaken:noallptrs:noansi:global:restrict:notypeptr
for the cc invocation command.
-qarch=<suboption>
Specifies the general processor architecture for
which the code (instructions) should be generated.
In general, the -qarch option allows you to target
a specific architecture for the compilation. For
any given -qarch setting, the compiler defaults to
a specific, matching -qtune setting, which can
provide additional performance improvements. The
suboptions are:
auto
Automatically detects the specific
architecture of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
403
Produces object code containing instructions
that will run on the PowerPC 403 hardware
platform.
604
Produces an object that contains instructions
that run on PowerPC 604 systems.
pwr3
Produces an object that contains instructions
that run on the POWER3 hardware platforms.
pwr4
Produces an object that contains instructions
that run on the POWER4 hardware platforms.
pwr5
Produces an object that contains instructions
that run on the POWER5 hardware platforms.
pwr5x
Produces an object that contains instructions
that run on the POWER5+ hardware platforms.
pwr6
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 architected mode. If you
would like support for decimal floating-point
instructions, be sure to specify this
suboption during compilation.
pwr6e
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 raw mode.
ppc
Produces an object that contains instructions
that run on any of the 32-bit PowerPC hardware
platforms. Using -q64 with ppc upgrades the
architecture to ppc64.
ppc64
Produces object code that will run on any 64-
bit PowerPC hardware platform. When compiled
in 32-bit mode, the resulting object code may
include instructions that are not recognized
or behave differently when run on 32-bit
PowerPC platforms.
ppcgr
In 32-bit mode, produces object code
containing optional graphics instructions for
PowerPC hardware platforms.
In 64-bit mode, produces object code
containing optional graphics instructions that
will run on 64-bit PowerPC platforms, but not
on 32-bit-only platforms. Using -q64 with
ppcgr upgrades the architecture to ppc64gr.
ppc64gr
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics instructions.
ppc64grsq
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics and square root
instructions.
ppc64v
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional vector instructions, such as a
PowerPC 970.
ppc970
Generates instructions specific to PowerPC 970
processors.
rs64a
Produces an object that contains instructions
that run on an RS64I hardware platform.
rs64b
Produces an object that contains instructions
that run on an RS64II hardware platform.
rs64c
Produces an object that contains instructions
that run on an RS64III hardware platform.
Default: -qarch=ppc
-qcache=<suboptions_list>
Describes the cache configuration for a specific
target execution machine, where <suboptions_list>
is a colon-separated list of one or more of the
following suboptions:
assoc=<number>
Specifies the set associativity of the cache,
where <number> is one of the following:
0 Direct-mapped cache
1 Fully associative cache
(number > 1) n-way set associative cache
auto
Automatically detects the specific cache
configuration of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
cost=<cycles>
Specifies the performance penalty, in CPU
cycles, resulting from a cache miss.
level=<level>
Specifies which level of cache is affected,
where level is one of the following::
1 Basic cache
2 Level-2 cache
3 Table Lookaside Buffer (TLB)
If a machine has more than one level of cache,
use a separate -qcache option.
line=<bytes>
Specifies the line size of the cache.
size=<Kbytes>
Specifies the total size of the cache.
type=<cache_type>
The settings apply to the specified type of
cache, where <cache_type> is one of the
following:
C or c = Combined data and instruction
cache
D or d = Data cache
I or i = Instruction cache
Default:
The -qtune setting determines the optimal
default -qcache settings for most typical
compilations. -O4, -O5, or -qipa must be
specified with the -qcache option.
-qcompact | -qnocompact
Reduces code size where possible, at the expense of
execution speed. Code size is reduced by inhibiting
optimizations that replicate or expand code inline.
This option takes effect only if -O2 or higher is
also used.
Default: -qnocompact
-qdataimported[=<variable_names>]
Specifies variables that the compiler can assume
are imported. <variable_names> is a colon-separated
list of variables. Specifying -qdataimported
without <variable_names> instructs the compiler to
assume that all variables are imported. This is
equivalent to specifying -qnotocdata.
(C++) Variable names must be specified using their
mangled names.
-qdatalocal[=<variable_names>]
Specifies variables that the compiler can assume
are local. <variable_names> is a colon-separated
list of variables. Specifying -qdatalocal with no
variables instructs the compiler to assume that all
variables are local. This is equivalent to
specifying -qtocdata.
(C++) Variable names must be specified using their
mangled names.
-qtocdata | -qnotocdata
Marks all data as local.
Default: -qnotocdata (marks all data as imported)
-qdirectstorage | -qnodirectstorage
Informs the compiler that write-through-enabled or
cache-inhibited storage may be referenced.
Default: -qnodirectstorage
-qenablevmx | -qnoenablevmx
Enables the generation of vector instructions for
processors that support them. These instructions
can offer higher performance when used with
algorithmic-intensive tasks such as multimedia
applications.
For -qenablevmx to have effect, the architecture
specified by the -qarch option must support vector
instructions.
If -qnoenablevmx is in effect, -qaltivec,
-qvecnvol, and -qhot=simd cannot be used.
Default: -qnoenablevmx
-qfdpr | -qnofdpr
Collects information about programs for use with
the IBM Feedback Directed Program Restructuring
(FDPR) performance-tuning utility.
Default: -qnofdpr
-qhot[=<suboption>] | -qnohot
Specifies whether or not to perform high-order
transformations during optimization. The suboptions
are:
arraypad[=<number>] | noarraypad
When <number> is specified, the compiler will
pad every array in the code. The pad amount
must be a positive integer value. Otherwise,
the compiler will pad any arrays where it
infers that there may be a benefit.
level={0|1}
Specifies the level of high-order
transformation to perform during compilation.
0
The compiler performs a subset of the
high-order transformations. Some of these
include early distribution, loop
interchange, and loop tiling, as
examples. Optimization level -O3 implies
-qhot=level=0.
1
At level=1, full high-order
transformation is performed.
-qhot=level=1 is equivalent to -qhot and
the compiler options that imply -qhot
also imply -qhot=level=1, unless
-qhot=level=0 is explicitly specified.
simd | nosimd
Converts certain operations in a loop that
apply to successive elements of an array into
a vector instruction. This call calculates
several results at one time, which is faster
than calculating each result sequentially. If
you specify -qhot=nosimd, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with vector
instructions. To enable -qhot=simd, you must
specify an architecture that supports vector
instructions.
vector | novector
When specified with -qnostrict and -qignerrno,
or an optimization level of -O3 or higher
(otherwise -qhot=vector has no effect), the
compiler converts certain operations in a loop
that apply to successive elements of an array
into a call to a routine in the Mathematical
Acceleration Subsystem (MASS) library, part of
the libxlopt.a library.
If you specify -qhot=novector, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with calls
to vector library routines.
Specifying -qhot without suboptions implies
-qhot=nosimd, -qhot=noarraypad, -qhot=vector and
-qhot=level=1. The -qhot option is also implied by
-qsmp, -O4, and -O5.
Default: -qnohot
-qignerrno | -qnoignerrno
Allows the compiler to perform optimizations that
assume errno is not modified by system calls.
Default: -qnoignerrno
-qipa[=<suboptions_list>] | -qnoipa
Turns on or customizes a class of optimizations
known as interprocedural analysis (IPA).
<suboptions_list> is a colon-separated list of the
following suboptions:
clonearch=<arch_name> | noclonearch
Specifies the architectures for which multiple
versions of the same instruction set are
produced, where <arch_name> is a comma-
separated list of architecture names. Use this
suboption if you require optimal performance
on multiple differing machines running the
same copy of your application.
cloneproc=<function_name> |
nocloneproc=<function_name>
Specifies the name of the functions to clone
for the architectures specified by the
clonearch suboption, where <function_name> is
a comma-separated list of function names.
exits=<procedures>
Specifies names of functions which represent
program exits. <procedures> is a comma-
separated list of procedures.
infrequentlabel=<procedures>
Specifies a comma-separated list of user-
defined labels that are likely to be called
infrequently during a program run.
inline[=<suboption>]
Specifying 'inline' with no suboption asserts
that all appropriate procedures will be
inlined. <suboption> can be one of the
following:
auto|noauto
Enables or disables automatic function
inlining by the high-level optimizer.
When -qipa=inline=auto is in effect, the
compiler considers all functions that are
under the maximum size limit (see below)
for inlining. When -qipa=inline=noauto is
in effect, only procedures listed in the
<procedures> suboption are considered for
inlining.
<procedures>
Specifies a comma-separated list of
procedures to attempt to inline.
limit=<num>
Specifies a limit on the size of a
calling function after inlining. This
only takes effect when inline=auto is on.
If you do not specify a value for <num>,
<num> is 8192 by default.
threshold=<num>
Specifies the upper size limit on
procedures to inline. This only takes
effect when inline=auto is on. If you do
not specify a value for <num>, <num> is
1024 by default.
Default: auto
noinline[=<procedures>]
Specifies a comma-separated list of procedures
which are not to be inlined. Specifying
noinline without <procedures>, asserts that no
procedures are to be inlined.
isolated=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and do not
directly refer to any global variable.
level=<level>
Determines the amount of IPA analysis and
optimization performed, where <level> can be
equal to:
0
Performs only minimal interprocedural
analysis and optimization.
1
Turns on inlining, limited alias
analysis, and limited call-site
tailoring.
2
Full interprocedural data flow and alias
analysis.
Default: 1
list[={<file_name>|short|long}]
Specifies an output listing file name during
the link phase. The default name is "a.lst".
Specifying 'long' or 'short' can be used to
request more or less information in the
listing file to determine which listing
sections will be included.
Default: short
lowfreq=<procedures>
Specifies a comma-separated list of procedures
that are likely to be called infrequently
during the course of a typical program run.
malloc16 | nomalloc16
Informs the compiler that the dynamic memory
allocation routines will return 16-byte
aligned memory addresses. The compiler can
then optimize the code based on that
assertion.
Default: -qipa=malloc16
missing={unknown|safe|isolated|pure}
Specifies the default assumption for
procedures not compiled with -qipa.
unknown
Greatly restricts the amount of
interprocedural optimization for calls to
unknown functions.
safe
Functions which do not indirectly call a
visible (not missing) function either
through direct call or function pointer.
isolated
Functions which do not directly reference
global variables accessible to visible
functions.
pure
Functions which are safe and isolated and
which do not indirectly alter storage
accessible to functions.
Default: missing=unknown
object | noobject
Specifies whether to include standard object
code in the object files. Specifying
'noobject' can substantially reduce overall
compile time by not generating object code
during the first IPA phase.
partition={small|medium|large}
Specifies the size of program sections that
are analyzed together. Larger partitions may
produce better analysis but require more
storage.
Default: partition=medium
pure=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that are
"isolated", "safe", and do not modify any data
objects that are visible to the caller.
safe=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that do not call
any other part of the program.
threads[=<suboption>] | nothreads
Runs portions of the IPA optimization process
during pass 2 in parallel threads, which can
speed up the linking process on multi-
processor systems. <suboption> can be one of
the following:
auto | noauto
When auto is in effect, the compiler
selects a number of threads heuristically
based on machine load. When noauto is in
effect, the compiler spawns one thread
per machine processor.
<number>
Instructs the compiler to use a specific
number of threads. <number> can be any
integer value in the range of 1 to 32767.
However, <number> is effectively limited
to the number of processors available on
your system.
Specifying threads with no suboptions implies
threads=auto.
Default: -qipa=threads
unknown=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and that may
update global variables and dummy arguments
and call other parts of the program compiled
with -qipa.
<file_name>
Specifies the name of a file that contains
suboption information in a special format.
Regular expressions are supported when specifying
procedure names for these suboptions:
cloneproc, nocloneproc, exits, inline, noinline,
isolated, lowfreq, pure, safe, unknown.
(C++) In C++ programs, procedure names must be
given in mangled form.
Default:
-qnoipa
-qipa=inline=auto:level=1:missing=unknown:partition=medium:threads=auto
when -O4 is in effect.
-qipa=inline=auto:level=2:missing=unknown:partition=medium:threads=auto
when -O5 is in effect.
-qipa=inline=auto:level=0:missing=unknown:partition=medium:threads=auto
when -qpdf1 or -qpdf2 is in effect.
-qisolated_call=<procedures>
Informs the compiler that specific functions do not
have or rely on side effects, other than those
implied by their parameters. <procedures> is a
colon-separated list of function names.
-qlargepage | -qnolargepage
Indicates that a program, designed to execute in a
large page memory environment, can take advantage
of large 16 MB pages provided on POWER4 and later
systems.
Default: -qnolargepage
-qlibansi | -qnolibansi
Assumes that all functions with the name of an ANSI
C defined library function are, in fact, the
library functions.
Default: -qnolibansi
-qmaxmem=<size>
Limits the amount of memory used by certain
memory-intensive optimizations to <size> kilobytes.
When <size> is -1, the optimizer will use as much
memory as needed.
Default:
o -qmaxmem=8192 when -O2 level optimization is
set.
o -qmaxmem=-1 when -O3 level or greater
optimization is set.
-qminimaltoc | -qnominimaltoc
Avoids Table of Contents (TOC) overflow conditions
by placing TOC entries into a separate data section
for each object file. By default, the compiler will
allocate at least one TOC entry for each unique
non-automatic variable reference in your program.
Default: -qnominimaltoc
-O[<level>]
Optimizes code at a choice of levels during
compilation. This is equivalent to
-qoptimize[=<level>]. <level> can be:
0
Performs only quick local optimizations such
as constant folding and elimination of local
common subexpressions.
2
Performs optimizations that the compiler
developers considered the best combination for
compilation speed and runtime performance. The
optimizations may change from product release
to release.
3
Performs some memory and compile-time
intensive optimizations in addition to those
executed with -O2. The -O3 specific
optimizations have the potential to alter the
semantics of a program. The compiler guards
against these optimizations at -O2 and the
option -qstrict is provided at -O3 to turn off
these aggressive optimizations. Specifying -O3
implies -qhot=level=0.
4
This option is the same as -O3, but also:
o sets the -qarch and -qtune options to the
architecture of the compiling machine.
o sets the -qcache option most appropriate
to the characteristics of the compiling
machine.
5
Equivalent to -O4 -qipa=level=2.
Specifying -O with no <level> is equivalent to
specifying -O2.
Default: -O0
-qoptimize[=<level>] | -qnooptimize
The long form of the -O option. -qoptimize=<level>
is equivalent to -O<level>. See the -O option.
Default: -qnooptimize
-p, -pg, -qprofile={-p|-pg}
Sets up the object files produced by the compiler
for profiling.
-pg is like -p, but it produces more extensive
statistics.
-qpdf1[=pdfname=<file_path] | -qnopdf1
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf1 produces an object that is instrumented to
collect runtime execution information. This is
phase 1 of the profile-directed feedback
optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf1
-qpdf2[=pdfname=<file_path>] | -qnopdf2
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf2 tunes application performance using the data
generated by running a program compiled with
-qpdf1. This is phase 2 of the profile-directed
feedback optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf2
-qprefetch | -qnoprefetch
Enables generation of prefetching instructions such
as dcbt and dcbz in compiled code.
Default: -qprefetch
-qprocimported[=<procedures>] | -qnoprocimported
Specifies functions that the compiler can assume
are imported. Imported functions are dynamically
bound with a shared portion of a library. Code
generated for calls to functions marked as imported
may be larger, but is faster than the default code
sequence generated for functions marked as unknown.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qproclocal[=<procedures>] | -qnoproclocal
Specifies functions that the compiler can assume
are local. Local functions are statically bound
with the functions that call them; smaller, faster
code is generated for calls to such functions.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qprocunknown[=<procedures>] | -qnoprocunknown
Specifies functions that the compiler can assume
are unknown. Unknown functions are resolved to
either statically or dynamically bound objects
during linking. <procedures> is a colon-separated
list of function identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-Q[<suboption>]
(C++) Instructs the compiler to try to inline
functions. Inlining is performed if possible but,
depending on which optimizations are performed,
some functions might not be inlined.
(C) Specifies which specific functions the compiler
should attempt to inline. You must specify at least
an optimization level of -O2 for inlining to take
effect with -Q. To turn on inline expansion for
calls to procedures in different scopes, you must
also use the -qipa=inline.
(C++) In the C++ language, this option can take the
form:
-Q
Compiler inlines all functions that it can.
-Q!
Compiler does not inline any functions.
(C) In the C language, this option can take the
form:
-Q
Attempts to inline all appropriate functions
with 20 executable source statements or fewer,
subject to the setting of any of the
suboptions to the -Q option. If -Q is
specified last, all functions are inlined.
-Q!
Does not inline any functions. If -Q! is
specified last, no functions are inlined.
-Q-<names>
Does not inline functions listed in <names>,
where <names> is a colon-separated list. All
other appropriate functions are inlined. The
option implies -Q.
-Q+<names>
Attempts to inline the functions listed in
<names>, where <names> is a colon-separated
list. All other appropriate functions are
inlined.
-Q=<threshold>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <threshold> for
the function to be inlined.
Default: -Q!
-qinline[<suboption>] | -qnoinline
Specifies whether to attempt to inline functions
instead of generating calls to a function.
(C++) In C++, you cannot specify any suboptions.
-qinline specifies that all appropriate functions
should be inlined, and -qnoinline specifies that no
functions should be inlined.
(C) In C, this option can take the following forms:
-qinline
The compiler attempts to inline all
appropriate functions with 20 executable
source statements or fewer, subject to any
other settings of the suboptions to the
-qinline option.
-qinline+<procedures>
Attempts to inline the functions listed in
<procedures> and any other appropriate
functions, where <procedures> is a colon-
separated list.
-qinline-<procedures>
Specifies that functions listed in
<procedures> do not get inlined, where
<procedures> is a colon-separated list.
-qnoinline
Does not inline any functions.
-qinline=threshold=<num>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <num> for the
function to be inlined. <num> must be a
positive integer.
Default:
The default is to treat inline specifications
as a hint to the compiler, and the result
depends on other options that you select. If
you specify the -g option (to generate debug
information), inlining may be affected.
-qshowpdf | -qnoshowpdf
Used with -qpdf1 and a minimum optimization level
of -O2 to add additional call and block count
profiling information to an executable.
Default: -qnoshowpdf
-qsmallstack | -qnosmallstack
Reduces the size of the stack frame. This option is
only valid when used together with IPA (-qipa, -O4,
-O5 compiler options).
Default: -qnosmallstack
-qsmp[=<suboptions_list>] | -qnosmp
Enables parallelization of program code.
<suboptions_list> is a colon-separated list of one
or more of the following suboptions:
auto | noauto
Enables automatic parallelization and
optimization. If noauto is specified,
automatic parallelization of program code is
disabled; only program code explicitly
parallelized with OpenMP directives is
optimized.
Default: auto
nested_par | nonested_par
If nested_par is specified, prescriptive
nested parallel constructs are parallelized by
the compiler.
Default: nonested_par
omp | noomp
Enables strict OpenMP compliance. Only OpenMP
parallelization pragmas are recognized.
Default: noomp
opt | noopt
Enables automatic parallelization but disables
optimization of parallelized program code. If
noopt is specified, optimization of
parallelized program code is disabled.
Default: opt
rec_locks | norec_locks
Specifies whether to use recursive locks.
Default: norec_locks
schedule=<type>
Specifies what kinds of scheduling algorithms
and chunking are used for loops to which no
other scheduling algorithm has been explicitly
assigned in the source code. <type> can be:
o affinity[=<num>]
o dynamic[=<num>]
o guided[=<num>]
o runtime
o static[=<num>],
where <num> is the number of loop iterations.
Default: schedule=runtime
stackcheck | nostackcheck
Causes the compiler to check for stack
overflow by slave threads at run time, and
issue a warning if the remaining stack size is
less than the number of bytes specified by the
stackcheck option of the XLSMPOPTS environment
variable. This suboption is intended for
debugging purposes, and only takes effect when
XLSMPOPTS=stackcheck is also set.
Default: nostackcheck
threshold[=<num>]
When -qsmp=auto is in effect, controls the
amount of automatic loop parallelization that
occurs. The value of <num> represents the
lower limit allowed for parallelization of a
loop, based on the level of "work" present in
a loop.
Default:
<num> must be a positive integer of 0 or
greater. If you specify threshold with no
suboption, the program uses a default value
of 100.
Specifying -qsmp without suboptions is equivalent
to
-qsmp=auto:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100
or
-qsmp=opt:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100.
Default: -qnosmp
-qspeculateabsolutes | -qnospeculateabsolutes
Works with the -qtocmerge -bl:file for non-IPA
links and with the -bl:file for IPA links to
disable speculation at absolute addresses.
The bl:file is necessary for the compiler to know
which addresses are absolutes.
Default: -qspeculateabsolutes
-qstrict | -qnostrict
Turns off aggressive optimizations which have the
potential to alter the semantics of your program.
-qstrict sets -qfloat=nofltint:norsqrt. -qnostrict
sets -qfloat=rsqrt. This option is only valid with
-O2 or higher optimization levels.
Default:
o -qnostrict at -O3 or higher.
o -qstrict otherwise.
-qstrict_induction | -qnostrict_induction
Turns off loop induction variable optimizations
that have the potential to alter the semantics of
your program.
Default:
o -qnostrict_induction at -O2 or higher.
o -qstrict_induction otherwise.
-qtocmerge | -qnotocmerge
Enables TOC merging to reduce TOC pointer loads and
improves the scheduling of external loads. Reads
from the file specified in -bImportfile linker
option and merges the address information to access
ranges of external addresses using a single table
of contents entry.
Default: -qnotocmerge
-qtune=<suboption>
Specifies the architecture system for which the
executable program is optimized.
<suboption> must be one of the following:
403
Generates object code optimized for all the
PowerPC 403 processors.
604
Generates object code optimized for all the
PowerPC 604 processors.
auto
Generates object code optimized for the
hardware platform on which the program is
compiled.
balanced
Optimizations are tuned across a selected
range of recent hardware.
ppc970
Generates instructions specific to PowerPC 970
hardware platforms.
pwr3
Generates object code optimized for the POWER3
hardware platforms.
pwr4
Generates object code optimized for the POWER4
hardware platforms.
pwr5
Generates object code optimized for the POWER5
hardware platforms.
pwr6
Generates object code optimized for the POWER6
hardware platforms.
rs64a
Generates object code optimized for the RS64I
processor.
rs64b
Generates object code optimized for the RS64II
processor.
rs64c
Generates object code optimized for the
RS64III processor.
Default:
-qtune=balanced when the default -qarch
setting is in effect. Otherwise, the default
depends on the effective -qarch setting.
-qunroll[=<suboption>] | -qnounroll
Unrolls inner loops in the program. This can help
improve program performance. The suboptions are:
auto
Instructs the compiler to perform basic loop
unrolling.
yes
Instructs the compiler to search for more
opportunities for loop unrolling than that
performed with auto. In general, this
suboption is more likely to increase compile
time or program size than auto processing, but
it may also improve your application's
performance.
no
Instructs the compiler to not unroll loops.
Default: -qunroll=auto
If -qunroll is specified with no suboptions, the
compiler assumes -qunroll=yes. -qnounroll is
equivalent to -qunroll=no.
-qunwind | -qnounwind
Informs the compiler that the stack can be unwound
while a routine in the compilation is active.
Specifying -qnounwind can improve the optimization
of non-volatile register saves and restores.
Default: -qunwind
Linking options
-b{dynamic|shared|static}
Controls how shared objects are processed by the
linkage editor. The suboptions are:
dynamic, shared
Causes the linker to process subsequent shared
objects in dynamic mode. In dynamic mode,
shared objects are not statically included in
the output file. Instead, the shared objects
are listed in the loader section of the output
file.
-bdynamic and -bshared are synonymous.
static
Causes the linker to process subsequent shared
objects in static mode. In static mode, shared
objects are statically linked in the output
file.
Default: -bshared
-bmaxdata:<bytes>
Specifies the maximum amount of space to reserve
for the program data segment for programs where the
size of these regions is a constraint. Combined
data space is slightly less than 256MB, or lower,
depending on the limits for the user ID.
Default: -bmaxdata:0
-brtl Controls runtime linking for the output file.
-qcrt | -qnocrt
Instructs the linker to use the standard system
startup files at link time.
Default: -qcrt
-e <name>
Sets the entry name for a shared executable and is
only used together with -qmkshrobj.
-f<file_name>
Names a file to store a list of object files for
the compiler to pass to the linker. The <file_name>
file should contain only the names of object files.
There should be one object file per line.
-L<dir>
Searches the path directory for library files
specified by the -l<key> option.
Default:
The default is to search only the standard
directories.
-l<key>
Searches the file lib<key>.so and then lib<key>.a
for dynamic linking, or only lib<key>.a for static
linking.
Default:
The default is to search only some of the
compiler runtime libraries.
-qlib | -qnolib
Specifies whether the compiler should use the
standard system libraries at link time. -qnolib is
similar to the gcc option nostdlib; the driver will
not pass the standard system startup files or
libraries when linking.
Default: -qlib
-qtwolink | -qnotwolink
(C++) Links twice in order to minimize the number
of static constructors included from libraries and
object files.
Default: -qnotwolink
-Z<prefix>
This linker option specifies a prefix for the
library search path. This is useful when developing
a new version of a library.
Portability and migration options
-qalign=<suboption>
Specifies what aggregate alignment rules the
compiler uses for file compilation, where the
alignment suboptions are:
bit_packed
The compiler uses the bit_packed alignment
rules.
full
The compiler uses the RISC System/6000
alignment rules. This is the same as power.
mac68k
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the twobyte
suboption.
natural
The compiler maps structure members to their
natural boundaries.
packed
The compiler uses the packed alignment rules.
power
The compiler uses the RISC System/6000
alignment rules.
twobyte
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the mac68k
suboption.
Default: -qalign=full
-qalignrulefor=power=[no]typedefrespectsrule
(C++) When used with -qalign=power, determines
whether a 4-byte alignment ceiling is applied to
non-first members of structures that are of type
typedef to array of element type that exceeds the
alignment ceiling.
typedefrespectsrule | notypedefrespectsrule
When typedefrespectsrule is in effect, the
member follows the normal alignment rules for
-qalign=power. This suboption provides
compatibility with code compiled with
-qalign=power with XL C++ V6.0 and earlier.
When notypedefrespectsrule is in effect, a
member that exceeds the alignment ceiling of 4
bytes is aligned on 4-byte boundaries. This
suboption provides compatibility with code
compiled with -qalign=power with XL C++ V7.0
and V8.0.
Default: -qalignrulefor=power=typedefrespectsrule
-qgenproto[=parmnames] | -qnogenproto
(C) Generates ANSI prototypes from K&R function
definitions and displays them on standard output.
Specifying -qgenproto without '=parmnames' will
cause prototypes to be generated without parameter
names.
Default: -qnogenproto
-qnamemangling=<scheme>
(C++) Chooses the name mangling scheme for external
symbol names generated from C++ source code. The
<scheme> can be:
ansi
Fully supports the most recent language
features of Standard C++.
v9
Compatible with XL C++ V9.0.
v8
Compatible with XL C++ V8.0.
v7
Compatible with XL C++ V7.0.
v6
Compatible with VisualAge C++ V6.0.
v5
The scheme for VisualAge C++ V5.0.
v4
The scheme for VisualAge C++ V4.0.
v3
The scheme for VisualAge C++ releases before
V4.0.
compat
Same as v3.
Default: -qnamemangling=ansi
-qobjmodel={classic|ibm}
(C++) Specifies the object model.
classic
This object model is compatible with version
3.6 of the IBM C and C++ compilers.
ibm
Uses the object model introduced with version
5.0 of VisualAge C++ for AIX. Objects compiled
with this object model will use less memory
and have better performance for deep
inheritance with virtual bases.
Default: -qobjmodel=classic
-qoldpassbyvalue | -qnooldpassbyvalue
(C++) Specifies how classes containing const or
reference members are passed in function arguments.
All classes in the compilation unit are affected by
this option. When -qoldpassbyvalue is specified,
the compiler mimics the IBM C/C++ compilers v3.6
compiler in that when a class containing a const or
reference member is passed as a function argument,
it is not passed by value. All such classes in the
compilation unit are affected.
Default: -qnooldpassbyvalue
-qupconv | -qnoupconv
(C) Preserves the unsigned specification when
performing integral promotions.
Default:
o -qupconv when -qlanglvl={extended|classic}.
o -qnoupconv otherwise.
-qvecnvol | -qnovecnvol
Specifies whether to use volatile or non-volatile
vector registers. Volatile vector registers are
registers whose value is not preserved across
function calls or in the context of save, jump or
switch system library functions. If -qnoenablevmx
is enabled, this option is ignored.
Default: -qnovecnvol
Compiler customization options
-qasm_as=<asm_path> [<flags_list>]
Specifies the path and flags used to invoke the
assembler in order to handle assembler code in an
asm statement. <asm_path> is the full path to the
assembler to be used, and <flags_list> is a series
of one or more flags (and their arguments),
separated by spaces. Single quotes (or double
quotes) are required around the string of arguments
if any spaces exist.
-B[<prefix>]
Determines substitute path names for programs used
during compilation, such as the compiler,
assembler, linkage editor, and preprocessor, where
<prefix> can be any program name recognized by the
-t compiler option. The optional <prefix> defines
part of a path name to the new programs. The -t
parameter, <program>, specifies the program to
which the <prefix> is to be appended. When
specifying <prefix>, there must be a slash (/)
after the folder name.
-qc_stdinc=<paths_list>
(C) Changes the standard search location for the XL
C headers. <paths_list> is a colon-separated list
of paths to search.
-qcpp_stdinc=<paths_list>
(C++) Specifies the standard search directories for
the XL C++ headers, where <paths_list> is a colon-
separated list of paths.
-F[<config_file>][:<stanza>]
Names an alternative configuration file (.cfg) for
the compiler. <config_file> is the name of a
compiler configuration file. <stanza> is the name
of the command used to invoke the compiler. This
directs the compiler to use the entries under
<stanza> in the <config_file> to set up the
compiler environment. At least one of the arguments
must be supplied.
-qpath=<program>:<path>
Constructs alternate program names for compiler
components. The program and directory path
specified are used in place of the regular program.
<program> can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-qspill=<size>
Specifies the size of the register allocation spill
area in bytes.
Default: -qspill=512
-t<programs_list>
Applies the prefix from the -B option to the
specified programs in <programs_list>.
<programs_list> is a chain (i.e: -tbcI) of one or
more of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-W<program>,<options_list>
Gives the specified option(s) to the compiler
program, <program>. <options_list> is a comma-
separated list of one or more options. <program>
can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = c++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = linkage helper (C++ only)
p = Preprocessor
SEE ALSO
gxlc(1), gxlc++(1), c++filt(1), CreateExportList(1),
linkxlC(1), makeC++SharedLib(1), vacndi(1), vacppndi(1),
showpdf(1), mergepdf(1), resetpdf(1), cleanpdf(1).
For more information, refer to the following Web sites:
http://www.ibm.com/software/awdtools/xlcpp/library/
http://www.ibm.com/software/awdtools/xlcpp/support/
COPYRIGHT
Licensed Materials - Property of IBM.
IBM XL C/C++ Enterprise Edition for AIX, V9.0.
5724-S71
Copyright IBM Corp. 1991, 2007. All Rights Reserved.
AIX, IBM, POWER3, POWER4, POWER5, POWER5+, POWER6,
PowerPC, PowerPC 604 and SAA are trademarks or registered
trademarks of International Business Machines Corporation
in the United States, other countries, or both.
Windows is a trademarks of Microsoft Corporation in the
United States, other countries, or both.
US Government Users Restricted Rights - Use, duplication
or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
unlink: /ptmp/ddvento/xlcW0pmqlia
unlink: /ptmp/ddvento/xlcW1pmqlib
unlink: /ptmp/ddvento/xlcW2pmqlic
configure:3309: $? = 249
configure:3316: xlc -V >&5
export XL_CONFIG=/etc/vac.cfg.53:xlc
less /usr/vacpp/exe/default_msg/vacpp.txt
xlc(1) IBM (2007) xlc(1)
NAME
xlc, xlc++, xlC, cc, c89, c99, xlCcore, xlc++core and
related commands - invoke the IBM XL C/C++ compiler.
SYNTAX
<invocation-command> [ <option> | <inputfile> ] ...
DESCRIPTION
The invocation commands compile C and C++ source files.
The commands and their recommended uses are described
below.
Invocations Usage (supported standards)
_________________________________________________________
xlc, xlc_r, xlc_r4, Compile C source files.
xlc_r7, xlc128, xlc128_r, (ANSI C89, ISO C99,
xlc128_r4, xlc128_r7 IBM language extensions)
xlc++, xlc++_r, xlc++_r4, Compile C++ source files.
xlc++_r7, xlc++128,
xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC, xlC_r,
xlC_r4, xlC_r7, xlC128,
xlC128_r, xlC128_r4,
xlC128_r7
cc, cc_r, cc_r4, cc_r7, Compile legacy code that
cc128, cc128_r, cc128_r4, does not conform to Standard
cc128_r7 C. (pre-ANSI C)
c89, c89_r, c89_r4, Compile C source files with
c89_r7, c89_128, c89_128_r, strict conformance to the
c89_128_r4, c89_128_r7 C89 standard. (ANSI C89)
c99, c99_r, c99_r4, Compile C source files with
c99_r7, c99_128, c99_128_r, strict conformance to the
c99_128_r4, c99_128_r7 C99 standard. (ISO 99)
xlc++core, xlc++core_r, Compile C++ source files
xlc++core_r7, xlc++core128, but the compiler will
xlc++core128_r, link only to the core of
xlc++core128_r7, xlCcore, the runtime library.
xlCcore_r, xlCcore_r7,
xlC128core, xlC128core_r,
xlC128core_r7
gxlc Accepts GNU C options, maps
them to their equivalent XL
C option, then invokes xlc.
gxlc++, gxlC Accepts GNU C/C++ options, maps
them to their equivalent XL
C++ option,then invokes xlc++.
The main difference between these commands is that they use different
default options (which are set in the configuration file
/etc/vac.cfg.XX, where XX represents the AIX version).
See the Compiler Reference for more information on these invocation
commands.
All invocations with a suffix of _r allow for thread-safe
compilation. Use these commands to create threaded
applications or to link programs that use multi-threading.
These commands also process assembler source files and
object files. The compiler calls the link editor to
produce a single executable or shared library, unless you
specify the compiler options that prevent object files
from being linked.
The input file may have any of the following suffixes:
.C, .cpp, .cxx, C++ source file
.cc, .cp, .c++
.c C source file
.i Preprocessed C or C++ source file
.a Archive file
.o Object file for ld command
.s Assembler source file
.S Assembler source file that
needs preprocessing
.so Shared object file
OPTIONS
Compiler options are categorized by their functions and
may be used to set the compiler behavior. Options can be
flag options or keyword options.
Keyword options are specified in one of the following
ways:
-q<option>
-q<option>=<suboption>
-q<option>=<suboption>:<suboption>
Keyword options with no suboptions represent switches that
may be either on or off. -qx turns the switch on, and
-qnox turns the switch off. For example, -qsource tells
the compiler to produce a source listing and -qnosource
tells the compiler not to produce a source listing.
Output control options
-c Instructs the compiler to pass source files to the
compiler only. The compiled source files are not
sent to the linker. This option produces an object
file, file_name.o, for each valid source file.
-C | -C!
Preserves or removes comments in preprocessed
output.
When -C is used with the -E option, comments are
written to standard output; with the -P option,
comments are written to an output file.
When -C! is in effect, comments are removed.
-E Instructs the compiler to preprocess the source
files named in the compiler invocation and creates
an output preprocessed source file.
-G Tells the linkage editor to create a shared object
enabled for runtime linking.
-M Creates an output file that contains information to
be included in a "make" description file. This is
equivalent to specifying -qmakedep without a
suboption.
-qmakedep[=gcc]
Creates an output file that contains targets
suitable for inclusion in a description file for
the make command that describes the dependencies of
the main source file in the compilation.
Specifying 'gcc' changes the format of the
generated dependency file.
Specifying -qmakedep without 'gcc' is equivalent to
specifying -M.
-MF<path>
Specifies the target for the output generated by
the -qmakedep or -M options, where <path> can be a
full directory path or file name. Note that "-MF
<path>" (with a space before the argument) is also
acceptable. This option only has effect when
specified with -qmakedep or -M.
(C)-qmkshrobj, (C++)-qmkshrobj[=<priority>]
Creates a shared object from the generated object
files.
The optional number specifies the priority level
for initialization of all static objects in the
file. <priority> may be any number from -214782623
(highest priority-initialized first) to 214783647
(lowest priority-initialized last). If no priority
is specified, the default priority of 0 is used.
The priority is not used when linking shared
objects (using the xlc command) written in C.
Specifying -qmkshrobj implies -qpic.
See related options, -e <name> and -o <path>.
-o <path>
Specifies an output location for the object,
assembler, or executable files created by the
compiler. When the -o option is used during
compiler invocation, <path> can be the name of
either a file or a directory.
Default: -o a.out
-P Preprocesses the C or C++ source files named in the
compiler invocation and creates an output
preprocessed source file for each input source
file. The preprocessed output file has the same
name as the output file, with a .i suffix.
-S Generates an assembler language file (.s) for each
source file. The resulting .s files can be
assembled to produce object .o files or an
executable file (a.out).
Input control options
-+ (C++) Compiles any file, <file_name.nnn>, as a C++
language file, where <nnn> is any suffix other than
.a, .so, .o, .s, or .S. This option is equivalent
to the -qsourcetype=c++ option and should not be
used together with the -qsourcetype option.
-qcinc=<directory_path> | -qnocinc
(C++) Instructs the compiler to place an extern "C"
{ } wrapper around the contents of an include file,
where <directory_path> is the location of that
include file.
Default: -qnocinc
-I<directory_path>
Specifies an additional search path for include
file names that do not specify an absolute path.
Default:
The following directories are searched, in the
following order, after any paths that are
specified by the -I option:
1) The current directory.
2) The directory where the source file is
located.
3) /usr/include.
-qidirfirst | -qnoidirfirst
Specifies the search order for files included with
the #include "<file_name>" directive. Use
-qidirfirst with the -I option. If -qidirfirst is
specified, the directories specified by the
-I<directory_path> option are searched before the
directory in which the current file resides.
Default: -qnoidirfirst
-qinclude=<file_path>
Specifies additional header files that are included
before the first line of a source file in a
compilation unit and ahead of any headers which may
be specified by an #include statement on the first
line of the source file.
-qsourcetype=<type>
Determines whether to treat all recognized source
files as if they are of the source type specified
by <type> (regardless of file name suffix), or
whether to use the file name suffix to determine
the programming language.
Note that the option only affects files that are
specified on the command line following the option,
but not those that precede the option. The
-qsourcetype option should not be used together
with the -+ option. The suboptions are:
default
The compiler assumes that the programming
language of a source file will be implied by
its file name suffix.
c
The compiler compiles all source files
following this option as if they are C
language source files.
assembler
The compiler compiles all source files
following this option as if they are assembler
language source files.
assembler-with-cpp
The compiler compiles all source files
following this option as if they are assembler
language source files that need preprocessing.
Default: -qsourcetype=default
-qstdinc | -qnostdinc
Specifies whether the standard directories are
searched for files included by the #include
<file_name> and #include "file_name" directives.
The -qnostdinc option excludes the standard include
directories from the search path.
Default: -qstdinc
Language element control options
-qaltivec | -qnoaltivec
Instructs the compiler to support vector data types
and operators and is accepted when the architecture
specified by the -qarch option supports vector
instructions and -qenablevmx is enabled.
Default: -qnoaltivec
-qasm[=<sub>] | -qnoasm[=<sub>]
Controls the interpretation of, and subsequent
generation of code for, asm statements.
In (C), <sub> can only be 'gcc'.
In (C++), <sub> can be:
gcc
Interprets asm statements using GCC syntax.
stdcpp
Interprets asm statements using stdcpp syntax.
Default:
(C++) -qnoasm=stdcpp in compat366 or strict98
modes, and -qasm=gcc otherwise.
(C) -qasm=gcc
-qcpluscmt | -qnocpluscmt
(C) Permits the usage of "//" to introduce a
comment that lasts until the end of the current
source line, as in C++.
Default:
o -qcpluscmt when you invoke the compiler with
xlc, xlc_r, cc, or cc_r, or when -qlanglvl is
set to stdc99 or extc99.
o -qnocpluscmt otherwise.
-D<name>[=[<def>]]
Defines <name> as in the #define directive. <def>
is an optional definition or value assigned to
<name>. Specifying -D<name>= (with no <def>) is
equivalent to #define <name>; specifying
-D<name> is equivalent to #define <name> 1.
-qdbcs | -qnodbcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qmbcs.
Default: -qnodbcs
-qdfp | -qnodfp
Enables compiler support for decimal floating-point
types and literals.
Default: -qnodpf
-qdigraph | -qnodigraph
Allows usage of digraph key combinations or
keywords to represent characters not found on some
keyboards.
Default:
(C) -qdigraph when -qlanglvl is extc89,
extended, extc99 or stdc99, and -qnodigraph
otherwise.
(C++) -qdigraph
-qdollar | -qnodollar
Allows the '$' symbol to be used in the names of
identifiers. When -qdollar is in effect, the dollar
symbol '$' in an identifier is treated as a base
character. If the options -qnodollar and
-qlanglvl=ucs are both enabled, the dollar symbol
is treated as an extended character.
Default: -qnodollar
-qignprag=<option>
Instructs the compiler to ignore certain pragma
statements. The options are:
disjoint
Ignores all #pragma disjoint directives in the
source file.
isolated_call
Ignores all #pragma isolated_call directives
in the source file.
all
Ignores all #pragma isolated_call directives
and #pragma disjoint directives in the source
file.
omp
Ignores all OpenMP parallel processing
directives in the source file.
ibm
(C) Ignores all #pragma ibm snapshot
directives and all IBM SMP directives in the
source file.
-qkeyword=<keyword> | -qnokeyword=<keyword>
Controls whether the specified name is treated as a
keyword or as an identifier whenever it appears in
a program source.
By default, all the built-in keywords defined in
the C and C++ language standards are reserved as
keywords. You cannot add keywords to the language
with this option. However, you can use
-qnokeyword=<keyword> to disable built-in keywords,
and use -qkeyword=<keyword> to reinstate those
keywords.
(C) This option can also be used with the following
C keywords: restrict, typeof, asm and inline.
(C++) This option can be used with all C++ built-in
keywords.
-qlanglvl=<suboptions_list>
Selects the language level and language options for
the compilation. <suboptions_list> is a colon-
separated list of suboptions.
(C) For C language programs, <suboptions_list> is
{classic|extended|saa|saa12|stdc89|stdc99|extc89|extc99}:{ucs|noucs}.
classic
Allows the compilation of non-stdc89 programs,
and conforms closely to the K&R level
preprocessor.
extended
Provides compatibility with the RT compiler
and classic. This language level is based on
C89.
saa
Compilation conforms to the current SAA(R) C
CPI language definition. This is currently SAA
C Level 2.
saal2
Compilation conforms to the SAA C Level 2 CPI
language definition, with some exceptions.
stdc89
Compilation conforms to the ANSI C89 standard,
also known as ISO C90.
stdc99
Compilation conforms to the ISO C99 standard.
extc89
Compilation conforms to the ANSI C89 standard,
and accepts implementation-specific language
extensions.
extc99
Compilation conforms to the ISO C99 standard,
and accepts implementation-specific language
extensions.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in program
source code.
Default:
o -qlanglvl=ucs under language levels stdc99
and extc99.
o -qlanglvl=noucs for all other language
levels.
(C++) The suboptions for C++ language programs are:
compat366
Compilation conforms to some, but not all, IBM
C and C++ Compilers V3.6 features.
extended
Compilation is based on the strict98, with
some differences to accommodate extended
language features.
strict98
Compilation conforms to the ISO C++ standard
for C++ programs.
anonstruct | noanonstruct
This suboption controls whether anonymous
structs and anonymous classes are allowed in
your C++ source. By default, the compiler
allows anonymous structs.
anonunion | noanonunion
This suboption controls what members are
allowed in anonymous unions. When this
suboption is set to anonunion, anonymous
unions can have members of all types that
standard C++ allows in non-anonymous unions.
ansifor | noansifor
This suboption controls whether scope rules
defined in the C++ standard apply to names
declared in for-init statements. By default,
standard C++ rules are used.
ansisinit | noansisinit
This suboption can be used to select between
old (v3.6 or earlier) and current (v5.0 or
later) compiler object compatibility.
c99__func__ | noc99__func__
This suboption instructs the compiler to
recognize the C99 __func__ identifier.
The c99__func__ suboption is enabled by
default when -qlanglvl=extended is enabled. It
can be enabled for any language level by
specifying -qlanglvl=c99__func__, or disabled
by specifying -qlanglvl=noc99__func__.
c99complex | noc99complex
This suboption instructs the compiler to
recognize C99 complex data types and related
keywords. It is set by default for
-qlanglvl=extended.
c99complexheader | noc99complexheader
This suboption instructs the compiler to use
the C99 complex.h header file.
c99compoundliteral | noc99compoundliteral
This suboption instructs the compiler to
support the C99 compound literal feature. It
is set by default for -qlanglvl=extended.
c99hexfloat | noc99hexfloat
This suboption enables support for C99-style
hexadecimal floating constants in C++
applications. It is on by default for
-qlanglvl=extended.
c99vla | noc99vla
When c99vla is enabled, the compiler will
support the use of C99-type variable length
arrays in your C++ applications. It is set by
default for -qlanglvl=extended.
compatzea | nocompatzea
The -qlanglvl=compatzea option is a
compatibility option that lets you continue to
use a zero extent array with dimension of 1.
Default: -qlanglvl=nocompatzea
Specifying -qlanglvl=compatzea has effect only
if -qlanglvl=zeroextarray is also enabled.
dependentbaselookup | nodependentbaselookup
Provides the ability to specify compilation in
conformance with issue 213 of TC1 of the C++
standard.
Default: -qlanglvl=dependentbaselookup
gnu_assert | nognu_assert
Enables or disables support for the following
GNU C system identification assertions:
'#assert', '#unassert', '#cpu', '#machine',
'#system'.
gnu_complex | nognu_complex
This suboption instructs the compiler to
recognize GNU complex data types and related
keywords.
gnu_computedgoto | nognu_computedgoto
Enables support for computed gotos. This
suboption is enabled for -qlanglvl=extended.
gnu_explicitregvar | nognu_explicitregvar
(C) Allows you to control whether the compiler
accepts and ignores the specification of
explicit registers for variables.
gnu_externtemplate | nognu_externtemplate
This suboption enables or disables extern
template instantiations.
Default:
gnu_externtemplate is enabled by default
when compiling to the extended language
level.
gnu_include_next | nognu_include_next
Enables or disables support for the GNU C
#include_next preprocessor directive.
Default:
gnu_include_next is enabled by default for
-qlanglvl=extended.
gnu_labelvalue | nognu_labelvalue
Enables or disables support for labels as
values.
Default:
gnu_labelvalue is enabled by default for
-qlanglvl=extended.
gnu_locallabel | nognu_locallabel
Enables or disables support for locally-
declared labels.
gnu_membernamereuse | nognu_membernamereuse
Enables or disables reusing a template name in
a member list as a typedef.
gnu_suffixij | nognu_suffixij
Enables or disables support for GCC style
complex numbers. If gnu_suffixij is specified,
a complex number can be ended with suffix i/I
or j/J.
Default:
gnu_suffixij is enabled by default for
-qlanglvl=extended.
gnu_varargmacros | nognu_varargmacros
This option is similar to
-qlanglvl=varargmacros. For the list of the
main differences, refer to the Compiler
Reference.
Default:
gnu_varargmacros is set by default for
-qlanglvl=extended.
gnu_warning | nognu_warning
Enables or disables support for the GNU C
#warning preprocessor directive.
illptom | noillptom
This suboption controls what expressions can
be used to form pointers to members. C/C++ can
accept some forms that are in common use, but
do not conform to the C++ standard. The
compiler allows these forms by default.
implicitint | noimplicitint
This suboption controls whether the compiler
will accept missing or partially specified
types as implicitly specifying 'int'. This is
no longer accepted in the standard but may
exist in legacy code.
With the suboption set to noimplicitint, all
types must be fully specified.
With the suboption set to implicitint, a
function declaration at namespace scope or in
a member list will implicitly be declared to
return int.
newexcp | nonewexcp
This suboption determines whether or not the
C++ new operator throws an exception. If the
-qlanglvl=newexcp option is specified, the
standard exception std::bad_alloc is thrown
when the requested memory allocation fails.
This option does not apply to the nothrow
versions of the new operator.
The standard implementation of the new
operators fully support exceptions. For
compatibility with previous versions of
VisualAge C++, these operators return 0 by
default.
offsetnonpod | nooffsetnonpod
This suboption controls whether the offsetof
macro can be applied to classes that are not
data-only.
By default, the compiler allows offsetof to be
used with non-POD classes.
olddigraph | noolddigraph
This option controls whether old-style
digraphs are allowed in your C++ source. It
applies only when -qdigraph is also set.
By default, the compiler supports only the
digraphs specified in the C++ standard.
oldfriend | nooldfriend
This option controls whether friend
declarations that name classes without
elaborated class names are treated as C++
errors.
By default, the compiler lets you declare a
friend class without elaborating the name of
the class with the keyword class.
oldmath | nooldmath
This suboption controls which versions of math
function declarations in <math.h> are included
when you specify math.h as an included or
primary source file.
By default, the new standard math functions
are used. Build with -qlanglvl=nooldmath for
strict compliance with the C++ standard. For
compatibility with modules that were built
with earlier versions of VisualAge C++ and
predecessor products, you may need to build
with -qlanglvl=oldmath.
oldtempacc | nooldtempacc
This suboption controls whether access to a
copy constructor to create a temporary object
is always checked, even if creation of the
temporary object is avoided.
By default, the compiler suppresses the access
checking.
oldtmplalign | nooldtmplalign
Controls whether alignment rules specified for
nested templates are ignored.
When the default, -qlanglvl=nooldtmplalign, is
in effect, these alignment rules are not
ignored.
Specify -qlanglvl=oldtmplalign for
compatibility with VisualAge C++ 4.0 and
predecessor products.
oldtmplspec | nooldtmplspec
This suboption controls whether template
specializations that do not conform to the C++
standard are allowed.
By default, the compiler allows these old
specializations (-qlanglvl=nooldtmplspec).
redefmac | noredefmac
Specifies whether a macro can be redefined
without a prior #undef or undefine()
statement.
trailenum | notrailenum
This suboption controls whether trailing
commas are allowed in enum declarations.
By default, the compiler allows one or more
trailing commas at the end of the enumerator
list.
typedefclass | notypedefclass
This suboption provides backwards
compatibility with previous versions of
VisualAge C++ and predecessor products.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in C++
sources.
Default: -qlanglvl=noucs
varargmacros | novarargmacros
This C99 feature allows the use of a variable
argument list in function-like macros in your
C++ applications.
zeroextarray | nozeroextarray
This suboption controls whether zero-extent
arrays are allowed as the last non-static data
member in a class definition.
By default, the compiler allows arrays with
zero elements.
The default depends on the invocation command used:
Command Default
_____________________________________________
xlC/xlc++ extended
xlc extc99
cc extended
c89 stdc89
c99 stdc99
-qlonglong | -qnolonglong
Allows IBM-style long long integers. This option
cannot be used with -qlanglvl=stdc99 or
-qlanglvl=extc99.
Default:
o -qlonglong when compiling with xlc, xlc++,
xlC or cc.
o -qnolonglong when compiling with c89 or c99.
-qmacpstr | -qnomacpstr
Converts Pascal string literals into null-
terminated strings where the first byte contains
the length of the string.
Default: -qnomacpstr
-qmbcs | -qnombcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qdbcs.
Default: -qnombcs
-qstaticinline | -qnostaticinline
(C++) Controls whether inline functions are treated
as static or extern. Specifying -qnostaticinline
means the inline functions are treated as having
extern linkage.
Default: -qnostaticinline
-qtabsize=<size>
Changes the length of tabs as perceived by the
compiler, where <size> is the number of character
spaces representing a tab in the source program.
Default: -qtabsize=8
-qtrigraph | -qnotrigraph
Allows trigraph key combinations to represent
characters not found on some keyboards.
Default: -qtrigraph
However, if -qlanglvl=classic is enabled or
implied, the trigraphs are not recognized by
default.
-U<name>
Undefines the identifier <name> defined by the
compiler or by the -D<name> option.
-qutf | -qnoutf
Enables recognition of UTF literal syntax.
Default:
o (C) -qnoutf
o (C++) -qutf for all language levels except
-qlanglvl=strict98
o (C++) -qnoutf when -qlanglvl=strict98 is in
effect
Template control options (C++ only)
-qtempinc[=<directory_path>] | -qnotempinc
(C++) Generates separate template include files for
template functions and class declarations, and
places these files in a directory which can be
optionally specified.
Default: -qnotempinc
-qtemplatedepth=<number>
(C++) Specifies the maximum number of recursively
instantiated template specializations that will be
processed by the compiler. <number> can be a value
between 1 and INT_MAX.
Default: -qtemplatedepth=300
-qtemplaterecompile | -qnotemplaterecompile
(C++) Helps manage dependencies between compilation
units that have been compiled using the
-qtemplateregistry compiler option.
Default: -qnotemplaterecompile
-qtemplateregistry[=<filename>] | -qnotemplateregistry
(C++) Maintains records of all templates as they
are encountered in the source and ensures that only
one instantiation of each template is made.
Default: -qnotemplateregistry
-qtempmax=<number>
(C++) Specifies the maximum number of template
include files to be generated by the -qtempinc
option for each header file.
Default: -qtempmax=1
-qtmplinst=<suboption>
(C++) Allows you to manage implicit template
instantiations. <suboption> is one of the
following:
none
Instantiates only the inline functions. If
this is specified, -qtempinc and
-qtemplateregistry are ignored.
noinline
Suppresses all implicit instantiations.
auto
Handles the implicit instantiations according
to the -qtempinc and -qtemplateregistry
options. If both options are off, then
implicit instantiations are always performed.
always
Always perform implicit instantiations. This
will ignore the -qtempinc and
-qtemplateregistry options.
Default: -qtmplinst=auto
-qtmplparse=<option>
(C++) Controls whether parsing and semantic
checking are applied to template definition
implementations or only to template instantiations.
The compiler has the option to produce warning or
error messages. The suboptions are:
no
Does not parse, to reduce the number of errors
issued in code written for previous versions
of the compiler.
warn
Parses template definitions and issues warning
messages for semantic errors.
error
Treats problems in template definitions as
errors, even if the template is not
instantiated.
Default: -qtmplparse=no
Floating-point and integer control options
-qbitfields={signed|unsigned}
Specifies whether bit fields will be signed or
unsigned.
Default: -qbitfields=unsigned
-qchars={signed|unsigned}
Specifies whether the data type char will be signed
or unsigned.
Default: -qchars=unsigned
-qenum=<suboption>
Specifies the amount of storage occupied by
enumerations, where <suboption> can be:
small
Specifies that enumerations occupy the
smallest amount of space (1, 2, 4, or 8 bytes)
that can accurately represent the range of
values in the enumeration. Signage is
unsigned, unless the range of values includes
negative values.
int
Specifies that enumerations occupy 4 bytes and
are represented by int.
intlong
Specifies that enumerations occupy 8 bytes of
storage if the range of values in the
enumeration exceeds the limit for int.
Otherwise, the enumerations occupy 4 bytes of
storage and are represented by int.
1
Specifies that enumerations occupy 1 byte.
Type is signed or unsigned char.
2
Specifies that enumerations occupy 2 bytes.
Type is signed or unsigned short.
4
Specifies that enumerations occupy 4 bytes.
Type is signed or unsigned int.
8
Specifies that enumerations occupy 8 bytes.
Type is signed or unsigned long long in 32-bit
mode, and signed or unsigned long in 64-bit
mode.
Default: -qenum=intlong
-qfloat=<suboptions_list>
Specifies various floating-point suboptions. This
provides different strategies for speeding up or
improving the accuracy of floating-point
calculations. <suboptions_list> is a colon-
separated list of one or more of the following:
dfpemulate | nodfpemulate
Specifies whether decimal floating-point
computations are implemented in hardware
instructions or emulated in software by calls
to library functions.
-qdfp must be enabled for either suboption to
have any effect. nodfpemulate is only valid on
a system that supports decimal floating-point
instructions; that is, on AIX 5.3 and higher,
and with -qarch=pwr6 in effect. dfpemulate is
required for all other -qarch values.
Default: dfpemulate
fenv | nofenv
Specifies whether the code depends on the
hardware environment and whether to suppress
optimizations that could cause unexpected
results due to this dependency.
When nofenv is in effect, the compiler assumes
that the program does not depend on the
hardware environment, and that aggressive
compiler optimizations that change the
sequence of floating-point operations are
allowed to be performed. When fenv is in
effect, such optimizations are suppressed.
Default: nofenv
fltint | nofltint
Speeds up floating-point-to-integer
conversions by using faster inline code that
does not check for overflows. -qfloat=nofltint
checks floating-point-to-integer conversions
for out-of-range values.
Default:
o nofltint at -O2 optimization.
o fltint when -qnostrict or -O3 or higher
optimization level is in effect.
fold | nofold
Specifies that constant floating-point
expressions are to be evaluated at compile
time rather than at run time.
Default: fold
hscmplx | nohscmplx
Speeds up operations involving complex
division and complex absolute value. This
suboption, which provides a subset of the
optimizations of the hsflt suboption, is
preferred for complex calculations.
Default: nohscmplx
hsflt | nohsflt
The hsflt option speeds up calculations by
truncating instead of rounding computed values
to single precision before storing and on
conversions from floating-point to integer.
The nohsflt suboption specifies that single-
precision expressions are rounded after
expression evaluation and that floating-
point-to-integer conversions are to be checked
for out-of-range values.
Default: nohsflt
hssngl | nohssngl
The hssngl option specifies that single-
precision expressions are rounded only when
the results are stored into float memory
locations. The nohssngl option specifies that
single-precision expressions are rounded after
expression evaluation. Using hssngl can
improve runtime performance and is safer than
using -qfloat=hsflt.
Default: nohssngl
maf | nomaf
Makes floating-point calculations faster and
more accurate by using floating-point
multiply-add instructions where appropriate.
Default: maf
nans | nonans
Generates extra instructions to detect
signalling NaN when converting from single-
precision to double-precision at run time. The
option nonans specifies that this conversion
need not be detected.
Default: nonans
relax | norelax
Relaxes the strict IEEE-conformance slightly
for greater speed, typically by removing some
trivial, floating-point arithmetic operations,
such as adds and subtracts involving a zero on
the right.
Default: norelax
rndsngl | norndsngl
Specifies that the result of each single-
precision (float) operation is to be rounded
to single precision. -qfloat=norndsngl
specifies that rounding to single-precision
happens only after full expressions have been
evaluated.
Default: rndsngl
rngchk | norngchk
Specifying norngchk instructs the compiler to
skip range checking, allowing for increased
performance where division and sqrt operations
are performed repeatedly within a loop.
When rngchk is specified, range checking is
performed for input arguments for software
divide and inlined sqrt operations.
When -qstrict is active, the setting of this
option is forced to -qfloat=rngchk. When
-qnostrict is active, the setting of this
option is -qfloat=norngchk unless the
-qfloat=rngchk option is explicitly set by the
user.
Default: rngchk
rrm | norrm
Prevents floating-point optimizations that are
incompatible with runtime rounding to plus and
minus infinity modes.
Default: norrm
rsqrt | norsqrt
Specifies whether a sequence of code that
involves division by the result of a square
root can be replaced by calculating the
reciprocal of the square root and multiplying.
Allowing this replacement produces code that
runs faster. -qfloat=rsqrt has no effect
unless -qignerrno is also specified.
Default:
o norsqrt at -O2 optimization.
o rsqrt when when -qnostrict or -O3 or
higher optimization level is in effect.
single | nosingle
Allows single-precision arithmetic
instructions to be generated for single-
precision floating-point values. All PowerPC
processors support single-precision
instructions; however, if you wish to preserve
the behavior of applications compiled for
earlier architectures, in which all floating-
point arithmetic was performed in double-
precision and then truncated to single-
precision, you can use
-qfloat=nosingle:norndsngl. This suboption
provides computation precision results
compatible with those provided by the
deprecated options
-qarch=com|pwr|pwrx|pwr2|p2sc|601|602|603.
Default: single
spnans | nospnans
Detects signalling NaN on conversion from
single-precision to double-precision.
Default: nospnans
-qldbl128 | -qnoldbl128
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qlongdouble.
Default: -qnoldbl128
-qlongdouble | -qnolongdouble
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qldbl128.
Default: -qnolongdouble
-qlonglit | -qnolonglit
Makes unsuffixed literals into the long type in
64-bit mode.
Default: -qnolonglit
-y<rounding_mode>
Specifies the compile-time rounding mode of
constant floating-point expressions.
For binary floating-point types, <rounding_mode> is
one of the following:
m = round toward minus infinity
n = round to the nearest representable number, ties
to even
p = round toward plus infinity
z = round toward zero
Default: -yn
For decimal floating-point types, <rounding_mode>
is one of the following:
di = round toward infinities (away from zero)
dm = round toward minus infinity
dn = round to the nearest representable number,
ties to even
dna = round to the nearest representable number,
ties away from zero
dnz = round to the nearest representable number,
ties toward zero
dp = round toward plus infinity
dz = round toward zero
Default: -ydn
Object code control options
-q32, -q64
Selects either 32-bit or 64-bit compilation mode.
Use the -q32 and -q64 options, along with the
-qarch and -qtune compiler options, to optimize the
output of the compiler to the architecture on which
that output will be used.
Default: -q32
-qalloca
(C) Substitutes inline code for calls to function
alloca, as if #pragma alloca directives were in the
source code.
-ma (C) Substitutes inline code for calls to function
alloca.
-qeh[={v5|v6}] | -qnoeh
(C++) Controls whether exception handling is
enabled in the module being compiled.
v5
Instructs the compiler to generate exception-
handling code that is compatible with
VisualAge C++ V5.0.
v6
Instructs the compiler to generate new
exception-handling code, compatible with
VisualAge C++ V6.0, that correctly handles
try-catch blocks nested within other catch
blocks.
Default: -qeh=v6
-qexpfile=<file_name>
Saves the exported symbols in the specified file
and is only used together with the -qmkshrobj
compiler option.
Refer to the -qmkshrobj option for more
information.
-qfuncsect[=[no]implicitstaticref] | -qnofuncsect
Places instructions for each function in a separate
object file control section or csect. -qfuncsect
can take the following suboption:
implicitstaticref | noimplicitstaticref
Specifies whether the compiler generates dummy
references to the static area. Specifying
-qfuncsect with no suboption implies
implicitstaticref. Specifying
noimplicitstaticref removes unnecessary
references to the static data area.
Default: -qnofuncsect
-qinlglue | -qnoinlglue
This option inlines glue code that optimizes
external function calls when compiling at -q64 and
-O2 and higher.
Default: -qnoinlglue
-qkeepinlines | -qnokeepinlines
(C++) Instructs the compiler to keep or discard
definitions for unreferenced extern inline
functions. Discarding these definitions can reduce
the size of the object files. The -qkeepinlines
setting keeps the definitions of unreferenced
extern inline functions.
Default: -qnokeepinlines
-qpic[={small|large}] | -qnopic
Generates position-independent code (pic). Specify
-qpic=small if the global offset table must be 64
Kb or smaller, or -qpic=large if it can be larger
than 64 Kb.
Default: -qpic=small
-qppline | -qnoppline
When used in conjunction with the -E or -P options,
enables or disables the generation of #line
directives in the preprocessed output.
Default:
o -qnoppline with -P
o -qppline with -E
-qpriority=<num>
(C++) Specifies the priority level for the
initialization of static objects, where <num> is
the initialization priority level assigned to the
static objects within a file, or the priority level
of a shared or non-shared file or library.
You can specify a priority level from -(2147483647
+ 1) (highest priority) to +2147483647 (lowest
priority).
Default: -qpriority=0
-qproto | -qnoproto
(C) Assumes that all functions are prototyped.
Asserts that procedure call points agree with their
declarations even if the procedure has not been
prototyped. This allows the caller to pass
floating-point arguments in floating-point
registers instead of general-purpose registers.
Default: -qnoproto
-r Produces a relocatable object. This permits the
output file to be produced even though it contains
unresolved symbols.
-qreserved_reg=<registers_list>
Indicates that the specified register(s) cannot be
used during the compilation, except as a stack
pointer, frame pointer or in a different fixed
role. <registers_list> is a colon-separated list of
registers.
-qro | -qnoro
Specifies the storage type for string literals and
puts string literals in read-only storage.
Default:
o -qnoro with cc and its derivatives.
o -qro otherwise.
-qroconst | -qnoroconst
Specifies the storage location for constant values.
Default:
o -qroconst with xlc, xlc++, xlC, c89 and c99
invocations commands.
o -qnoroconst with cc.
-qroptr | -qnoroptr
Specifies the storage location for constant
pointers.
Default: -qnoroptr
-qrtti=<option> | -qnortti
(C++) Generates runtime type identification (RTTI)
information for the typeid and dynamic_cast
operators. The suboptions are:
all
Generates the information needed for the RTTI
typeid and dynamic_cast operators.
type | typeinfo
Generates the information needed for the RTTI
typeid operator only.
dyna | dynamiccast
Generates the information needed for the RTTI
dynamic_cast operator only.
Default: -qnortti
-s Strips the symbol table, line number information,
and relocation information from the output file.
-qsaveopt | -qnosaveopt
Saves the command-line options used for compiling a
source file, the version and level of each compiler
component invoked during compilation, and other
information to the corresponding object file.
This option must be used with the -c option.
Default: -qnosaveopt
-qstatsym | -qnostatsym
Adds user-defined, non-external names that have a
persistent storage class (such as initialized and
uninitialized static variables) to the name list
(the symbol table of objects).
Default: -qnostatsym
-qtbtable=<suboption>
Generates a traceback table that contains
information about each function, including the type
of function as well as stack frame and register
information. The traceback table is placed in the
text segment at the end of its code. Suboptions
include:
none
No traceback table is generated.
small
A traceback table is generated with no name or
parameter information. This is the default
with optimization if -g is not specified.
full
A full traceback table is generated. This is
the default with -qnoopt or -g specified.
Default:
o -qtbtable=full when compiling non-optimized
(without -O) or for debugging (with -g).
o -qtbtable=small otherwise.
-qthreaded | -qnothreaded
Ensures that all optimizations will be thread-safe
for executing in a multi-threaded environment.
Default:
o -qthreaded when compiling invocation
commands ending in "_r" or "_r7".
o -qnothreaded otherwise.
-qtls[=<model>] | -qnotls
Specifies the thread-local storage model to be used
by the application, where <model> can be:
global-dynamic
This model is the most general, and can be
used for all thread-local variables.
local-dynamic
This model provides better performance than
the global-dynamic model, and can be used for
thread-local variables defined in
dynamically-loaded modules.
initial-exec
This model provides better performance than
the global-dynamic or local-dynamic models,
and can be used for thread-local variables
defined in dynamically-loaded modules,
provided that those modules are loaded at the
same time as the executable.
local-exec
This model provides the best performance of
all of the models, but can only be used when
all thread-local variables are defined and
referenced by the main executable.
Default:
o -qtls=unsupported
o -qtls=initial_exec if the -qnopic compiler
option is enabled.
o -qtls=global_dynamic if the -qpic compiler
option is enabled.
-qunique | -qnounique
(C++) Generates unique names for static
constructor/destructor file compilation units.
Default: -qnounique
-qweakexp | -qnoweakexp
When used with the -qmkshrobj or -G options,
includes or excludes global symbols marked as weak
from the export list generated when you create a
shared object.
Default: -qweakexp
-qweaksymbol | -qnoweaksymbol
Instructs the compiler to generate weak symbols.
Default: -qweaksymbol
-qxcall | -qnoxcall
Generates code to treat static functions within a
compilation unit as if they were external
functions.
Default: -qnoxcall
Error checking and debugging options
-# Traces the compilation and generates information on
the progress of the compilation without invoking
the preprocessor, compiler, or linkage editor.
-qcheck[=<suboptions_list>] | -qnocheck
Generates code that performs certain types of
runtime checking. If a violation is encountered, a
runtime exception is raised by sending a SIGTRAP
signal to the process. <suboptions_list> is a
colon-separated list of one or more of the
following:
all
Enables all suboptions.
bounds | nobounds
Performs runtime checking of addresses when
subscripting within an object of known size.
divzero | nodivzero
Performs runtime checking of integer division.
A trap will occur if an attempt is made to
divide by zero.
nullptr | nonullptr
Performs runtime checking of addresses
contained in pointer variables used to
reference storage.
Default: -qnocheck
-qdbxextra | -qnodbxextra
(C) Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for debugging. Use this option with the -g
option to produce additional debugging information
for use with a debugger.
Default: -qnodbxextra
-qdpcl | -qnodpcl
Generates symbols that can be used by tools based
on the Dynamic Probe Class Library (DPCL) to see
the structure of an executable file.
Default: -qnodpcl
-qextchk | -qnoextchk
Generates bind-time type-checking information and
checks for compile-time consistency.
Default: -qnoextchk
-qflttrap[=<suboptions_list>] | -qnoflttrap
Generates instructions to detect and trap runtime
floating-point exceptions. <suboptions_list> is a
colon-separated list of one or more of the
following suboptions:
enable
Enables trapping of the specified exceptions.
imprecise
Only checks for the specified exceptions on
subprogram entry and exit.
inexact
Detects floating-point inexact exceptions.
invalid
Detects floating-point invalid operation
exceptions.
nanq
Generates code to detect and trap NaNQ (Not a
Number Quiet) exceptions handled or generated
by floating-point operations.
overflow
Detects floating-point overflow.
underflow
Detects floating-point underflow.
zerodivide
Detects floating-point division by zero.
Default: -qnoflttrap
-qformat=<options_list> | -qnoformat
Warns of possible problems with string input and
output format specifications. Functions diagnosed
are printf, scanf, strftime, strfmon family
functions and functions marked with format
attributes. <options_list> is a comma-separated
list of one or more of the following suboptions:
all | noall
Turns on all format diagnostic messages.
exarg | noexarg
Warns if excess arguments appear in printf and
scanf style function calls.
nlt | nonlt
Warns if a format string is not a string
literal, unless the format function takes its
format arguments as a va_list.
sec | nosec
Warns of possible security problems in use of
format functions.
y2k | noy2k
Warns of strftime formats that produce a 2-
digit year.
zln | nozln
Warns of zero-length formats.
Default:
o -qnoformat, which is equivalent to
-qformat=noall.
o -qformat=all if -qformat is specified
without any suboptions.
-qfullpath | -qnofullpath
Records the full or absolute path names of source
and include files in object files compiled with
debugging information (when you use the -g option).
Default: -qnofullpath
-g Generates debug information for debugging tools.
-qdbg is the long form of -g.
-g implies the -Q! option.
-qhalt=<sev>
Stops the compiler after the first phase if the
severity level of errors detected equals or exceeds
the specified level, <sev>. The severity levels in
increasing order of severity are:
i = informational messages
w = warning messages
e = error messages (C only)
s = severe error messages
Default: -qhalt=s
-qhaltonmsg=<msgnum_list>
(C++) Stops the compiler after the compilation
phase where it encounters the specified message
number(s), where <msgnum_list> is a comma-separated
list of message numbers.
-qheapdebug | -qnoheapdebug
Enables debug versions of memory management
functions.
Default: -qnoheapdebug
-qinfo[=[<suboption>][<groups_list>]] | -qnoinfo
Produces or suppresses informational messages.
<groups_list> is a colon-separated list. If a
<groups_list> is specified along with a
<suboption>, a colon must separate them. The
suboptions are:
all
Enables all diagnostic messages for all
groups.
noall
Disables all diagnostic messages for all
groups.
private
Lists shared variables that are made private
to a parallel loop.
reduction
Lists variables that are recognized as
reduction variables inside a parallel loop.
<groups_list> turns on or off specific groups of
messages and is a colon-separated list of one or
more of the following:
c99 | noc99
(C) C code that might behave differently
between C89 and C99 language levels
cls | nocls
C++ classes
cmp | nocmp
Possible redundancies in unsigned comparisons
cnd | nocnd
Possible redundancies or problems in
conditional expressions
cns | nocns
Operations involving constants
cnv | nocnv
Conversions
dcl | nodcl
Consistency of declarations
eff | noeff
Statements and pragmas with no effect
enu | noenu
Consistency of enum variables
ext | noext
Unused external definitions
gen | nogen
General diagnostic messages
gnr | nognr
Generation of temporary variables
got | nogot
Use of goto statements
ini | noini
Possible problems with initialization
lan | nolan
Language level effects
obs | noobs
Obsolete features
ord | noord
Unspecified order of evaluation
par | nopar
Unused parameters
por | nopor
Non-portable language constructs
ppc | noppc
Possible problems with using the preprocessor
ppt | noppt
Trace of preprocessor actions
pro | nopro
Missing function prototypes
rea | norea
Code that cannot be reached
ret | noret
Consistency of return statements
trd | notrd
Possible truncation or loss of data or
precision
tru | notru
Variable names truncated by the compiler
trx | notrx
Rounding of hexadecimal floating-point
constants
uni | nouni
Uninitialized variables
upg | noupg
Upgrade issues from one release to the next
release
use | nouse
(C++) Unused auto and static variables
vft | novft
(C++) Generation of virtual function tables in
C++ programs
zea | nozea
Zero-extent arrays
Default:
(C) -qnoinfo
(C++) -qinfo=lan:trx
If -qinfo is specified without a suboption, the
default is -qinfo=all for C and -qinfo=all:noppt
for C++.
-qinitauto=<hex_value> | -qnoinitauto
Initializes each byte or word of storage for
automatic variables to the specified hexadecimal
value <hex_value>. This generates extra code and
should only be used for error determination.
Default: -qnoinitauto
-qkeepparm | -qnokeepparm
Ensures that function parameters are stored on the
stack even if the application is optimized. As a
result, parameters remain in the expected memory
location, providing access to the values of these
incoming parameters to tools such as debuggers.
Default: -qnokeepparm
-qlinedebug | -qnolinedebug
Generates only abbreviated line number and source
file name information for the debugger.
Default: -qnolinedebug
-qmaxerr=<num>[:<sev>] | -qnomaxerr
Instructs the compiler to halt compilation when the
specified number of errors of the specified
severity (by default, the value of -qhalt) or
greater is reached. <num> must be an integer. The
severity levels, <sev>, are:
i = informational
w = warning
e = error (C only)
s = severe error
Default: -qnomaxerr
-qoptdebug | -qnooptdebug
When used with high levels of optimization,
-qoptdebug produces source files containing
optimized pseudocode that can be read by a
debugger.
An output file with a .optdbg extension is created
for each input file compiled with -qoptdebug. You
can use the information contained in this file to
help you understand how your code actually behaves
under optimization.
Default: -qnooptdebug
-qsymtab={unref|static}
(C) Determines what types of information appear in
the symbol table. The suboptions are:
unref
Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for processing by the debugger.
static
Adds user-defined, non-external names that
have a persistent storage class (such as
initialized and uninitialized static
variables) to the name list.
Default:
The default is to not add static variables to
the symbol table.
-qsyntaxonly
(C) Performs syntax checking without generating an
object file.
Default:
By default, source files are compiled and
linked to generate an executable file.
-qwarn64 | -qnowarn64
Enables checking for possible data conversion
problems between 32-bit and 64-bit compiler modes.
Default: -qnowarn64
Listing and messages options
-qattr[=full] | -qnoattr
Produces a compiler listing that includes an
attribute listing for all identifiers. If -qattr is
specified, the listing contains only those
identifiers that are used. If -qattr=full is
specified, the listing contains all names. If
-qnoattr is specified, no listing is produced.
Default: -qnoattr
-qdump_class_hierarchy
(C++) For each class object, this option dumps a
representation of its hierarchy and virtual
function table layout to a file. The file name is
created by appending ".class" to the source file
name.
-qflag=<listing_severity>:<terminal_severity>
Defines the minimum severity level of diagnostic
messages to be written to the listing file and to
the user terminal. <listing_severity> is the
minimum level for the listing file, and
<terminal_severity> is the minimum level for the
terminal. The message severity levels are:
i = informational messages
w = warning messages
e = error, severe error and unrecoverable error
messages (C only)
s = severe error and unrecoverable error messages
(C)
s = severe error messages (C++)
Default: -qflag=i:i
-qlist[={offset|nooffset}] | -qnolist
Produces a compiler listing that includes an object
listing. You can use the object listing to help
understand the performance characteristics of the
generated code and to diagnose execution problems.
offset | nooffset
Changes the offset of the PDEF header from
00000 to the offset of the start of the text
area.
Specifying -qlist without the suboption is
equivalent to list=nooffset.
Default: -qnolist
-qlistopt | -qnolistopt
Produces a compiler listing that displays all the
options that were in effect when the compiler was
invoked.
Default: -qnolistopt
-qphsinfo | -qnophsinfo
Reports the time taken in each compilation phase.
Phase information is sent to standard output. The
output takes the form <number1>/<number2> for each
phase where <number1> represents the CPU time used
by the compiler and <number2> represents the total
of the compiler time and the time that the CPU
spends handling system calls.
Default: -qnophsinfo
-qprint | -qnoprint
Enables or suppresses listings. Specifying
-qnoprint overrides all listing-producing options,
regardless of where they are specified, to suppress
listings.
Default: -qprint
-qreport | -qnoreport
Instructs the compiler to produce transformation
reports that show how program loops are optimized.
The transformation reports are included as part of
the compiler listing. This option requires -qhot or
-qsmp in order to have effect.
When used with -qipa=clonearch, -qreport produces
transformation reports on the procedures that are
cloned for the architectures specified by the
option.
Default: -qnoreport
-qshowinc[=<types_list>] | -qnoshowinc
Used with -qsource to selectively show user header
files (includes using " ") or system header files
(includes using < >) in the program source listing.
<types_list> is a colon-separated list of one or
more of the following types:
usr | nousr
Specifies whether to show user include files.
sys | nosys
Specifies whether to show system include
files.
all
Shows both user and system include files.
Default: -qnoshowinc
-qsource | -qnosource
Produces a compiler listing that includes source
code.
Default: -qnosource
-qsrcmsg | -qnosrcmsg
(C) Adds the corresponding source code lines to the
diagnostic messages in the stderr file.
Default: -qnosrcmsg
-qsuppress=<msg_id> | -qnosuppress=[<msg_id>]
Prevents the specified compiler or driver
informational or warning messages from being
displayed or added to the listings, where <msg_id>
is a colon-separated list of message numbers to
suppress or display.
NOTE: In (C++), -qnosuppress requires that you
supply message number(s), and in (C), -qnosuppress
does not allow you to supply any.
Default: -qnosuppress
-v Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a comma-separated list.
-V Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a space-separated list.
-qversion[=verbose]
Displays the official compiler product name and the
compiler version found on the system.
verbose
Additionally displays information about the
version, release, and level of each compiler
component installed.
-w Suppresses informational, language-level and
warning messages.
Specifying this option is equivalent to specifying
-qflag=e:e in C or -qflag=s:s in C++.
-qxref[=full] | -qnoxref
Specifies whether to produce a compiler listing
that includes a cross-reference listing of all
identifiers. Specifying -qxref will report only
identifiers that are used, -qxref=full reports all
identifiers in the program, and -qnoxref does not
report any identifiers in the program. The
-qnoprint option overrides this option.
Default: -qnoxref
Optimization and tuning options
-qaggrcopy={overlap|nooverlap}
Enables destructive copy operations for structures
and unions.
overlap | nooverlap
Enables or disables optimizations for
structure and union assignments. nooverlap
assumes that the source and destination for
structure and union assignments do not
overlap, allowing the compiler to generate
faster code. overlap inhibits these
optimizations.
Default: -qaggrcopy=nooverlap
-qalias=<suboptions_list>
Specifies the aliasing assertions to be applied to
your compilation unit. <suboptions_list> is a
colon-separated list of the following options:
addrtaken | noaddrtaken
Variables are disjoint from pointers unless
their address is taken.
allptrs | noallptrs
Pointers are never aliased if allptrs is
specified, but may be aliased if noallptrs is
specified. -qalias=allptrs implies
-qalias=typeptr.
ansi | noansi
If ansi is specified, type-based aliasing is
used during optimization, which restricts the
lvalues that can be safely used to access a
data object. This option has no effect unless
you also specify the -O option.
Specifying -qalias=noansi turns off type-based
aliasing completely.
global | noglobal
When global is in effect, type-based aliasing
rules are enabled during IPA link-time
optimization across compilation units. Both
-qipa and -qalias=ansi must be enabled for
-qalias=global to have an effect.
Specifying noglobal disables type-based
aliasing rules across compilation units.
restrict | norestrict
When restrict is in effect, optimizations for
pointers qualified with the restrict keyword
are enabled. Specifying norestrict disables
optimizations for restrict-qualified pointers.
-qalias=restrict is independent from other
-qalias suboptions.
typeptr | notypeptr
Pointers to different types are never aliased
if typeptr is specified, but may be aliased if
notypeptr is specified.
Default:
(C++)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
(C)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
for all invocation commands except cc.
-qalias=noaddrtaken:noallptrs:noansi:global:restrict:notypeptr
for the cc invocation command.
-qarch=<suboption>
Specifies the general processor architecture for
which the code (instructions) should be generated.
In general, the -qarch option allows you to target
a specific architecture for the compilation. For
any given -qarch setting, the compiler defaults to
a specific, matching -qtune setting, which can
provide additional performance improvements. The
suboptions are:
auto
Automatically detects the specific
architecture of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
403
Produces object code containing instructions
that will run on the PowerPC 403 hardware
platform.
604
Produces an object that contains instructions
that run on PowerPC 604 systems.
pwr3
Produces an object that contains instructions
that run on the POWER3 hardware platforms.
pwr4
Produces an object that contains instructions
that run on the POWER4 hardware platforms.
pwr5
Produces an object that contains instructions
that run on the POWER5 hardware platforms.
pwr5x
Produces an object that contains instructions
that run on the POWER5+ hardware platforms.
pwr6
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 architected mode. If you
would like support for decimal floating-point
instructions, be sure to specify this
suboption during compilation.
pwr6e
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 raw mode.
ppc
Produces an object that contains instructions
that run on any of the 32-bit PowerPC hardware
platforms. Using -q64 with ppc upgrades the
architecture to ppc64.
ppc64
Produces object code that will run on any 64-
bit PowerPC hardware platform. When compiled
in 32-bit mode, the resulting object code may
include instructions that are not recognized
or behave differently when run on 32-bit
PowerPC platforms.
ppcgr
In 32-bit mode, produces object code
containing optional graphics instructions for
PowerPC hardware platforms.
In 64-bit mode, produces object code
containing optional graphics instructions that
will run on 64-bit PowerPC platforms, but not
on 32-bit-only platforms. Using -q64 with
ppcgr upgrades the architecture to ppc64gr.
ppc64gr
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics instructions.
ppc64grsq
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics and square root
instructions.
ppc64v
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional vector instructions, such as a
PowerPC 970.
ppc970
Generates instructions specific to PowerPC 970
processors.
rs64a
Produces an object that contains instructions
that run on an RS64I hardware platform.
rs64b
Produces an object that contains instructions
that run on an RS64II hardware platform.
rs64c
Produces an object that contains instructions
that run on an RS64III hardware platform.
Default: -qarch=ppc
-qcache=<suboptions_list>
Describes the cache configuration for a specific
target execution machine, where <suboptions_list>
is a colon-separated list of one or more of the
following suboptions:
assoc=<number>
Specifies the set associativity of the cache,
where <number> is one of the following:
0 Direct-mapped cache
1 Fully associative cache
(number > 1) n-way set associative cache
auto
Automatically detects the specific cache
configuration of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
cost=<cycles>
Specifies the performance penalty, in CPU
cycles, resulting from a cache miss.
level=<level>
Specifies which level of cache is affected,
where level is one of the following::
1 Basic cache
2 Level-2 cache
3 Table Lookaside Buffer (TLB)
If a machine has more than one level of cache,
use a separate -qcache option.
line=<bytes>
Specifies the line size of the cache.
size=<Kbytes>
Specifies the total size of the cache.
type=<cache_type>
The settings apply to the specified type of
cache, where <cache_type> is one of the
following:
C or c = Combined data and instruction
cache
D or d = Data cache
I or i = Instruction cache
Default:
The -qtune setting determines the optimal
default -qcache settings for most typical
compilations. -O4, -O5, or -qipa must be
specified with the -qcache option.
-qcompact | -qnocompact
Reduces code size where possible, at the expense of
execution speed. Code size is reduced by inhibiting
optimizations that replicate or expand code inline.
This option takes effect only if -O2 or higher is
also used.
Default: -qnocompact
-qdataimported[=<variable_names>]
Specifies variables that the compiler can assume
are imported. <variable_names> is a colon-separated
list of variables. Specifying -qdataimported
without <variable_names> instructs the compiler to
assume that all variables are imported. This is
equivalent to specifying -qnotocdata.
(C++) Variable names must be specified using their
mangled names.
-qdatalocal[=<variable_names>]
Specifies variables that the compiler can assume
are local. <variable_names> is a colon-separated
list of variables. Specifying -qdatalocal with no
variables instructs the compiler to assume that all
variables are local. This is equivalent to
specifying -qtocdata.
(C++) Variable names must be specified using their
mangled names.
-qtocdata | -qnotocdata
Marks all data as local.
Default: -qnotocdata (marks all data as imported)
-qdirectstorage | -qnodirectstorage
Informs the compiler that write-through-enabled or
cache-inhibited storage may be referenced.
Default: -qnodirectstorage
-qenablevmx | -qnoenablevmx
Enables the generation of vector instructions for
processors that support them. These instructions
can offer higher performance when used with
algorithmic-intensive tasks such as multimedia
applications.
For -qenablevmx to have effect, the architecture
specified by the -qarch option must support vector
instructions.
If -qnoenablevmx is in effect, -qaltivec,
-qvecnvol, and -qhot=simd cannot be used.
Default: -qnoenablevmx
-qfdpr | -qnofdpr
Collects information about programs for use with
the IBM Feedback Directed Program Restructuring
(FDPR) performance-tuning utility.
Default: -qnofdpr
-qhot[=<suboption>] | -qnohot
Specifies whether or not to perform high-order
transformations during optimization. The suboptions
are:
arraypad[=<number>] | noarraypad
When <number> is specified, the compiler will
pad every array in the code. The pad amount
must be a positive integer value. Otherwise,
the compiler will pad any arrays where it
infers that there may be a benefit.
level={0|1}
Specifies the level of high-order
transformation to perform during compilation.
0
The compiler performs a subset of the
high-order transformations. Some of these
include early distribution, loop
interchange, and loop tiling, as
examples. Optimization level -O3 implies
-qhot=level=0.
1
At level=1, full high-order
transformation is performed.
-qhot=level=1 is equivalent to -qhot and
the compiler options that imply -qhot
also imply -qhot=level=1, unless
-qhot=level=0 is explicitly specified.
simd | nosimd
Converts certain operations in a loop that
apply to successive elements of an array into
a vector instruction. This call calculates
several results at one time, which is faster
than calculating each result sequentially. If
you specify -qhot=nosimd, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with vector
instructions. To enable -qhot=simd, you must
specify an architecture that supports vector
instructions.
vector | novector
When specified with -qnostrict and -qignerrno,
or an optimization level of -O3 or higher
(otherwise -qhot=vector has no effect), the
compiler converts certain operations in a loop
that apply to successive elements of an array
into a call to a routine in the Mathematical
Acceleration Subsystem (MASS) library, part of
the libxlopt.a library.
If you specify -qhot=novector, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with calls
to vector library routines.
Specifying -qhot without suboptions implies
-qhot=nosimd, -qhot=noarraypad, -qhot=vector and
-qhot=level=1. The -qhot option is also implied by
-qsmp, -O4, and -O5.
Default: -qnohot
-qignerrno | -qnoignerrno
Allows the compiler to perform optimizations that
assume errno is not modified by system calls.
Default: -qnoignerrno
-qipa[=<suboptions_list>] | -qnoipa
Turns on or customizes a class of optimizations
known as interprocedural analysis (IPA).
<suboptions_list> is a colon-separated list of the
following suboptions:
clonearch=<arch_name> | noclonearch
Specifies the architectures for which multiple
versions of the same instruction set are
produced, where <arch_name> is a comma-
separated list of architecture names. Use this
suboption if you require optimal performance
on multiple differing machines running the
same copy of your application.
cloneproc=<function_name> |
nocloneproc=<function_name>
Specifies the name of the functions to clone
for the architectures specified by the
clonearch suboption, where <function_name> is
a comma-separated list of function names.
exits=<procedures>
Specifies names of functions which represent
program exits. <procedures> is a comma-
separated list of procedures.
infrequentlabel=<procedures>
Specifies a comma-separated list of user-
defined labels that are likely to be called
infrequently during a program run.
inline[=<suboption>]
Specifying 'inline' with no suboption asserts
that all appropriate procedures will be
inlined. <suboption> can be one of the
following:
auto|noauto
Enables or disables automatic function
inlining by the high-level optimizer.
When -qipa=inline=auto is in effect, the
compiler considers all functions that are
under the maximum size limit (see below)
for inlining. When -qipa=inline=noauto is
in effect, only procedures listed in the
<procedures> suboption are considered for
inlining.
<procedures>
Specifies a comma-separated list of
procedures to attempt to inline.
limit=<num>
Specifies a limit on the size of a
calling function after inlining. This
only takes effect when inline=auto is on.
If you do not specify a value for <num>,
<num> is 8192 by default.
threshold=<num>
Specifies the upper size limit on
procedures to inline. This only takes
effect when inline=auto is on. If you do
not specify a value for <num>, <num> is
1024 by default.
Default: auto
noinline[=<procedures>]
Specifies a comma-separated list of procedures
which are not to be inlined. Specifying
noinline without <procedures>, asserts that no
procedures are to be inlined.
isolated=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and do not
directly refer to any global variable.
level=<level>
Determines the amount of IPA analysis and
optimization performed, where <level> can be
equal to:
0
Performs only minimal interprocedural
analysis and optimization.
1
Turns on inlining, limited alias
analysis, and limited call-site
tailoring.
2
Full interprocedural data flow and alias
analysis.
Default: 1
list[={<file_name>|short|long}]
Specifies an output listing file name during
the link phase. The default name is "a.lst".
Specifying 'long' or 'short' can be used to
request more or less information in the
listing file to determine which listing
sections will be included.
Default: short
lowfreq=<procedures>
Specifies a comma-separated list of procedures
that are likely to be called infrequently
during the course of a typical program run.
malloc16 | nomalloc16
Informs the compiler that the dynamic memory
allocation routines will return 16-byte
aligned memory addresses. The compiler can
then optimize the code based on that
assertion.
Default: -qipa=malloc16
missing={unknown|safe|isolated|pure}
Specifies the default assumption for
procedures not compiled with -qipa.
unknown
Greatly restricts the amount of
interprocedural optimization for calls to
unknown functions.
safe
Functions which do not indirectly call a
visible (not missing) function either
through direct call or function pointer.
isolated
Functions which do not directly reference
global variables accessible to visible
functions.
pure
Functions which are safe and isolated and
which do not indirectly alter storage
accessible to functions.
Default: missing=unknown
object | noobject
Specifies whether to include standard object
code in the object files. Specifying
'noobject' can substantially reduce overall
compile time by not generating object code
during the first IPA phase.
partition={small|medium|large}
Specifies the size of program sections that
are analyzed together. Larger partitions may
produce better analysis but require more
storage.
Default: partition=medium
pure=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that are
"isolated", "safe", and do not modify any data
objects that are visible to the caller.
safe=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that do not call
any other part of the program.
threads[=<suboption>] | nothreads
Runs portions of the IPA optimization process
during pass 2 in parallel threads, which can
speed up the linking process on multi-
processor systems. <suboption> can be one of
the following:
auto | noauto
When auto is in effect, the compiler
selects a number of threads heuristically
based on machine load. When noauto is in
effect, the compiler spawns one thread
per machine processor.
<number>
Instructs the compiler to use a specific
number of threads. <number> can be any
integer value in the range of 1 to 32767.
However, <number> is effectively limited
to the number of processors available on
your system.
Specifying threads with no suboptions implies
threads=auto.
Default: -qipa=threads
unknown=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and that may
update global variables and dummy arguments
and call other parts of the program compiled
with -qipa.
<file_name>
Specifies the name of a file that contains
suboption information in a special format.
Regular expressions are supported when specifying
procedure names for these suboptions:
cloneproc, nocloneproc, exits, inline, noinline,
isolated, lowfreq, pure, safe, unknown.
(C++) In C++ programs, procedure names must be
given in mangled form.
Default:
-qnoipa
-qipa=inline=auto:level=1:missing=unknown:partition=medium:threads=auto
when -O4 is in effect.
-qipa=inline=auto:level=2:missing=unknown:partition=medium:threads=auto
when -O5 is in effect.
-qipa=inline=auto:level=0:missing=unknown:partition=medium:threads=auto
when -qpdf1 or -qpdf2 is in effect.
-qisolated_call=<procedures>
Informs the compiler that specific functions do not
have or rely on side effects, other than those
implied by their parameters. <procedures> is a
colon-separated list of function names.
-qlargepage | -qnolargepage
Indicates that a program, designed to execute in a
large page memory environment, can take advantage
of large 16 MB pages provided on POWER4 and later
systems.
Default: -qnolargepage
-qlibansi | -qnolibansi
Assumes that all functions with the name of an ANSI
C defined library function are, in fact, the
library functions.
Default: -qnolibansi
-qmaxmem=<size>
Limits the amount of memory used by certain
memory-intensive optimizations to <size> kilobytes.
When <size> is -1, the optimizer will use as much
memory as needed.
Default:
o -qmaxmem=8192 when -O2 level optimization is
set.
o -qmaxmem=-1 when -O3 level or greater
optimization is set.
-qminimaltoc | -qnominimaltoc
Avoids Table of Contents (TOC) overflow conditions
by placing TOC entries into a separate data section
for each object file. By default, the compiler will
allocate at least one TOC entry for each unique
non-automatic variable reference in your program.
Default: -qnominimaltoc
-O[<level>]
Optimizes code at a choice of levels during
compilation. This is equivalent to
-qoptimize[=<level>]. <level> can be:
0
Performs only quick local optimizations such
as constant folding and elimination of local
common subexpressions.
2
Performs optimizations that the compiler
developers considered the best combination for
compilation speed and runtime performance. The
optimizations may change from product release
to release.
3
Performs some memory and compile-time
intensive optimizations in addition to those
executed with -O2. The -O3 specific
optimizations have the potential to alter the
semantics of a program. The compiler guards
against these optimizations at -O2 and the
option -qstrict is provided at -O3 to turn off
these aggressive optimizations. Specifying -O3
implies -qhot=level=0.
4
This option is the same as -O3, but also:
o sets the -qarch and -qtune options to the
architecture of the compiling machine.
o sets the -qcache option most appropriate
to the characteristics of the compiling
machine.
5
Equivalent to -O4 -qipa=level=2.
Specifying -O with no <level> is equivalent to
specifying -O2.
Default: -O0
-qoptimize[=<level>] | -qnooptimize
The long form of the -O option. -qoptimize=<level>
is equivalent to -O<level>. See the -O option.
Default: -qnooptimize
-p, -pg, -qprofile={-p|-pg}
Sets up the object files produced by the compiler
for profiling.
-pg is like -p, but it produces more extensive
statistics.
-qpdf1[=pdfname=<file_path] | -qnopdf1
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf1 produces an object that is instrumented to
collect runtime execution information. This is
phase 1 of the profile-directed feedback
optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf1
-qpdf2[=pdfname=<file_path>] | -qnopdf2
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf2 tunes application performance using the data
generated by running a program compiled with
-qpdf1. This is phase 2 of the profile-directed
feedback optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf2
-qprefetch | -qnoprefetch
Enables generation of prefetching instructions such
as dcbt and dcbz in compiled code.
Default: -qprefetch
-qprocimported[=<procedures>] | -qnoprocimported
Specifies functions that the compiler can assume
are imported. Imported functions are dynamically
bound with a shared portion of a library. Code
generated for calls to functions marked as imported
may be larger, but is faster than the default code
sequence generated for functions marked as unknown.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qproclocal[=<procedures>] | -qnoproclocal
Specifies functions that the compiler can assume
are local. Local functions are statically bound
with the functions that call them; smaller, faster
code is generated for calls to such functions.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qprocunknown[=<procedures>] | -qnoprocunknown
Specifies functions that the compiler can assume
are unknown. Unknown functions are resolved to
either statically or dynamically bound objects
during linking. <procedures> is a colon-separated
list of function identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-Q[<suboption>]
(C++) Instructs the compiler to try to inline
functions. Inlining is performed if possible but,
depending on which optimizations are performed,
some functions might not be inlined.
(C) Specifies which specific functions the compiler
should attempt to inline. You must specify at least
an optimization level of -O2 for inlining to take
effect with -Q. To turn on inline expansion for
calls to procedures in different scopes, you must
also use the -qipa=inline.
(C++) In the C++ language, this option can take the
form:
-Q
Compiler inlines all functions that it can.
-Q!
Compiler does not inline any functions.
(C) In the C language, this option can take the
form:
-Q
Attempts to inline all appropriate functions
with 20 executable source statements or fewer,
subject to the setting of any of the
suboptions to the -Q option. If -Q is
specified last, all functions are inlined.
-Q!
Does not inline any functions. If -Q! is
specified last, no functions are inlined.
-Q-<names>
Does not inline functions listed in <names>,
where <names> is a colon-separated list. All
other appropriate functions are inlined. The
option implies -Q.
-Q+<names>
Attempts to inline the functions listed in
<names>, where <names> is a colon-separated
list. All other appropriate functions are
inlined.
-Q=<threshold>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <threshold> for
the function to be inlined.
Default: -Q!
-qinline[<suboption>] | -qnoinline
Specifies whether to attempt to inline functions
instead of generating calls to a function.
(C++) In C++, you cannot specify any suboptions.
-qinline specifies that all appropriate functions
should be inlined, and -qnoinline specifies that no
functions should be inlined.
(C) In C, this option can take the following forms:
-qinline
The compiler attempts to inline all
appropriate functions with 20 executable
source statements or fewer, subject to any
other settings of the suboptions to the
-qinline option.
-qinline+<procedures>
Attempts to inline the functions listed in
<procedures> and any other appropriate
functions, where <procedures> is a colon-
separated list.
-qinline-<procedures>
Specifies that functions listed in
<procedures> do not get inlined, where
<procedures> is a colon-separated list.
-qnoinline
Does not inline any functions.
-qinline=threshold=<num>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <num> for the
function to be inlined. <num> must be a
positive integer.
Default:
The default is to treat inline specifications
as a hint to the compiler, and the result
depends on other options that you select. If
you specify the -g option (to generate debug
information), inlining may be affected.
-qshowpdf | -qnoshowpdf
Used with -qpdf1 and a minimum optimization level
of -O2 to add additional call and block count
profiling information to an executable.
Default: -qnoshowpdf
-qsmallstack | -qnosmallstack
Reduces the size of the stack frame. This option is
only valid when used together with IPA (-qipa, -O4,
-O5 compiler options).
Default: -qnosmallstack
-qsmp[=<suboptions_list>] | -qnosmp
Enables parallelization of program code.
<suboptions_list> is a colon-separated list of one
or more of the following suboptions:
auto | noauto
Enables automatic parallelization and
optimization. If noauto is specified,
automatic parallelization of program code is
disabled; only program code explicitly
parallelized with OpenMP directives is
optimized.
Default: auto
nested_par | nonested_par
If nested_par is specified, prescriptive
nested parallel constructs are parallelized by
the compiler.
Default: nonested_par
omp | noomp
Enables strict OpenMP compliance. Only OpenMP
parallelization pragmas are recognized.
Default: noomp
opt | noopt
Enables automatic parallelization but disables
optimization of parallelized program code. If
noopt is specified, optimization of
parallelized program code is disabled.
Default: opt
rec_locks | norec_locks
Specifies whether to use recursive locks.
Default: norec_locks
schedule=<type>
Specifies what kinds of scheduling algorithms
and chunking are used for loops to which no
other scheduling algorithm has been explicitly
assigned in the source code. <type> can be:
o affinity[=<num>]
o dynamic[=<num>]
o guided[=<num>]
o runtime
o static[=<num>],
where <num> is the number of loop iterations.
Default: schedule=runtime
stackcheck | nostackcheck
Causes the compiler to check for stack
overflow by slave threads at run time, and
issue a warning if the remaining stack size is
less than the number of bytes specified by the
stackcheck option of the XLSMPOPTS environment
variable. This suboption is intended for
debugging purposes, and only takes effect when
XLSMPOPTS=stackcheck is also set.
Default: nostackcheck
threshold[=<num>]
When -qsmp=auto is in effect, controls the
amount of automatic loop parallelization that
occurs. The value of <num> represents the
lower limit allowed for parallelization of a
loop, based on the level of "work" present in
a loop.
Default:
<num> must be a positive integer of 0 or
greater. If you specify threshold with no
suboption, the program uses a default value
of 100.
Specifying -qsmp without suboptions is equivalent
to
-qsmp=auto:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100
or
-qsmp=opt:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100.
Default: -qnosmp
-qspeculateabsolutes | -qnospeculateabsolutes
Works with the -qtocmerge -bl:file for non-IPA
links and with the -bl:file for IPA links to
disable speculation at absolute addresses.
The bl:file is necessary for the compiler to know
which addresses are absolutes.
Default: -qspeculateabsolutes
-qstrict | -qnostrict
Turns off aggressive optimizations which have the
potential to alter the semantics of your program.
-qstrict sets -qfloat=nofltint:norsqrt. -qnostrict
sets -qfloat=rsqrt. This option is only valid with
-O2 or higher optimization levels.
Default:
o -qnostrict at -O3 or higher.
o -qstrict otherwise.
-qstrict_induction | -qnostrict_induction
Turns off loop induction variable optimizations
that have the potential to alter the semantics of
your program.
Default:
o -qnostrict_induction at -O2 or higher.
o -qstrict_induction otherwise.
-qtocmerge | -qnotocmerge
Enables TOC merging to reduce TOC pointer loads and
improves the scheduling of external loads. Reads
from the file specified in -bImportfile linker
option and merges the address information to access
ranges of external addresses using a single table
of contents entry.
Default: -qnotocmerge
-qtune=<suboption>
Specifies the architecture system for which the
executable program is optimized.
<suboption> must be one of the following:
403
Generates object code optimized for all the
PowerPC 403 processors.
604
Generates object code optimized for all the
PowerPC 604 processors.
auto
Generates object code optimized for the
hardware platform on which the program is
compiled.
balanced
Optimizations are tuned across a selected
range of recent hardware.
ppc970
Generates instructions specific to PowerPC 970
hardware platforms.
pwr3
Generates object code optimized for the POWER3
hardware platforms.
pwr4
Generates object code optimized for the POWER4
hardware platforms.
pwr5
Generates object code optimized for the POWER5
hardware platforms.
pwr6
Generates object code optimized for the POWER6
hardware platforms.
rs64a
Generates object code optimized for the RS64I
processor.
rs64b
Generates object code optimized for the RS64II
processor.
rs64c
Generates object code optimized for the
RS64III processor.
Default:
-qtune=balanced when the default -qarch
setting is in effect. Otherwise, the default
depends on the effective -qarch setting.
-qunroll[=<suboption>] | -qnounroll
Unrolls inner loops in the program. This can help
improve program performance. The suboptions are:
auto
Instructs the compiler to perform basic loop
unrolling.
yes
Instructs the compiler to search for more
opportunities for loop unrolling than that
performed with auto. In general, this
suboption is more likely to increase compile
time or program size than auto processing, but
it may also improve your application's
performance.
no
Instructs the compiler to not unroll loops.
Default: -qunroll=auto
If -qunroll is specified with no suboptions, the
compiler assumes -qunroll=yes. -qnounroll is
equivalent to -qunroll=no.
-qunwind | -qnounwind
Informs the compiler that the stack can be unwound
while a routine in the compilation is active.
Specifying -qnounwind can improve the optimization
of non-volatile register saves and restores.
Default: -qunwind
Linking options
-b{dynamic|shared|static}
Controls how shared objects are processed by the
linkage editor. The suboptions are:
dynamic, shared
Causes the linker to process subsequent shared
objects in dynamic mode. In dynamic mode,
shared objects are not statically included in
the output file. Instead, the shared objects
are listed in the loader section of the output
file.
-bdynamic and -bshared are synonymous.
static
Causes the linker to process subsequent shared
objects in static mode. In static mode, shared
objects are statically linked in the output
file.
Default: -bshared
-bmaxdata:<bytes>
Specifies the maximum amount of space to reserve
for the program data segment for programs where the
size of these regions is a constraint. Combined
data space is slightly less than 256MB, or lower,
depending on the limits for the user ID.
Default: -bmaxdata:0
-brtl Controls runtime linking for the output file.
-qcrt | -qnocrt
Instructs the linker to use the standard system
startup files at link time.
Default: -qcrt
-e <name>
Sets the entry name for a shared executable and is
only used together with -qmkshrobj.
-f<file_name>
Names a file to store a list of object files for
the compiler to pass to the linker. The <file_name>
file should contain only the names of object files.
There should be one object file per line.
-L<dir>
Searches the path directory for library files
specified by the -l<key> option.
Default:
The default is to search only the standard
directories.
-l<key>
Searches the file lib<key>.so and then lib<key>.a
for dynamic linking, or only lib<key>.a for static
linking.
Default:
The default is to search only some of the
compiler runtime libraries.
-qlib | -qnolib
Specifies whether the compiler should use the
standard system libraries at link time. -qnolib is
similar to the gcc option nostdlib; the driver will
not pass the standard system startup files or
libraries when linking.
Default: -qlib
-qtwolink | -qnotwolink
(C++) Links twice in order to minimize the number
of static constructors included from libraries and
object files.
Default: -qnotwolink
-Z<prefix>
This linker option specifies a prefix for the
library search path. This is useful when developing
a new version of a library.
Portability and migration options
-qalign=<suboption>
Specifies what aggregate alignment rules the
compiler uses for file compilation, where the
alignment suboptions are:
bit_packed
The compiler uses the bit_packed alignment
rules.
full
The compiler uses the RISC System/6000
alignment rules. This is the same as power.
mac68k
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the twobyte
suboption.
natural
The compiler maps structure members to their
natural boundaries.
packed
The compiler uses the packed alignment rules.
power
The compiler uses the RISC System/6000
alignment rules.
twobyte
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the mac68k
suboption.
Default: -qalign=full
-qalignrulefor=power=[no]typedefrespectsrule
(C++) When used with -qalign=power, determines
whether a 4-byte alignment ceiling is applied to
non-first members of structures that are of type
typedef to array of element type that exceeds the
alignment ceiling.
typedefrespectsrule | notypedefrespectsrule
When typedefrespectsrule is in effect, the
member follows the normal alignment rules for
-qalign=power. This suboption provides
compatibility with code compiled with
-qalign=power with XL C++ V6.0 and earlier.
When notypedefrespectsrule is in effect, a
member that exceeds the alignment ceiling of 4
bytes is aligned on 4-byte boundaries. This
suboption provides compatibility with code
compiled with -qalign=power with XL C++ V7.0
and V8.0.
Default: -qalignrulefor=power=typedefrespectsrule
-qgenproto[=parmnames] | -qnogenproto
(C) Generates ANSI prototypes from K&R function
definitions and displays them on standard output.
Specifying -qgenproto without '=parmnames' will
cause prototypes to be generated without parameter
names.
Default: -qnogenproto
-qnamemangling=<scheme>
(C++) Chooses the name mangling scheme for external
symbol names generated from C++ source code. The
<scheme> can be:
ansi
Fully supports the most recent language
features of Standard C++.
v9
Compatible with XL C++ V9.0.
v8
Compatible with XL C++ V8.0.
v7
Compatible with XL C++ V7.0.
v6
Compatible with VisualAge C++ V6.0.
v5
The scheme for VisualAge C++ V5.0.
v4
The scheme for VisualAge C++ V4.0.
v3
The scheme for VisualAge C++ releases before
V4.0.
compat
Same as v3.
Default: -qnamemangling=ansi
-qobjmodel={classic|ibm}
(C++) Specifies the object model.
classic
This object model is compatible with version
3.6 of the IBM C and C++ compilers.
ibm
Uses the object model introduced with version
5.0 of VisualAge C++ for AIX. Objects compiled
with this object model will use less memory
and have better performance for deep
inheritance with virtual bases.
Default: -qobjmodel=classic
-qoldpassbyvalue | -qnooldpassbyvalue
(C++) Specifies how classes containing const or
reference members are passed in function arguments.
All classes in the compilation unit are affected by
this option. When -qoldpassbyvalue is specified,
the compiler mimics the IBM C/C++ compilers v3.6
compiler in that when a class containing a const or
reference member is passed as a function argument,
it is not passed by value. All such classes in the
compilation unit are affected.
Default: -qnooldpassbyvalue
-qupconv | -qnoupconv
(C) Preserves the unsigned specification when
performing integral promotions.
Default:
o -qupconv when -qlanglvl={extended|classic}.
o -qnoupconv otherwise.
-qvecnvol | -qnovecnvol
Specifies whether to use volatile or non-volatile
vector registers. Volatile vector registers are
registers whose value is not preserved across
function calls or in the context of save, jump or
switch system library functions. If -qnoenablevmx
is enabled, this option is ignored.
Default: -qnovecnvol
Compiler customization options
-qasm_as=<asm_path> [<flags_list>]
Specifies the path and flags used to invoke the
assembler in order to handle assembler code in an
asm statement. <asm_path> is the full path to the
assembler to be used, and <flags_list> is a series
of one or more flags (and their arguments),
separated by spaces. Single quotes (or double
quotes) are required around the string of arguments
if any spaces exist.
-B[<prefix>]
Determines substitute path names for programs used
during compilation, such as the compiler,
assembler, linkage editor, and preprocessor, where
<prefix> can be any program name recognized by the
-t compiler option. The optional <prefix> defines
part of a path name to the new programs. The -t
parameter, <program>, specifies the program to
which the <prefix> is to be appended. When
specifying <prefix>, there must be a slash (/)
after the folder name.
-qc_stdinc=<paths_list>
(C) Changes the standard search location for the XL
C headers. <paths_list> is a colon-separated list
of paths to search.
-qcpp_stdinc=<paths_list>
(C++) Specifies the standard search directories for
the XL C++ headers, where <paths_list> is a colon-
separated list of paths.
-F[<config_file>][:<stanza>]
Names an alternative configuration file (.cfg) for
the compiler. <config_file> is the name of a
compiler configuration file. <stanza> is the name
of the command used to invoke the compiler. This
directs the compiler to use the entries under
<stanza> in the <config_file> to set up the
compiler environment. At least one of the arguments
must be supplied.
-qpath=<program>:<path>
Constructs alternate program names for compiler
components. The program and directory path
specified are used in place of the regular program.
<program> can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-qspill=<size>
Specifies the size of the register allocation spill
area in bytes.
Default: -qspill=512
-t<programs_list>
Applies the prefix from the -B option to the
specified programs in <programs_list>.
<programs_list> is a chain (i.e: -tbcI) of one or
more of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-W<program>,<options_list>
Gives the specified option(s) to the compiler
program, <program>. <options_list> is a comma-
separated list of one or more options. <program>
can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = c++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = linkage helper (C++ only)
p = Preprocessor
SEE ALSO
gxlc(1), gxlc++(1), c++filt(1), CreateExportList(1),
linkxlC(1), makeC++SharedLib(1), vacndi(1), vacppndi(1),
showpdf(1), mergepdf(1), resetpdf(1), cleanpdf(1).
For more information, refer to the following Web sites:
http://www.ibm.com/software/awdtools/xlcpp/library/
http://www.ibm.com/software/awdtools/xlcpp/support/
COPYRIGHT
Licensed Materials - Property of IBM.
IBM XL C/C++ Enterprise Edition for AIX, V9.0.
5724-S71
Copyright IBM Corp. 1991, 2007. All Rights Reserved.
AIX, IBM, POWER3, POWER4, POWER5, POWER5+, POWER6,
PowerPC, PowerPC 604 and SAA are trademarks or registered
trademarks of International Business Machines Corporation
in the United States, other countries, or both.
Windows is a trademarks of Microsoft Corporation in the
United States, other countries, or both.
US Government Users Restricted Rights - Use, duplication
or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
rm /ptmp/ddvento/xlcW0ppyEia
rm /ptmp/ddvento/xlcW1ppyEib
rm /ptmp/ddvento/xlcW2ppyEic
configure:3320: $? = 249
configure:3343: checking for C compiler default output file name
configure:3365: xlc conftest.c >&5
configure:3369: $? = 0
configure:3407: result: a.out
configure:3426: checking whether the C compiler works
configure:3436: ./a.out
configure:3440: $? = 0
configure:3459: result: yes
configure:3466: checking whether we are cross compiling
configure:3468: result: no
configure:3471: checking for suffix of executables
configure:3478: xlc -o conftest conftest.c >&5
configure:3482: $? = 0
configure:3508: result:
configure:3514: checking for suffix of object files
configure:3540: xlc -c conftest.c >&5
configure:3544: $? = 0
configure:3569: result: o
configure:3573: checking whether we are using the GNU C compiler
configure:3602: xlc -c conftest.c >&5
"conftest.c", line 14.14: 1506-275 (S) Unexpected text me encountered.
"conftest.c", line 14.8: 1506-045 (S) Undeclared identifier choke.
configure:3609: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| /* end confdefs.h. */
|
| int
| main ()
| {
| #ifndef __GNUC__
| choke me
| #endif
|
| ;
| return 0;
| }
configure:3626: result: no
configure:3635: checking whether xlc accepts -g
configure:3665: xlc -c -g conftest.c >&5
configure:3672: $? = 0
configure:3773: result: yes
configure:3790: checking for xlc option to accept ISO C89
configure:3864: xlc -c -g conftest.c >&5
configure:3871: $? = 0
configure:3894: result: none needed
configure:3923: checking for style of include used by make
configure:3951: result: GNU
configure:3976: checking dependency style of xlc
configure:4067: result: aix
configure:4269: checking for C++ compiler version
configure:4277: xlC --version >&5
xlC: 1501-216 (W) command option --version is not recognized - passed to ld
xlc(1) IBM (2007) xlc(1)
NAME
xlc, xlc++, xlC, cc, c89, c99, xlCcore, xlc++core and
related commands - invoke the IBM XL C/C++ compiler.
SYNTAX
<invocation-command> [ <option> | <inputfile> ] ...
DESCRIPTION
The invocation commands compile C and C++ source files.
The commands and their recommended uses are described
below.
Invocations Usage (supported standards)
_________________________________________________________
xlc, xlc_r, xlc_r4, Compile C source files.
xlc_r7, xlc128, xlc128_r, (ANSI C89, ISO C99,
xlc128_r4, xlc128_r7 IBM language extensions)
xlc++, xlc++_r, xlc++_r4, Compile C++ source files.
xlc++_r7, xlc++128,
xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC, xlC_r,
xlC_r4, xlC_r7, xlC128,
xlC128_r, xlC128_r4,
xlC128_r7
cc, cc_r, cc_r4, cc_r7, Compile legacy code that
cc128, cc128_r, cc128_r4, does not conform to Standard
cc128_r7 C. (pre-ANSI C)
c89, c89_r, c89_r4, Compile C source files with
c89_r7, c89_128, c89_128_r, strict conformance to the
c89_128_r4, c89_128_r7 C89 standard. (ANSI C89)
c99, c99_r, c99_r4, Compile C source files with
c99_r7, c99_128, c99_128_r, strict conformance to the
c99_128_r4, c99_128_r7 C99 standard. (ISO 99)
xlc++core, xlc++core_r, Compile C++ source files
xlc++core_r7, xlc++core128, but the compiler will
xlc++core128_r, link only to the core of
xlc++core128_r7, xlCcore, the runtime library.
xlCcore_r, xlCcore_r7,
xlC128core, xlC128core_r,
xlC128core_r7
gxlc Accepts GNU C options, maps
them to their equivalent XL
C option, then invokes xlc.
gxlc++, gxlC Accepts GNU C/C++ options, maps
them to their equivalent XL
C++ option,then invokes xlc++.
The main difference between these commands is that they use different
default options (which are set in the configuration file
/etc/vac.cfg.XX, where XX represents the AIX version).
See the Compiler Reference for more information on these invocation
commands.
All invocations with a suffix of _r allow for thread-safe
compilation. Use these commands to create threaded
applications or to link programs that use multi-threading.
These commands also process assembler source files and
object files. The compiler calls the link editor to
produce a single executable or shared library, unless you
specify the compiler options that prevent object files
from being linked.
The input file may have any of the following suffixes:
.C, .cpp, .cxx, C++ source file
.cc, .cp, .c++
.c C source file
.i Preprocessed C or C++ source file
.a Archive file
.o Object file for ld command
.s Assembler source file
.S Assembler source file that
needs preprocessing
.so Shared object file
OPTIONS
Compiler options are categorized by their functions and
may be used to set the compiler behavior. Options can be
flag options or keyword options.
Keyword options are specified in one of the following
ways:
-q<option>
-q<option>=<suboption>
-q<option>=<suboption>:<suboption>
Keyword options with no suboptions represent switches that
may be either on or off. -qx turns the switch on, and
-qnox turns the switch off. For example, -qsource tells
the compiler to produce a source listing and -qnosource
tells the compiler not to produce a source listing.
Output control options
-c Instructs the compiler to pass source files to the
compiler only. The compiled source files are not
sent to the linker. This option produces an object
file, file_name.o, for each valid source file.
-C | -C!
Preserves or removes comments in preprocessed
output.
When -C is used with the -E option, comments are
written to standard output; with the -P option,
comments are written to an output file.
When -C! is in effect, comments are removed.
-E Instructs the compiler to preprocess the source
files named in the compiler invocation and creates
an output preprocessed source file.
-G Tells the linkage editor to create a shared object
enabled for runtime linking.
-M Creates an output file that contains information to
be included in a "make" description file. This is
equivalent to specifying -qmakedep without a
suboption.
-qmakedep[=gcc]
Creates an output file that contains targets
suitable for inclusion in a description file for
the make command that describes the dependencies of
the main source file in the compilation.
Specifying 'gcc' changes the format of the
generated dependency file.
Specifying -qmakedep without 'gcc' is equivalent to
specifying -M.
-MF<path>
Specifies the target for the output generated by
the -qmakedep or -M options, where <path> can be a
full directory path or file name. Note that "-MF
<path>" (with a space before the argument) is also
acceptable. This option only has effect when
specified with -qmakedep or -M.
(C)-qmkshrobj, (C++)-qmkshrobj[=<priority>]
Creates a shared object from the generated object
files.
The optional number specifies the priority level
for initialization of all static objects in the
file. <priority> may be any number from -214782623
(highest priority-initialized first) to 214783647
(lowest priority-initialized last). If no priority
is specified, the default priority of 0 is used.
The priority is not used when linking shared
objects (using the xlc command) written in C.
Specifying -qmkshrobj implies -qpic.
See related options, -e <name> and -o <path>.
-o <path>
Specifies an output location for the object,
assembler, or executable files created by the
compiler. When the -o option is used during
compiler invocation, <path> can be the name of
either a file or a directory.
Default: -o a.out
-P Preprocesses the C or C++ source files named in the
compiler invocation and creates an output
preprocessed source file for each input source
file. The preprocessed output file has the same
name as the output file, with a .i suffix.
-S Generates an assembler language file (.s) for each
source file. The resulting .s files can be
assembled to produce object .o files or an
executable file (a.out).
Input control options
-+ (C++) Compiles any file, <file_name.nnn>, as a C++
language file, where <nnn> is any suffix other than
.a, .so, .o, .s, or .S. This option is equivalent
to the -qsourcetype=c++ option and should not be
used together with the -qsourcetype option.
-qcinc=<directory_path> | -qnocinc
(C++) Instructs the compiler to place an extern "C"
{ } wrapper around the contents of an include file,
where <directory_path> is the location of that
include file.
Default: -qnocinc
-I<directory_path>
Specifies an additional search path for include
file names that do not specify an absolute path.
Default:
The following directories are searched, in the
following order, after any paths that are
specified by the -I option:
1) The current directory.
2) The directory where the source file is
located.
3) /usr/include.
-qidirfirst | -qnoidirfirst
Specifies the search order for files included with
the #include "<file_name>" directive. Use
-qidirfirst with the -I option. If -qidirfirst is
specified, the directories specified by the
-I<directory_path> option are searched before the
directory in which the current file resides.
Default: -qnoidirfirst
-qinclude=<file_path>
Specifies additional header files that are included
before the first line of a source file in a
compilation unit and ahead of any headers which may
be specified by an #include statement on the first
line of the source file.
-qsourcetype=<type>
Determines whether to treat all recognized source
files as if they are of the source type specified
by <type> (regardless of file name suffix), or
whether to use the file name suffix to determine
the programming language.
Note that the option only affects files that are
specified on the command line following the option,
but not those that precede the option. The
-qsourcetype option should not be used together
with the -+ option. The suboptions are:
default
The compiler assumes that the programming
language of a source file will be implied by
its file name suffix.
c
The compiler compiles all source files
following this option as if they are C
language source files.
assembler
The compiler compiles all source files
following this option as if they are assembler
language source files.
assembler-with-cpp
The compiler compiles all source files
following this option as if they are assembler
language source files that need preprocessing.
Default: -qsourcetype=default
-qstdinc | -qnostdinc
Specifies whether the standard directories are
searched for files included by the #include
<file_name> and #include "file_name" directives.
The -qnostdinc option excludes the standard include
directories from the search path.
Default: -qstdinc
Language element control options
-qaltivec | -qnoaltivec
Instructs the compiler to support vector data types
and operators and is accepted when the architecture
specified by the -qarch option supports vector
instructions and -qenablevmx is enabled.
Default: -qnoaltivec
-qasm[=<sub>] | -qnoasm[=<sub>]
Controls the interpretation of, and subsequent
generation of code for, asm statements.
In (C), <sub> can only be 'gcc'.
In (C++), <sub> can be:
gcc
Interprets asm statements using GCC syntax.
stdcpp
Interprets asm statements using stdcpp syntax.
Default:
(C++) -qnoasm=stdcpp in compat366 or strict98
modes, and -qasm=gcc otherwise.
(C) -qasm=gcc
-qcpluscmt | -qnocpluscmt
(C) Permits the usage of "//" to introduce a
comment that lasts until the end of the current
source line, as in C++.
Default:
o -qcpluscmt when you invoke the compiler with
xlc, xlc_r, cc, or cc_r, or when -qlanglvl is
set to stdc99 or extc99.
o -qnocpluscmt otherwise.
-D<name>[=[<def>]]
Defines <name> as in the #define directive. <def>
is an optional definition or value assigned to
<name>. Specifying -D<name>= (with no <def>) is
equivalent to #define <name>; specifying
-D<name> is equivalent to #define <name> 1.
-qdbcs | -qnodbcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qmbcs.
Default: -qnodbcs
-qdfp | -qnodfp
Enables compiler support for decimal floating-point
types and literals.
Default: -qnodpf
-qdigraph | -qnodigraph
Allows usage of digraph key combinations or
keywords to represent characters not found on some
keyboards.
Default:
(C) -qdigraph when -qlanglvl is extc89,
extended, extc99 or stdc99, and -qnodigraph
otherwise.
(C++) -qdigraph
-qdollar | -qnodollar
Allows the '$' symbol to be used in the names of
identifiers. When -qdollar is in effect, the dollar
symbol '$' in an identifier is treated as a base
character. If the options -qnodollar and
-qlanglvl=ucs are both enabled, the dollar symbol
is treated as an extended character.
Default: -qnodollar
-qignprag=<option>
Instructs the compiler to ignore certain pragma
statements. The options are:
disjoint
Ignores all #pragma disjoint directives in the
source file.
isolated_call
Ignores all #pragma isolated_call directives
in the source file.
all
Ignores all #pragma isolated_call directives
and #pragma disjoint directives in the source
file.
omp
Ignores all OpenMP parallel processing
directives in the source file.
ibm
(C) Ignores all #pragma ibm snapshot
directives and all IBM SMP directives in the
source file.
-qkeyword=<keyword> | -qnokeyword=<keyword>
Controls whether the specified name is treated as a
keyword or as an identifier whenever it appears in
a program source.
By default, all the built-in keywords defined in
the C and C++ language standards are reserved as
keywords. You cannot add keywords to the language
with this option. However, you can use
-qnokeyword=<keyword> to disable built-in keywords,
and use -qkeyword=<keyword> to reinstate those
keywords.
(C) This option can also be used with the following
C keywords: restrict, typeof, asm and inline.
(C++) This option can be used with all C++ built-in
keywords.
-qlanglvl=<suboptions_list>
Selects the language level and language options for
the compilation. <suboptions_list> is a colon-
separated list of suboptions.
(C) For C language programs, <suboptions_list> is
{classic|extended|saa|saa12|stdc89|stdc99|extc89|extc99}:{ucs|noucs}.
classic
Allows the compilation of non-stdc89 programs,
and conforms closely to the K&R level
preprocessor.
extended
Provides compatibility with the RT compiler
and classic. This language level is based on
C89.
saa
Compilation conforms to the current SAA(R) C
CPI language definition. This is currently SAA
C Level 2.
saal2
Compilation conforms to the SAA C Level 2 CPI
language definition, with some exceptions.
stdc89
Compilation conforms to the ANSI C89 standard,
also known as ISO C90.
stdc99
Compilation conforms to the ISO C99 standard.
extc89
Compilation conforms to the ANSI C89 standard,
and accepts implementation-specific language
extensions.
extc99
Compilation conforms to the ISO C99 standard,
and accepts implementation-specific language
extensions.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in program
source code.
Default:
o -qlanglvl=ucs under language levels stdc99
and extc99.
o -qlanglvl=noucs for all other language
levels.
(C++) The suboptions for C++ language programs are:
compat366
Compilation conforms to some, but not all, IBM
C and C++ Compilers V3.6 features.
extended
Compilation is based on the strict98, with
some differences to accommodate extended
language features.
strict98
Compilation conforms to the ISO C++ standard
for C++ programs.
anonstruct | noanonstruct
This suboption controls whether anonymous
structs and anonymous classes are allowed in
your C++ source. By default, the compiler
allows anonymous structs.
anonunion | noanonunion
This suboption controls what members are
allowed in anonymous unions. When this
suboption is set to anonunion, anonymous
unions can have members of all types that
standard C++ allows in non-anonymous unions.
ansifor | noansifor
This suboption controls whether scope rules
defined in the C++ standard apply to names
declared in for-init statements. By default,
standard C++ rules are used.
ansisinit | noansisinit
This suboption can be used to select between
old (v3.6 or earlier) and current (v5.0 or
later) compiler object compatibility.
c99__func__ | noc99__func__
This suboption instructs the compiler to
recognize the C99 __func__ identifier.
The c99__func__ suboption is enabled by
default when -qlanglvl=extended is enabled. It
can be enabled for any language level by
specifying -qlanglvl=c99__func__, or disabled
by specifying -qlanglvl=noc99__func__.
c99complex | noc99complex
This suboption instructs the compiler to
recognize C99 complex data types and related
keywords. It is set by default for
-qlanglvl=extended.
c99complexheader | noc99complexheader
This suboption instructs the compiler to use
the C99 complex.h header file.
c99compoundliteral | noc99compoundliteral
This suboption instructs the compiler to
support the C99 compound literal feature. It
is set by default for -qlanglvl=extended.
c99hexfloat | noc99hexfloat
This suboption enables support for C99-style
hexadecimal floating constants in C++
applications. It is on by default for
-qlanglvl=extended.
c99vla | noc99vla
When c99vla is enabled, the compiler will
support the use of C99-type variable length
arrays in your C++ applications. It is set by
default for -qlanglvl=extended.
compatzea | nocompatzea
The -qlanglvl=compatzea option is a
compatibility option that lets you continue to
use a zero extent array with dimension of 1.
Default: -qlanglvl=nocompatzea
Specifying -qlanglvl=compatzea has effect only
if -qlanglvl=zeroextarray is also enabled.
dependentbaselookup | nodependentbaselookup
Provides the ability to specify compilation in
conformance with issue 213 of TC1 of the C++
standard.
Default: -qlanglvl=dependentbaselookup
gnu_assert | nognu_assert
Enables or disables support for the following
GNU C system identification assertions:
'#assert', '#unassert', '#cpu', '#machine',
'#system'.
gnu_complex | nognu_complex
This suboption instructs the compiler to
recognize GNU complex data types and related
keywords.
gnu_computedgoto | nognu_computedgoto
Enables support for computed gotos. This
suboption is enabled for -qlanglvl=extended.
gnu_explicitregvar | nognu_explicitregvar
(C) Allows you to control whether the compiler
accepts and ignores the specification of
explicit registers for variables.
gnu_externtemplate | nognu_externtemplate
This suboption enables or disables extern
template instantiations.
Default:
gnu_externtemplate is enabled by default
when compiling to the extended language
level.
gnu_include_next | nognu_include_next
Enables or disables support for the GNU C
#include_next preprocessor directive.
Default:
gnu_include_next is enabled by default for
-qlanglvl=extended.
gnu_labelvalue | nognu_labelvalue
Enables or disables support for labels as
values.
Default:
gnu_labelvalue is enabled by default for
-qlanglvl=extended.
gnu_locallabel | nognu_locallabel
Enables or disables support for locally-
declared labels.
gnu_membernamereuse | nognu_membernamereuse
Enables or disables reusing a template name in
a member list as a typedef.
gnu_suffixij | nognu_suffixij
Enables or disables support for GCC style
complex numbers. If gnu_suffixij is specified,
a complex number can be ended with suffix i/I
or j/J.
Default:
gnu_suffixij is enabled by default for
-qlanglvl=extended.
gnu_varargmacros | nognu_varargmacros
This option is similar to
-qlanglvl=varargmacros. For the list of the
main differences, refer to the Compiler
Reference.
Default:
gnu_varargmacros is set by default for
-qlanglvl=extended.
gnu_warning | nognu_warning
Enables or disables support for the GNU C
#warning preprocessor directive.
illptom | noillptom
This suboption controls what expressions can
be used to form pointers to members. C/C++ can
accept some forms that are in common use, but
do not conform to the C++ standard. The
compiler allows these forms by default.
implicitint | noimplicitint
This suboption controls whether the compiler
will accept missing or partially specified
types as implicitly specifying 'int'. This is
no longer accepted in the standard but may
exist in legacy code.
With the suboption set to noimplicitint, all
types must be fully specified.
With the suboption set to implicitint, a
function declaration at namespace scope or in
a member list will implicitly be declared to
return int.
newexcp | nonewexcp
This suboption determines whether or not the
C++ new operator throws an exception. If the
-qlanglvl=newexcp option is specified, the
standard exception std::bad_alloc is thrown
when the requested memory allocation fails.
This option does not apply to the nothrow
versions of the new operator.
The standard implementation of the new
operators fully support exceptions. For
compatibility with previous versions of
VisualAge C++, these operators return 0 by
default.
offsetnonpod | nooffsetnonpod
This suboption controls whether the offsetof
macro can be applied to classes that are not
data-only.
By default, the compiler allows offsetof to be
used with non-POD classes.
olddigraph | noolddigraph
This option controls whether old-style
digraphs are allowed in your C++ source. It
applies only when -qdigraph is also set.
By default, the compiler supports only the
digraphs specified in the C++ standard.
oldfriend | nooldfriend
This option controls whether friend
declarations that name classes without
elaborated class names are treated as C++
errors.
By default, the compiler lets you declare a
friend class without elaborating the name of
the class with the keyword class.
oldmath | nooldmath
This suboption controls which versions of math
function declarations in <math.h> are included
when you specify math.h as an included or
primary source file.
By default, the new standard math functions
are used. Build with -qlanglvl=nooldmath for
strict compliance with the C++ standard. For
compatibility with modules that were built
with earlier versions of VisualAge C++ and
predecessor products, you may need to build
with -qlanglvl=oldmath.
oldtempacc | nooldtempacc
This suboption controls whether access to a
copy constructor to create a temporary object
is always checked, even if creation of the
temporary object is avoided.
By default, the compiler suppresses the access
checking.
oldtmplalign | nooldtmplalign
Controls whether alignment rules specified for
nested templates are ignored.
When the default, -qlanglvl=nooldtmplalign, is
in effect, these alignment rules are not
ignored.
Specify -qlanglvl=oldtmplalign for
compatibility with VisualAge C++ 4.0 and
predecessor products.
oldtmplspec | nooldtmplspec
This suboption controls whether template
specializations that do not conform to the C++
standard are allowed.
By default, the compiler allows these old
specializations (-qlanglvl=nooldtmplspec).
redefmac | noredefmac
Specifies whether a macro can be redefined
without a prior #undef or undefine()
statement.
trailenum | notrailenum
This suboption controls whether trailing
commas are allowed in enum declarations.
By default, the compiler allows one or more
trailing commas at the end of the enumerator
list.
typedefclass | notypedefclass
This suboption provides backwards
compatibility with previous versions of
VisualAge C++ and predecessor products.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in C++
sources.
Default: -qlanglvl=noucs
varargmacros | novarargmacros
This C99 feature allows the use of a variable
argument list in function-like macros in your
C++ applications.
zeroextarray | nozeroextarray
This suboption controls whether zero-extent
arrays are allowed as the last non-static data
member in a class definition.
By default, the compiler allows arrays with
zero elements.
The default depends on the invocation command used:
Command Default
_____________________________________________
xlC/xlc++ extended
xlc extc99
cc extended
c89 stdc89
c99 stdc99
-qlonglong | -qnolonglong
Allows IBM-style long long integers. This option
cannot be used with -qlanglvl=stdc99 or
-qlanglvl=extc99.
Default:
o -qlonglong when compiling with xlc, xlc++,
xlC or cc.
o -qnolonglong when compiling with c89 or c99.
-qmacpstr | -qnomacpstr
Converts Pascal string literals into null-
terminated strings where the first byte contains
the length of the string.
Default: -qnomacpstr
-qmbcs | -qnombcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qdbcs.
Default: -qnombcs
-qstaticinline | -qnostaticinline
(C++) Controls whether inline functions are treated
as static or extern. Specifying -qnostaticinline
means the inline functions are treated as having
extern linkage.
Default: -qnostaticinline
-qtabsize=<size>
Changes the length of tabs as perceived by the
compiler, where <size> is the number of character
spaces representing a tab in the source program.
Default: -qtabsize=8
-qtrigraph | -qnotrigraph
Allows trigraph key combinations to represent
characters not found on some keyboards.
Default: -qtrigraph
However, if -qlanglvl=classic is enabled or
implied, the trigraphs are not recognized by
default.
-U<name>
Undefines the identifier <name> defined by the
compiler or by the -D<name> option.
-qutf | -qnoutf
Enables recognition of UTF literal syntax.
Default:
o (C) -qnoutf
o (C++) -qutf for all language levels except
-qlanglvl=strict98
o (C++) -qnoutf when -qlanglvl=strict98 is in
effect
Template control options (C++ only)
-qtempinc[=<directory_path>] | -qnotempinc
(C++) Generates separate template include files for
template functions and class declarations, and
places these files in a directory which can be
optionally specified.
Default: -qnotempinc
-qtemplatedepth=<number>
(C++) Specifies the maximum number of recursively
instantiated template specializations that will be
processed by the compiler. <number> can be a value
between 1 and INT_MAX.
Default: -qtemplatedepth=300
-qtemplaterecompile | -qnotemplaterecompile
(C++) Helps manage dependencies between compilation
units that have been compiled using the
-qtemplateregistry compiler option.
Default: -qnotemplaterecompile
-qtemplateregistry[=<filename>] | -qnotemplateregistry
(C++) Maintains records of all templates as they
are encountered in the source and ensures that only
one instantiation of each template is made.
Default: -qnotemplateregistry
-qtempmax=<number>
(C++) Specifies the maximum number of template
include files to be generated by the -qtempinc
option for each header file.
Default: -qtempmax=1
-qtmplinst=<suboption>
(C++) Allows you to manage implicit template
instantiations. <suboption> is one of the
following:
none
Instantiates only the inline functions. If
this is specified, -qtempinc and
-qtemplateregistry are ignored.
noinline
Suppresses all implicit instantiations.
auto
Handles the implicit instantiations according
to the -qtempinc and -qtemplateregistry
options. If both options are off, then
implicit instantiations are always performed.
always
Always perform implicit instantiations. This
will ignore the -qtempinc and
-qtemplateregistry options.
Default: -qtmplinst=auto
-qtmplparse=<option>
(C++) Controls whether parsing and semantic
checking are applied to template definition
implementations or only to template instantiations.
The compiler has the option to produce warning or
error messages. The suboptions are:
no
Does not parse, to reduce the number of errors
issued in code written for previous versions
of the compiler.
warn
Parses template definitions and issues warning
messages for semantic errors.
error
Treats problems in template definitions as
errors, even if the template is not
instantiated.
Default: -qtmplparse=no
Floating-point and integer control options
-qbitfields={signed|unsigned}
Specifies whether bit fields will be signed or
unsigned.
Default: -qbitfields=unsigned
-qchars={signed|unsigned}
Specifies whether the data type char will be signed
or unsigned.
Default: -qchars=unsigned
-qenum=<suboption>
Specifies the amount of storage occupied by
enumerations, where <suboption> can be:
small
Specifies that enumerations occupy the
smallest amount of space (1, 2, 4, or 8 bytes)
that can accurately represent the range of
values in the enumeration. Signage is
unsigned, unless the range of values includes
negative values.
int
Specifies that enumerations occupy 4 bytes and
are represented by int.
intlong
Specifies that enumerations occupy 8 bytes of
storage if the range of values in the
enumeration exceeds the limit for int.
Otherwise, the enumerations occupy 4 bytes of
storage and are represented by int.
1
Specifies that enumerations occupy 1 byte.
Type is signed or unsigned char.
2
Specifies that enumerations occupy 2 bytes.
Type is signed or unsigned short.
4
Specifies that enumerations occupy 4 bytes.
Type is signed or unsigned int.
8
Specifies that enumerations occupy 8 bytes.
Type is signed or unsigned long long in 32-bit
mode, and signed or unsigned long in 64-bit
mode.
Default: -qenum=intlong
-qfloat=<suboptions_list>
Specifies various floating-point suboptions. This
provides different strategies for speeding up or
improving the accuracy of floating-point
calculations. <suboptions_list> is a colon-
separated list of one or more of the following:
dfpemulate | nodfpemulate
Specifies whether decimal floating-point
computations are implemented in hardware
instructions or emulated in software by calls
to library functions.
-qdfp must be enabled for either suboption to
have any effect. nodfpemulate is only valid on
a system that supports decimal floating-point
instructions; that is, on AIX 5.3 and higher,
and with -qarch=pwr6 in effect. dfpemulate is
required for all other -qarch values.
Default: dfpemulate
fenv | nofenv
Specifies whether the code depends on the
hardware environment and whether to suppress
optimizations that could cause unexpected
results due to this dependency.
When nofenv is in effect, the compiler assumes
that the program does not depend on the
hardware environment, and that aggressive
compiler optimizations that change the
sequence of floating-point operations are
allowed to be performed. When fenv is in
effect, such optimizations are suppressed.
Default: nofenv
fltint | nofltint
Speeds up floating-point-to-integer
conversions by using faster inline code that
does not check for overflows. -qfloat=nofltint
checks floating-point-to-integer conversions
for out-of-range values.
Default:
o nofltint at -O2 optimization.
o fltint when -qnostrict or -O3 or higher
optimization level is in effect.
fold | nofold
Specifies that constant floating-point
expressions are to be evaluated at compile
time rather than at run time.
Default: fold
hscmplx | nohscmplx
Speeds up operations involving complex
division and complex absolute value. This
suboption, which provides a subset of the
optimizations of the hsflt suboption, is
preferred for complex calculations.
Default: nohscmplx
hsflt | nohsflt
The hsflt option speeds up calculations by
truncating instead of rounding computed values
to single precision before storing and on
conversions from floating-point to integer.
The nohsflt suboption specifies that single-
precision expressions are rounded after
expression evaluation and that floating-
point-to-integer conversions are to be checked
for out-of-range values.
Default: nohsflt
hssngl | nohssngl
The hssngl option specifies that single-
precision expressions are rounded only when
the results are stored into float memory
locations. The nohssngl option specifies that
single-precision expressions are rounded after
expression evaluation. Using hssngl can
improve runtime performance and is safer than
using -qfloat=hsflt.
Default: nohssngl
maf | nomaf
Makes floating-point calculations faster and
more accurate by using floating-point
multiply-add instructions where appropriate.
Default: maf
nans | nonans
Generates extra instructions to detect
signalling NaN when converting from single-
precision to double-precision at run time. The
option nonans specifies that this conversion
need not be detected.
Default: nonans
relax | norelax
Relaxes the strict IEEE-conformance slightly
for greater speed, typically by removing some
trivial, floating-point arithmetic operations,
such as adds and subtracts involving a zero on
the right.
Default: norelax
rndsngl | norndsngl
Specifies that the result of each single-
precision (float) operation is to be rounded
to single precision. -qfloat=norndsngl
specifies that rounding to single-precision
happens only after full expressions have been
evaluated.
Default: rndsngl
rngchk | norngchk
Specifying norngchk instructs the compiler to
skip range checking, allowing for increased
performance where division and sqrt operations
are performed repeatedly within a loop.
When rngchk is specified, range checking is
performed for input arguments for software
divide and inlined sqrt operations.
When -qstrict is active, the setting of this
option is forced to -qfloat=rngchk. When
-qnostrict is active, the setting of this
option is -qfloat=norngchk unless the
-qfloat=rngchk option is explicitly set by the
user.
Default: rngchk
rrm | norrm
Prevents floating-point optimizations that are
incompatible with runtime rounding to plus and
minus infinity modes.
Default: norrm
rsqrt | norsqrt
Specifies whether a sequence of code that
involves division by the result of a square
root can be replaced by calculating the
reciprocal of the square root and multiplying.
Allowing this replacement produces code that
runs faster. -qfloat=rsqrt has no effect
unless -qignerrno is also specified.
Default:
o norsqrt at -O2 optimization.
o rsqrt when when -qnostrict or -O3 or
higher optimization level is in effect.
single | nosingle
Allows single-precision arithmetic
instructions to be generated for single-
precision floating-point values. All PowerPC
processors support single-precision
instructions; however, if you wish to preserve
the behavior of applications compiled for
earlier architectures, in which all floating-
point arithmetic was performed in double-
precision and then truncated to single-
precision, you can use
-qfloat=nosingle:norndsngl. This suboption
provides computation precision results
compatible with those provided by the
deprecated options
-qarch=com|pwr|pwrx|pwr2|p2sc|601|602|603.
Default: single
spnans | nospnans
Detects signalling NaN on conversion from
single-precision to double-precision.
Default: nospnans
-qldbl128 | -qnoldbl128
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qlongdouble.
Default: -qnoldbl128
-qlongdouble | -qnolongdouble
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qldbl128.
Default: -qnolongdouble
-qlonglit | -qnolonglit
Makes unsuffixed literals into the long type in
64-bit mode.
Default: -qnolonglit
-y<rounding_mode>
Specifies the compile-time rounding mode of
constant floating-point expressions.
For binary floating-point types, <rounding_mode> is
one of the following:
m = round toward minus infinity
n = round to the nearest representable number, ties
to even
p = round toward plus infinity
z = round toward zero
Default: -yn
For decimal floating-point types, <rounding_mode>
is one of the following:
di = round toward infinities (away from zero)
dm = round toward minus infinity
dn = round to the nearest representable number,
ties to even
dna = round to the nearest representable number,
ties away from zero
dnz = round to the nearest representable number,
ties toward zero
dp = round toward plus infinity
dz = round toward zero
Default: -ydn
Object code control options
-q32, -q64
Selects either 32-bit or 64-bit compilation mode.
Use the -q32 and -q64 options, along with the
-qarch and -qtune compiler options, to optimize the
output of the compiler to the architecture on which
that output will be used.
Default: -q32
-qalloca
(C) Substitutes inline code for calls to function
alloca, as if #pragma alloca directives were in the
source code.
-ma (C) Substitutes inline code for calls to function
alloca.
-qeh[={v5|v6}] | -qnoeh
(C++) Controls whether exception handling is
enabled in the module being compiled.
v5
Instructs the compiler to generate exception-
handling code that is compatible with
VisualAge C++ V5.0.
v6
Instructs the compiler to generate new
exception-handling code, compatible with
VisualAge C++ V6.0, that correctly handles
try-catch blocks nested within other catch
blocks.
Default: -qeh=v6
-qexpfile=<file_name>
Saves the exported symbols in the specified file
and is only used together with the -qmkshrobj
compiler option.
Refer to the -qmkshrobj option for more
information.
-qfuncsect[=[no]implicitstaticref] | -qnofuncsect
Places instructions for each function in a separate
object file control section or csect. -qfuncsect
can take the following suboption:
implicitstaticref | noimplicitstaticref
Specifies whether the compiler generates dummy
references to the static area. Specifying
-qfuncsect with no suboption implies
implicitstaticref. Specifying
noimplicitstaticref removes unnecessary
references to the static data area.
Default: -qnofuncsect
-qinlglue | -qnoinlglue
This option inlines glue code that optimizes
external function calls when compiling at -q64 and
-O2 and higher.
Default: -qnoinlglue
-qkeepinlines | -qnokeepinlines
(C++) Instructs the compiler to keep or discard
definitions for unreferenced extern inline
functions. Discarding these definitions can reduce
the size of the object files. The -qkeepinlines
setting keeps the definitions of unreferenced
extern inline functions.
Default: -qnokeepinlines
-qpic[={small|large}] | -qnopic
Generates position-independent code (pic). Specify
-qpic=small if the global offset table must be 64
Kb or smaller, or -qpic=large if it can be larger
than 64 Kb.
Default: -qpic=small
-qppline | -qnoppline
When used in conjunction with the -E or -P options,
enables or disables the generation of #line
directives in the preprocessed output.
Default:
o -qnoppline with -P
o -qppline with -E
-qpriority=<num>
(C++) Specifies the priority level for the
initialization of static objects, where <num> is
the initialization priority level assigned to the
static objects within a file, or the priority level
of a shared or non-shared file or library.
You can specify a priority level from -(2147483647
+ 1) (highest priority) to +2147483647 (lowest
priority).
Default: -qpriority=0
-qproto | -qnoproto
(C) Assumes that all functions are prototyped.
Asserts that procedure call points agree with their
declarations even if the procedure has not been
prototyped. This allows the caller to pass
floating-point arguments in floating-point
registers instead of general-purpose registers.
Default: -qnoproto
-r Produces a relocatable object. This permits the
output file to be produced even though it contains
unresolved symbols.
-qreserved_reg=<registers_list>
Indicates that the specified register(s) cannot be
used during the compilation, except as a stack
pointer, frame pointer or in a different fixed
role. <registers_list> is a colon-separated list of
registers.
-qro | -qnoro
Specifies the storage type for string literals and
puts string literals in read-only storage.
Default:
o -qnoro with cc and its derivatives.
o -qro otherwise.
-qroconst | -qnoroconst
Specifies the storage location for constant values.
Default:
o -qroconst with xlc, xlc++, xlC, c89 and c99
invocations commands.
o -qnoroconst with cc.
-qroptr | -qnoroptr
Specifies the storage location for constant
pointers.
Default: -qnoroptr
-qrtti=<option> | -qnortti
(C++) Generates runtime type identification (RTTI)
information for the typeid and dynamic_cast
operators. The suboptions are:
all
Generates the information needed for the RTTI
typeid and dynamic_cast operators.
type | typeinfo
Generates the information needed for the RTTI
typeid operator only.
dyna | dynamiccast
Generates the information needed for the RTTI
dynamic_cast operator only.
Default: -qnortti
-s Strips the symbol table, line number information,
and relocation information from the output file.
-qsaveopt | -qnosaveopt
Saves the command-line options used for compiling a
source file, the version and level of each compiler
component invoked during compilation, and other
information to the corresponding object file.
This option must be used with the -c option.
Default: -qnosaveopt
-qstatsym | -qnostatsym
Adds user-defined, non-external names that have a
persistent storage class (such as initialized and
uninitialized static variables) to the name list
(the symbol table of objects).
Default: -qnostatsym
-qtbtable=<suboption>
Generates a traceback table that contains
information about each function, including the type
of function as well as stack frame and register
information. The traceback table is placed in the
text segment at the end of its code. Suboptions
include:
none
No traceback table is generated.
small
A traceback table is generated with no name or
parameter information. This is the default
with optimization if -g is not specified.
full
A full traceback table is generated. This is
the default with -qnoopt or -g specified.
Default:
o -qtbtable=full when compiling non-optimized
(without -O) or for debugging (with -g).
o -qtbtable=small otherwise.
-qthreaded | -qnothreaded
Ensures that all optimizations will be thread-safe
for executing in a multi-threaded environment.
Default:
o -qthreaded when compiling invocation
commands ending in "_r" or "_r7".
o -qnothreaded otherwise.
-qtls[=<model>] | -qnotls
Specifies the thread-local storage model to be used
by the application, where <model> can be:
global-dynamic
This model is the most general, and can be
used for all thread-local variables.
local-dynamic
This model provides better performance than
the global-dynamic model, and can be used for
thread-local variables defined in
dynamically-loaded modules.
initial-exec
This model provides better performance than
the global-dynamic or local-dynamic models,
and can be used for thread-local variables
defined in dynamically-loaded modules,
provided that those modules are loaded at the
same time as the executable.
local-exec
This model provides the best performance of
all of the models, but can only be used when
all thread-local variables are defined and
referenced by the main executable.
Default:
o -qtls=unsupported
o -qtls=initial_exec if the -qnopic compiler
option is enabled.
o -qtls=global_dynamic if the -qpic compiler
option is enabled.
-qunique | -qnounique
(C++) Generates unique names for static
constructor/destructor file compilation units.
Default: -qnounique
-qweakexp | -qnoweakexp
When used with the -qmkshrobj or -G options,
includes or excludes global symbols marked as weak
from the export list generated when you create a
shared object.
Default: -qweakexp
-qweaksymbol | -qnoweaksymbol
Instructs the compiler to generate weak symbols.
Default: -qweaksymbol
-qxcall | -qnoxcall
Generates code to treat static functions within a
compilation unit as if they were external
functions.
Default: -qnoxcall
Error checking and debugging options
-# Traces the compilation and generates information on
the progress of the compilation without invoking
the preprocessor, compiler, or linkage editor.
-qcheck[=<suboptions_list>] | -qnocheck
Generates code that performs certain types of
runtime checking. If a violation is encountered, a
runtime exception is raised by sending a SIGTRAP
signal to the process. <suboptions_list> is a
colon-separated list of one or more of the
following:
all
Enables all suboptions.
bounds | nobounds
Performs runtime checking of addresses when
subscripting within an object of known size.
divzero | nodivzero
Performs runtime checking of integer division.
A trap will occur if an attempt is made to
divide by zero.
nullptr | nonullptr
Performs runtime checking of addresses
contained in pointer variables used to
reference storage.
Default: -qnocheck
-qdbxextra | -qnodbxextra
(C) Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for debugging. Use this option with the -g
option to produce additional debugging information
for use with a debugger.
Default: -qnodbxextra
-qdpcl | -qnodpcl
Generates symbols that can be used by tools based
on the Dynamic Probe Class Library (DPCL) to see
the structure of an executable file.
Default: -qnodpcl
-qextchk | -qnoextchk
Generates bind-time type-checking information and
checks for compile-time consistency.
Default: -qnoextchk
-qflttrap[=<suboptions_list>] | -qnoflttrap
Generates instructions to detect and trap runtime
floating-point exceptions. <suboptions_list> is a
colon-separated list of one or more of the
following suboptions:
enable
Enables trapping of the specified exceptions.
imprecise
Only checks for the specified exceptions on
subprogram entry and exit.
inexact
Detects floating-point inexact exceptions.
invalid
Detects floating-point invalid operation
exceptions.
nanq
Generates code to detect and trap NaNQ (Not a
Number Quiet) exceptions handled or generated
by floating-point operations.
overflow
Detects floating-point overflow.
underflow
Detects floating-point underflow.
zerodivide
Detects floating-point division by zero.
Default: -qnoflttrap
-qformat=<options_list> | -qnoformat
Warns of possible problems with string input and
output format specifications. Functions diagnosed
are printf, scanf, strftime, strfmon family
functions and functions marked with format
attributes. <options_list> is a comma-separated
list of one or more of the following suboptions:
all | noall
Turns on all format diagnostic messages.
exarg | noexarg
Warns if excess arguments appear in printf and
scanf style function calls.
nlt | nonlt
Warns if a format string is not a string
literal, unless the format function takes its
format arguments as a va_list.
sec | nosec
Warns of possible security problems in use of
format functions.
y2k | noy2k
Warns of strftime formats that produce a 2-
digit year.
zln | nozln
Warns of zero-length formats.
Default:
o -qnoformat, which is equivalent to
-qformat=noall.
o -qformat=all if -qformat is specified
without any suboptions.
-qfullpath | -qnofullpath
Records the full or absolute path names of source
and include files in object files compiled with
debugging information (when you use the -g option).
Default: -qnofullpath
-g Generates debug information for debugging tools.
-qdbg is the long form of -g.
-g implies the -Q! option.
-qhalt=<sev>
Stops the compiler after the first phase if the
severity level of errors detected equals or exceeds
the specified level, <sev>. The severity levels in
increasing order of severity are:
i = informational messages
w = warning messages
e = error messages (C only)
s = severe error messages
Default: -qhalt=s
-qhaltonmsg=<msgnum_list>
(C++) Stops the compiler after the compilation
phase where it encounters the specified message
number(s), where <msgnum_list> is a comma-separated
list of message numbers.
-qheapdebug | -qnoheapdebug
Enables debug versions of memory management
functions.
Default: -qnoheapdebug
-qinfo[=[<suboption>][<groups_list>]] | -qnoinfo
Produces or suppresses informational messages.
<groups_list> is a colon-separated list. If a
<groups_list> is specified along with a
<suboption>, a colon must separate them. The
suboptions are:
all
Enables all diagnostic messages for all
groups.
noall
Disables all diagnostic messages for all
groups.
private
Lists shared variables that are made private
to a parallel loop.
reduction
Lists variables that are recognized as
reduction variables inside a parallel loop.
<groups_list> turns on or off specific groups of
messages and is a colon-separated list of one or
more of the following:
c99 | noc99
(C) C code that might behave differently
between C89 and C99 language levels
cls | nocls
C++ classes
cmp | nocmp
Possible redundancies in unsigned comparisons
cnd | nocnd
Possible redundancies or problems in
conditional expressions
cns | nocns
Operations involving constants
cnv | nocnv
Conversions
dcl | nodcl
Consistency of declarations
eff | noeff
Statements and pragmas with no effect
enu | noenu
Consistency of enum variables
ext | noext
Unused external definitions
gen | nogen
General diagnostic messages
gnr | nognr
Generation of temporary variables
got | nogot
Use of goto statements
ini | noini
Possible problems with initialization
lan | nolan
Language level effects
obs | noobs
Obsolete features
ord | noord
Unspecified order of evaluation
par | nopar
Unused parameters
por | nopor
Non-portable language constructs
ppc | noppc
Possible problems with using the preprocessor
ppt | noppt
Trace of preprocessor actions
pro | nopro
Missing function prototypes
rea | norea
Code that cannot be reached
ret | noret
Consistency of return statements
trd | notrd
Possible truncation or loss of data or
precision
tru | notru
Variable names truncated by the compiler
trx | notrx
Rounding of hexadecimal floating-point
constants
uni | nouni
Uninitialized variables
upg | noupg
Upgrade issues from one release to the next
release
use | nouse
(C++) Unused auto and static variables
vft | novft
(C++) Generation of virtual function tables in
C++ programs
zea | nozea
Zero-extent arrays
Default:
(C) -qnoinfo
(C++) -qinfo=lan:trx
If -qinfo is specified without a suboption, the
default is -qinfo=all for C and -qinfo=all:noppt
for C++.
-qinitauto=<hex_value> | -qnoinitauto
Initializes each byte or word of storage for
automatic variables to the specified hexadecimal
value <hex_value>. This generates extra code and
should only be used for error determination.
Default: -qnoinitauto
-qkeepparm | -qnokeepparm
Ensures that function parameters are stored on the
stack even if the application is optimized. As a
result, parameters remain in the expected memory
location, providing access to the values of these
incoming parameters to tools such as debuggers.
Default: -qnokeepparm
-qlinedebug | -qnolinedebug
Generates only abbreviated line number and source
file name information for the debugger.
Default: -qnolinedebug
-qmaxerr=<num>[:<sev>] | -qnomaxerr
Instructs the compiler to halt compilation when the
specified number of errors of the specified
severity (by default, the value of -qhalt) or
greater is reached. <num> must be an integer. The
severity levels, <sev>, are:
i = informational
w = warning
e = error (C only)
s = severe error
Default: -qnomaxerr
-qoptdebug | -qnooptdebug
When used with high levels of optimization,
-qoptdebug produces source files containing
optimized pseudocode that can be read by a
debugger.
An output file with a .optdbg extension is created
for each input file compiled with -qoptdebug. You
can use the information contained in this file to
help you understand how your code actually behaves
under optimization.
Default: -qnooptdebug
-qsymtab={unref|static}
(C) Determines what types of information appear in
the symbol table. The suboptions are:
unref
Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for processing by the debugger.
static
Adds user-defined, non-external names that
have a persistent storage class (such as
initialized and uninitialized static
variables) to the name list.
Default:
The default is to not add static variables to
the symbol table.
-qsyntaxonly
(C) Performs syntax checking without generating an
object file.
Default:
By default, source files are compiled and
linked to generate an executable file.
-qwarn64 | -qnowarn64
Enables checking for possible data conversion
problems between 32-bit and 64-bit compiler modes.
Default: -qnowarn64
Listing and messages options
-qattr[=full] | -qnoattr
Produces a compiler listing that includes an
attribute listing for all identifiers. If -qattr is
specified, the listing contains only those
identifiers that are used. If -qattr=full is
specified, the listing contains all names. If
-qnoattr is specified, no listing is produced.
Default: -qnoattr
-qdump_class_hierarchy
(C++) For each class object, this option dumps a
representation of its hierarchy and virtual
function table layout to a file. The file name is
created by appending ".class" to the source file
name.
-qflag=<listing_severity>:<terminal_severity>
Defines the minimum severity level of diagnostic
messages to be written to the listing file and to
the user terminal. <listing_severity> is the
minimum level for the listing file, and
<terminal_severity> is the minimum level for the
terminal. The message severity levels are:
i = informational messages
w = warning messages
e = error, severe error and unrecoverable error
messages (C only)
s = severe error and unrecoverable error messages
(C)
s = severe error messages (C++)
Default: -qflag=i:i
-qlist[={offset|nooffset}] | -qnolist
Produces a compiler listing that includes an object
listing. You can use the object listing to help
understand the performance characteristics of the
generated code and to diagnose execution problems.
offset | nooffset
Changes the offset of the PDEF header from
00000 to the offset of the start of the text
area.
Specifying -qlist without the suboption is
equivalent to list=nooffset.
Default: -qnolist
-qlistopt | -qnolistopt
Produces a compiler listing that displays all the
options that were in effect when the compiler was
invoked.
Default: -qnolistopt
-qphsinfo | -qnophsinfo
Reports the time taken in each compilation phase.
Phase information is sent to standard output. The
output takes the form <number1>/<number2> for each
phase where <number1> represents the CPU time used
by the compiler and <number2> represents the total
of the compiler time and the time that the CPU
spends handling system calls.
Default: -qnophsinfo
-qprint | -qnoprint
Enables or suppresses listings. Specifying
-qnoprint overrides all listing-producing options,
regardless of where they are specified, to suppress
listings.
Default: -qprint
-qreport | -qnoreport
Instructs the compiler to produce transformation
reports that show how program loops are optimized.
The transformation reports are included as part of
the compiler listing. This option requires -qhot or
-qsmp in order to have effect.
When used with -qipa=clonearch, -qreport produces
transformation reports on the procedures that are
cloned for the architectures specified by the
option.
Default: -qnoreport
-qshowinc[=<types_list>] | -qnoshowinc
Used with -qsource to selectively show user header
files (includes using " ") or system header files
(includes using < >) in the program source listing.
<types_list> is a colon-separated list of one or
more of the following types:
usr | nousr
Specifies whether to show user include files.
sys | nosys
Specifies whether to show system include
files.
all
Shows both user and system include files.
Default: -qnoshowinc
-qsource | -qnosource
Produces a compiler listing that includes source
code.
Default: -qnosource
-qsrcmsg | -qnosrcmsg
(C) Adds the corresponding source code lines to the
diagnostic messages in the stderr file.
Default: -qnosrcmsg
-qsuppress=<msg_id> | -qnosuppress=[<msg_id>]
Prevents the specified compiler or driver
informational or warning messages from being
displayed or added to the listings, where <msg_id>
is a colon-separated list of message numbers to
suppress or display.
NOTE: In (C++), -qnosuppress requires that you
supply message number(s), and in (C), -qnosuppress
does not allow you to supply any.
Default: -qnosuppress
-v Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a comma-separated list.
-V Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a space-separated list.
-qversion[=verbose]
Displays the official compiler product name and the
compiler version found on the system.
verbose
Additionally displays information about the
version, release, and level of each compiler
component installed.
-w Suppresses informational, language-level and
warning messages.
Specifying this option is equivalent to specifying
-qflag=e:e in C or -qflag=s:s in C++.
-qxref[=full] | -qnoxref
Specifies whether to produce a compiler listing
that includes a cross-reference listing of all
identifiers. Specifying -qxref will report only
identifiers that are used, -qxref=full reports all
identifiers in the program, and -qnoxref does not
report any identifiers in the program. The
-qnoprint option overrides this option.
Default: -qnoxref
Optimization and tuning options
-qaggrcopy={overlap|nooverlap}
Enables destructive copy operations for structures
and unions.
overlap | nooverlap
Enables or disables optimizations for
structure and union assignments. nooverlap
assumes that the source and destination for
structure and union assignments do not
overlap, allowing the compiler to generate
faster code. overlap inhibits these
optimizations.
Default: -qaggrcopy=nooverlap
-qalias=<suboptions_list>
Specifies the aliasing assertions to be applied to
your compilation unit. <suboptions_list> is a
colon-separated list of the following options:
addrtaken | noaddrtaken
Variables are disjoint from pointers unless
their address is taken.
allptrs | noallptrs
Pointers are never aliased if allptrs is
specified, but may be aliased if noallptrs is
specified. -qalias=allptrs implies
-qalias=typeptr.
ansi | noansi
If ansi is specified, type-based aliasing is
used during optimization, which restricts the
lvalues that can be safely used to access a
data object. This option has no effect unless
you also specify the -O option.
Specifying -qalias=noansi turns off type-based
aliasing completely.
global | noglobal
When global is in effect, type-based aliasing
rules are enabled during IPA link-time
optimization across compilation units. Both
-qipa and -qalias=ansi must be enabled for
-qalias=global to have an effect.
Specifying noglobal disables type-based
aliasing rules across compilation units.
restrict | norestrict
When restrict is in effect, optimizations for
pointers qualified with the restrict keyword
are enabled. Specifying norestrict disables
optimizations for restrict-qualified pointers.
-qalias=restrict is independent from other
-qalias suboptions.
typeptr | notypeptr
Pointers to different types are never aliased
if typeptr is specified, but may be aliased if
notypeptr is specified.
Default:
(C++)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
(C)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
for all invocation commands except cc.
-qalias=noaddrtaken:noallptrs:noansi:global:restrict:notypeptr
for the cc invocation command.
-qarch=<suboption>
Specifies the general processor architecture for
which the code (instructions) should be generated.
In general, the -qarch option allows you to target
a specific architecture for the compilation. For
any given -qarch setting, the compiler defaults to
a specific, matching -qtune setting, which can
provide additional performance improvements. The
suboptions are:
auto
Automatically detects the specific
architecture of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
403
Produces object code containing instructions
that will run on the PowerPC 403 hardware
platform.
604
Produces an object that contains instructions
that run on PowerPC 604 systems.
pwr3
Produces an object that contains instructions
that run on the POWER3 hardware platforms.
pwr4
Produces an object that contains instructions
that run on the POWER4 hardware platforms.
pwr5
Produces an object that contains instructions
that run on the POWER5 hardware platforms.
pwr5x
Produces an object that contains instructions
that run on the POWER5+ hardware platforms.
pwr6
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 architected mode. If you
would like support for decimal floating-point
instructions, be sure to specify this
suboption during compilation.
pwr6e
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 raw mode.
ppc
Produces an object that contains instructions
that run on any of the 32-bit PowerPC hardware
platforms. Using -q64 with ppc upgrades the
architecture to ppc64.
ppc64
Produces object code that will run on any 64-
bit PowerPC hardware platform. When compiled
in 32-bit mode, the resulting object code may
include instructions that are not recognized
or behave differently when run on 32-bit
PowerPC platforms.
ppcgr
In 32-bit mode, produces object code
containing optional graphics instructions for
PowerPC hardware platforms.
In 64-bit mode, produces object code
containing optional graphics instructions that
will run on 64-bit PowerPC platforms, but not
on 32-bit-only platforms. Using -q64 with
ppcgr upgrades the architecture to ppc64gr.
ppc64gr
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics instructions.
ppc64grsq
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics and square root
instructions.
ppc64v
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional vector instructions, such as a
PowerPC 970.
ppc970
Generates instructions specific to PowerPC 970
processors.
rs64a
Produces an object that contains instructions
that run on an RS64I hardware platform.
rs64b
Produces an object that contains instructions
that run on an RS64II hardware platform.
rs64c
Produces an object that contains instructions
that run on an RS64III hardware platform.
Default: -qarch=ppc
-qcache=<suboptions_list>
Describes the cache configuration for a specific
target execution machine, where <suboptions_list>
is a colon-separated list of one or more of the
following suboptions:
assoc=<number>
Specifies the set associativity of the cache,
where <number> is one of the following:
0 Direct-mapped cache
1 Fully associative cache
(number > 1) n-way set associative cache
auto
Automatically detects the specific cache
configuration of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
cost=<cycles>
Specifies the performance penalty, in CPU
cycles, resulting from a cache miss.
level=<level>
Specifies which level of cache is affected,
where level is one of the following::
1 Basic cache
2 Level-2 cache
3 Table Lookaside Buffer (TLB)
If a machine has more than one level of cache,
use a separate -qcache option.
line=<bytes>
Specifies the line size of the cache.
size=<Kbytes>
Specifies the total size of the cache.
type=<cache_type>
The settings apply to the specified type of
cache, where <cache_type> is one of the
following:
C or c = Combined data and instruction
cache
D or d = Data cache
I or i = Instruction cache
Default:
The -qtune setting determines the optimal
default -qcache settings for most typical
compilations. -O4, -O5, or -qipa must be
specified with the -qcache option.
-qcompact | -qnocompact
Reduces code size where possible, at the expense of
execution speed. Code size is reduced by inhibiting
optimizations that replicate or expand code inline.
This option takes effect only if -O2 or higher is
also used.
Default: -qnocompact
-qdataimported[=<variable_names>]
Specifies variables that the compiler can assume
are imported. <variable_names> is a colon-separated
list of variables. Specifying -qdataimported
without <variable_names> instructs the compiler to
assume that all variables are imported. This is
equivalent to specifying -qnotocdata.
(C++) Variable names must be specified using their
mangled names.
-qdatalocal[=<variable_names>]
Specifies variables that the compiler can assume
are local. <variable_names> is a colon-separated
list of variables. Specifying -qdatalocal with no
variables instructs the compiler to assume that all
variables are local. This is equivalent to
specifying -qtocdata.
(C++) Variable names must be specified using their
mangled names.
-qtocdata | -qnotocdata
Marks all data as local.
Default: -qnotocdata (marks all data as imported)
-qdirectstorage | -qnodirectstorage
Informs the compiler that write-through-enabled or
cache-inhibited storage may be referenced.
Default: -qnodirectstorage
-qenablevmx | -qnoenablevmx
Enables the generation of vector instructions for
processors that support them. These instructions
can offer higher performance when used with
algorithmic-intensive tasks such as multimedia
applications.
For -qenablevmx to have effect, the architecture
specified by the -qarch option must support vector
instructions.
If -qnoenablevmx is in effect, -qaltivec,
-qvecnvol, and -qhot=simd cannot be used.
Default: -qnoenablevmx
-qfdpr | -qnofdpr
Collects information about programs for use with
the IBM Feedback Directed Program Restructuring
(FDPR) performance-tuning utility.
Default: -qnofdpr
-qhot[=<suboption>] | -qnohot
Specifies whether or not to perform high-order
transformations during optimization. The suboptions
are:
arraypad[=<number>] | noarraypad
When <number> is specified, the compiler will
pad every array in the code. The pad amount
must be a positive integer value. Otherwise,
the compiler will pad any arrays where it
infers that there may be a benefit.
level={0|1}
Specifies the level of high-order
transformation to perform during compilation.
0
The compiler performs a subset of the
high-order transformations. Some of these
include early distribution, loop
interchange, and loop tiling, as
examples. Optimization level -O3 implies
-qhot=level=0.
1
At level=1, full high-order
transformation is performed.
-qhot=level=1 is equivalent to -qhot and
the compiler options that imply -qhot
also imply -qhot=level=1, unless
-qhot=level=0 is explicitly specified.
simd | nosimd
Converts certain operations in a loop that
apply to successive elements of an array into
a vector instruction. This call calculates
several results at one time, which is faster
than calculating each result sequentially. If
you specify -qhot=nosimd, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with vector
instructions. To enable -qhot=simd, you must
specify an architecture that supports vector
instructions.
vector | novector
When specified with -qnostrict and -qignerrno,
or an optimization level of -O3 or higher
(otherwise -qhot=vector has no effect), the
compiler converts certain operations in a loop
that apply to successive elements of an array
into a call to a routine in the Mathematical
Acceleration Subsystem (MASS) library, part of
the libxlopt.a library.
If you specify -qhot=novector, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with calls
to vector library routines.
Specifying -qhot without suboptions implies
-qhot=nosimd, -qhot=noarraypad, -qhot=vector and
-qhot=level=1. The -qhot option is also implied by
-qsmp, -O4, and -O5.
Default: -qnohot
-qignerrno | -qnoignerrno
Allows the compiler to perform optimizations that
assume errno is not modified by system calls.
Default: -qnoignerrno
-qipa[=<suboptions_list>] | -qnoipa
Turns on or customizes a class of optimizations
known as interprocedural analysis (IPA).
<suboptions_list> is a colon-separated list of the
following suboptions:
clonearch=<arch_name> | noclonearch
Specifies the architectures for which multiple
versions of the same instruction set are
produced, where <arch_name> is a comma-
separated list of architecture names. Use this
suboption if you require optimal performance
on multiple differing machines running the
same copy of your application.
cloneproc=<function_name> |
nocloneproc=<function_name>
Specifies the name of the functions to clone
for the architectures specified by the
clonearch suboption, where <function_name> is
a comma-separated list of function names.
exits=<procedures>
Specifies names of functions which represent
program exits. <procedures> is a comma-
separated list of procedures.
infrequentlabel=<procedures>
Specifies a comma-separated list of user-
defined labels that are likely to be called
infrequently during a program run.
inline[=<suboption>]
Specifying 'inline' with no suboption asserts
that all appropriate procedures will be
inlined. <suboption> can be one of the
following:
auto|noauto
Enables or disables automatic function
inlining by the high-level optimizer.
When -qipa=inline=auto is in effect, the
compiler considers all functions that are
under the maximum size limit (see below)
for inlining. When -qipa=inline=noauto is
in effect, only procedures listed in the
<procedures> suboption are considered for
inlining.
<procedures>
Specifies a comma-separated list of
procedures to attempt to inline.
limit=<num>
Specifies a limit on the size of a
calling function after inlining. This
only takes effect when inline=auto is on.
If you do not specify a value for <num>,
<num> is 8192 by default.
threshold=<num>
Specifies the upper size limit on
procedures to inline. This only takes
effect when inline=auto is on. If you do
not specify a value for <num>, <num> is
1024 by default.
Default: auto
noinline[=<procedures>]
Specifies a comma-separated list of procedures
which are not to be inlined. Specifying
noinline without <procedures>, asserts that no
procedures are to be inlined.
isolated=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and do not
directly refer to any global variable.
level=<level>
Determines the amount of IPA analysis and
optimization performed, where <level> can be
equal to:
0
Performs only minimal interprocedural
analysis and optimization.
1
Turns on inlining, limited alias
analysis, and limited call-site
tailoring.
2
Full interprocedural data flow and alias
analysis.
Default: 1
list[={<file_name>|short|long}]
Specifies an output listing file name during
the link phase. The default name is "a.lst".
Specifying 'long' or 'short' can be used to
request more or less information in the
listing file to determine which listing
sections will be included.
Default: short
lowfreq=<procedures>
Specifies a comma-separated list of procedures
that are likely to be called infrequently
during the course of a typical program run.
malloc16 | nomalloc16
Informs the compiler that the dynamic memory
allocation routines will return 16-byte
aligned memory addresses. The compiler can
then optimize the code based on that
assertion.
Default: -qipa=malloc16
missing={unknown|safe|isolated|pure}
Specifies the default assumption for
procedures not compiled with -qipa.
unknown
Greatly restricts the amount of
interprocedural optimization for calls to
unknown functions.
safe
Functions which do not indirectly call a
visible (not missing) function either
through direct call or function pointer.
isolated
Functions which do not directly reference
global variables accessible to visible
functions.
pure
Functions which are safe and isolated and
which do not indirectly alter storage
accessible to functions.
Default: missing=unknown
object | noobject
Specifies whether to include standard object
code in the object files. Specifying
'noobject' can substantially reduce overall
compile time by not generating object code
during the first IPA phase.
partition={small|medium|large}
Specifies the size of program sections that
are analyzed together. Larger partitions may
produce better analysis but require more
storage.
Default: partition=medium
pure=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that are
"isolated", "safe", and do not modify any data
objects that are visible to the caller.
safe=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that do not call
any other part of the program.
threads[=<suboption>] | nothreads
Runs portions of the IPA optimization process
during pass 2 in parallel threads, which can
speed up the linking process on multi-
processor systems. <suboption> can be one of
the following:
auto | noauto
When auto is in effect, the compiler
selects a number of threads heuristically
based on machine load. When noauto is in
effect, the compiler spawns one thread
per machine processor.
<number>
Instructs the compiler to use a specific
number of threads. <number> can be any
integer value in the range of 1 to 32767.
However, <number> is effectively limited
to the number of processors available on
your system.
Specifying threads with no suboptions implies
threads=auto.
Default: -qipa=threads
unknown=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and that may
update global variables and dummy arguments
and call other parts of the program compiled
with -qipa.
<file_name>
Specifies the name of a file that contains
suboption information in a special format.
Regular expressions are supported when specifying
procedure names for these suboptions:
cloneproc, nocloneproc, exits, inline, noinline,
isolated, lowfreq, pure, safe, unknown.
(C++) In C++ programs, procedure names must be
given in mangled form.
Default:
-qnoipa
-qipa=inline=auto:level=1:missing=unknown:partition=medium:threads=auto
when -O4 is in effect.
-qipa=inline=auto:level=2:missing=unknown:partition=medium:threads=auto
when -O5 is in effect.
-qipa=inline=auto:level=0:missing=unknown:partition=medium:threads=auto
when -qpdf1 or -qpdf2 is in effect.
-qisolated_call=<procedures>
Informs the compiler that specific functions do not
have or rely on side effects, other than those
implied by their parameters. <procedures> is a
colon-separated list of function names.
-qlargepage | -qnolargepage
Indicates that a program, designed to execute in a
large page memory environment, can take advantage
of large 16 MB pages provided on POWER4 and later
systems.
Default: -qnolargepage
-qlibansi | -qnolibansi
Assumes that all functions with the name of an ANSI
C defined library function are, in fact, the
library functions.
Default: -qnolibansi
-qmaxmem=<size>
Limits the amount of memory used by certain
memory-intensive optimizations to <size> kilobytes.
When <size> is -1, the optimizer will use as much
memory as needed.
Default:
o -qmaxmem=8192 when -O2 level optimization is
set.
o -qmaxmem=-1 when -O3 level or greater
optimization is set.
-qminimaltoc | -qnominimaltoc
Avoids Table of Contents (TOC) overflow conditions
by placing TOC entries into a separate data section
for each object file. By default, the compiler will
allocate at least one TOC entry for each unique
non-automatic variable reference in your program.
Default: -qnominimaltoc
-O[<level>]
Optimizes code at a choice of levels during
compilation. This is equivalent to
-qoptimize[=<level>]. <level> can be:
0
Performs only quick local optimizations such
as constant folding and elimination of local
common subexpressions.
2
Performs optimizations that the compiler
developers considered the best combination for
compilation speed and runtime performance. The
optimizations may change from product release
to release.
3
Performs some memory and compile-time
intensive optimizations in addition to those
executed with -O2. The -O3 specific
optimizations have the potential to alter the
semantics of a program. The compiler guards
against these optimizations at -O2 and the
option -qstrict is provided at -O3 to turn off
these aggressive optimizations. Specifying -O3
implies -qhot=level=0.
4
This option is the same as -O3, but also:
o sets the -qarch and -qtune options to the
architecture of the compiling machine.
o sets the -qcache option most appropriate
to the characteristics of the compiling
machine.
5
Equivalent to -O4 -qipa=level=2.
Specifying -O with no <level> is equivalent to
specifying -O2.
Default: -O0
-qoptimize[=<level>] | -qnooptimize
The long form of the -O option. -qoptimize=<level>
is equivalent to -O<level>. See the -O option.
Default: -qnooptimize
-p, -pg, -qprofile={-p|-pg}
Sets up the object files produced by the compiler
for profiling.
-pg is like -p, but it produces more extensive
statistics.
-qpdf1[=pdfname=<file_path] | -qnopdf1
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf1 produces an object that is instrumented to
collect runtime execution information. This is
phase 1 of the profile-directed feedback
optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf1
-qpdf2[=pdfname=<file_path>] | -qnopdf2
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf2 tunes application performance using the data
generated by running a program compiled with
-qpdf1. This is phase 2 of the profile-directed
feedback optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf2
-qprefetch | -qnoprefetch
Enables generation of prefetching instructions such
as dcbt and dcbz in compiled code.
Default: -qprefetch
-qprocimported[=<procedures>] | -qnoprocimported
Specifies functions that the compiler can assume
are imported. Imported functions are dynamically
bound with a shared portion of a library. Code
generated for calls to functions marked as imported
may be larger, but is faster than the default code
sequence generated for functions marked as unknown.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qproclocal[=<procedures>] | -qnoproclocal
Specifies functions that the compiler can assume
are local. Local functions are statically bound
with the functions that call them; smaller, faster
code is generated for calls to such functions.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qprocunknown[=<procedures>] | -qnoprocunknown
Specifies functions that the compiler can assume
are unknown. Unknown functions are resolved to
either statically or dynamically bound objects
during linking. <procedures> is a colon-separated
list of function identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-Q[<suboption>]
(C++) Instructs the compiler to try to inline
functions. Inlining is performed if possible but,
depending on which optimizations are performed,
some functions might not be inlined.
(C) Specifies which specific functions the compiler
should attempt to inline. You must specify at least
an optimization level of -O2 for inlining to take
effect with -Q. To turn on inline expansion for
calls to procedures in different scopes, you must
also use the -qipa=inline.
(C++) In the C++ language, this option can take the
form:
-Q
Compiler inlines all functions that it can.
-Q!
Compiler does not inline any functions.
(C) In the C language, this option can take the
form:
-Q
Attempts to inline all appropriate functions
with 20 executable source statements or fewer,
subject to the setting of any of the
suboptions to the -Q option. If -Q is
specified last, all functions are inlined.
-Q!
Does not inline any functions. If -Q! is
specified last, no functions are inlined.
-Q-<names>
Does not inline functions listed in <names>,
where <names> is a colon-separated list. All
other appropriate functions are inlined. The
option implies -Q.
-Q+<names>
Attempts to inline the functions listed in
<names>, where <names> is a colon-separated
list. All other appropriate functions are
inlined.
-Q=<threshold>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <threshold> for
the function to be inlined.
Default: -Q!
-qinline[<suboption>] | -qnoinline
Specifies whether to attempt to inline functions
instead of generating calls to a function.
(C++) In C++, you cannot specify any suboptions.
-qinline specifies that all appropriate functions
should be inlined, and -qnoinline specifies that no
functions should be inlined.
(C) In C, this option can take the following forms:
-qinline
The compiler attempts to inline all
appropriate functions with 20 executable
source statements or fewer, subject to any
other settings of the suboptions to the
-qinline option.
-qinline+<procedures>
Attempts to inline the functions listed in
<procedures> and any other appropriate
functions, where <procedures> is a colon-
separated list.
-qinline-<procedures>
Specifies that functions listed in
<procedures> do not get inlined, where
<procedures> is a colon-separated list.
-qnoinline
Does not inline any functions.
-qinline=threshold=<num>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <num> for the
function to be inlined. <num> must be a
positive integer.
Default:
The default is to treat inline specifications
as a hint to the compiler, and the result
depends on other options that you select. If
you specify the -g option (to generate debug
information), inlining may be affected.
-qshowpdf | -qnoshowpdf
Used with -qpdf1 and a minimum optimization level
of -O2 to add additional call and block count
profiling information to an executable.
Default: -qnoshowpdf
-qsmallstack | -qnosmallstack
Reduces the size of the stack frame. This option is
only valid when used together with IPA (-qipa, -O4,
-O5 compiler options).
Default: -qnosmallstack
-qsmp[=<suboptions_list>] | -qnosmp
Enables parallelization of program code.
<suboptions_list> is a colon-separated list of one
or more of the following suboptions:
auto | noauto
Enables automatic parallelization and
optimization. If noauto is specified,
automatic parallelization of program code is
disabled; only program code explicitly
parallelized with OpenMP directives is
optimized.
Default: auto
nested_par | nonested_par
If nested_par is specified, prescriptive
nested parallel constructs are parallelized by
the compiler.
Default: nonested_par
omp | noomp
Enables strict OpenMP compliance. Only OpenMP
parallelization pragmas are recognized.
Default: noomp
opt | noopt
Enables automatic parallelization but disables
optimization of parallelized program code. If
noopt is specified, optimization of
parallelized program code is disabled.
Default: opt
rec_locks | norec_locks
Specifies whether to use recursive locks.
Default: norec_locks
schedule=<type>
Specifies what kinds of scheduling algorithms
and chunking are used for loops to which no
other scheduling algorithm has been explicitly
assigned in the source code. <type> can be:
o affinity[=<num>]
o dynamic[=<num>]
o guided[=<num>]
o runtime
o static[=<num>],
where <num> is the number of loop iterations.
Default: schedule=runtime
stackcheck | nostackcheck
Causes the compiler to check for stack
overflow by slave threads at run time, and
issue a warning if the remaining stack size is
less than the number of bytes specified by the
stackcheck option of the XLSMPOPTS environment
variable. This suboption is intended for
debugging purposes, and only takes effect when
XLSMPOPTS=stackcheck is also set.
Default: nostackcheck
threshold[=<num>]
When -qsmp=auto is in effect, controls the
amount of automatic loop parallelization that
occurs. The value of <num> represents the
lower limit allowed for parallelization of a
loop, based on the level of "work" present in
a loop.
Default:
<num> must be a positive integer of 0 or
greater. If you specify threshold with no
suboption, the program uses a default value
of 100.
Specifying -qsmp without suboptions is equivalent
to
-qsmp=auto:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100
or
-qsmp=opt:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100.
Default: -qnosmp
-qspeculateabsolutes | -qnospeculateabsolutes
Works with the -qtocmerge -bl:file for non-IPA
links and with the -bl:file for IPA links to
disable speculation at absolute addresses.
The bl:file is necessary for the compiler to know
which addresses are absolutes.
Default: -qspeculateabsolutes
-qstrict | -qnostrict
Turns off aggressive optimizations which have the
potential to alter the semantics of your program.
-qstrict sets -qfloat=nofltint:norsqrt. -qnostrict
sets -qfloat=rsqrt. This option is only valid with
-O2 or higher optimization levels.
Default:
o -qnostrict at -O3 or higher.
o -qstrict otherwise.
-qstrict_induction | -qnostrict_induction
Turns off loop induction variable optimizations
that have the potential to alter the semantics of
your program.
Default:
o -qnostrict_induction at -O2 or higher.
o -qstrict_induction otherwise.
-qtocmerge | -qnotocmerge
Enables TOC merging to reduce TOC pointer loads and
improves the scheduling of external loads. Reads
from the file specified in -bImportfile linker
option and merges the address information to access
ranges of external addresses using a single table
of contents entry.
Default: -qnotocmerge
-qtune=<suboption>
Specifies the architecture system for which the
executable program is optimized.
<suboption> must be one of the following:
403
Generates object code optimized for all the
PowerPC 403 processors.
604
Generates object code optimized for all the
PowerPC 604 processors.
auto
Generates object code optimized for the
hardware platform on which the program is
compiled.
balanced
Optimizations are tuned across a selected
range of recent hardware.
ppc970
Generates instructions specific to PowerPC 970
hardware platforms.
pwr3
Generates object code optimized for the POWER3
hardware platforms.
pwr4
Generates object code optimized for the POWER4
hardware platforms.
pwr5
Generates object code optimized for the POWER5
hardware platforms.
pwr6
Generates object code optimized for the POWER6
hardware platforms.
rs64a
Generates object code optimized for the RS64I
processor.
rs64b
Generates object code optimized for the RS64II
processor.
rs64c
Generates object code optimized for the
RS64III processor.
Default:
-qtune=balanced when the default -qarch
setting is in effect. Otherwise, the default
depends on the effective -qarch setting.
-qunroll[=<suboption>] | -qnounroll
Unrolls inner loops in the program. This can help
improve program performance. The suboptions are:
auto
Instructs the compiler to perform basic loop
unrolling.
yes
Instructs the compiler to search for more
opportunities for loop unrolling than that
performed with auto. In general, this
suboption is more likely to increase compile
time or program size than auto processing, but
it may also improve your application's
performance.
no
Instructs the compiler to not unroll loops.
Default: -qunroll=auto
If -qunroll is specified with no suboptions, the
compiler assumes -qunroll=yes. -qnounroll is
equivalent to -qunroll=no.
-qunwind | -qnounwind
Informs the compiler that the stack can be unwound
while a routine in the compilation is active.
Specifying -qnounwind can improve the optimization
of non-volatile register saves and restores.
Default: -qunwind
Linking options
-b{dynamic|shared|static}
Controls how shared objects are processed by the
linkage editor. The suboptions are:
dynamic, shared
Causes the linker to process subsequent shared
objects in dynamic mode. In dynamic mode,
shared objects are not statically included in
the output file. Instead, the shared objects
are listed in the loader section of the output
file.
-bdynamic and -bshared are synonymous.
static
Causes the linker to process subsequent shared
objects in static mode. In static mode, shared
objects are statically linked in the output
file.
Default: -bshared
-bmaxdata:<bytes>
Specifies the maximum amount of space to reserve
for the program data segment for programs where the
size of these regions is a constraint. Combined
data space is slightly less than 256MB, or lower,
depending on the limits for the user ID.
Default: -bmaxdata:0
-brtl Controls runtime linking for the output file.
-qcrt | -qnocrt
Instructs the linker to use the standard system
startup files at link time.
Default: -qcrt
-e <name>
Sets the entry name for a shared executable and is
only used together with -qmkshrobj.
-f<file_name>
Names a file to store a list of object files for
the compiler to pass to the linker. The <file_name>
file should contain only the names of object files.
There should be one object file per line.
-L<dir>
Searches the path directory for library files
specified by the -l<key> option.
Default:
The default is to search only the standard
directories.
-l<key>
Searches the file lib<key>.so and then lib<key>.a
for dynamic linking, or only lib<key>.a for static
linking.
Default:
The default is to search only some of the
compiler runtime libraries.
-qlib | -qnolib
Specifies whether the compiler should use the
standard system libraries at link time. -qnolib is
similar to the gcc option nostdlib; the driver will
not pass the standard system startup files or
libraries when linking.
Default: -qlib
-qtwolink | -qnotwolink
(C++) Links twice in order to minimize the number
of static constructors included from libraries and
object files.
Default: -qnotwolink
-Z<prefix>
This linker option specifies a prefix for the
library search path. This is useful when developing
a new version of a library.
Portability and migration options
-qalign=<suboption>
Specifies what aggregate alignment rules the
compiler uses for file compilation, where the
alignment suboptions are:
bit_packed
The compiler uses the bit_packed alignment
rules.
full
The compiler uses the RISC System/6000
alignment rules. This is the same as power.
mac68k
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the twobyte
suboption.
natural
The compiler maps structure members to their
natural boundaries.
packed
The compiler uses the packed alignment rules.
power
The compiler uses the RISC System/6000
alignment rules.
twobyte
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the mac68k
suboption.
Default: -qalign=full
-qalignrulefor=power=[no]typedefrespectsrule
(C++) When used with -qalign=power, determines
whether a 4-byte alignment ceiling is applied to
non-first members of structures that are of type
typedef to array of element type that exceeds the
alignment ceiling.
typedefrespectsrule | notypedefrespectsrule
When typedefrespectsrule is in effect, the
member follows the normal alignment rules for
-qalign=power. This suboption provides
compatibility with code compiled with
-qalign=power with XL C++ V6.0 and earlier.
When notypedefrespectsrule is in effect, a
member that exceeds the alignment ceiling of 4
bytes is aligned on 4-byte boundaries. This
suboption provides compatibility with code
compiled with -qalign=power with XL C++ V7.0
and V8.0.
Default: -qalignrulefor=power=typedefrespectsrule
-qgenproto[=parmnames] | -qnogenproto
(C) Generates ANSI prototypes from K&R function
definitions and displays them on standard output.
Specifying -qgenproto without '=parmnames' will
cause prototypes to be generated without parameter
names.
Default: -qnogenproto
-qnamemangling=<scheme>
(C++) Chooses the name mangling scheme for external
symbol names generated from C++ source code. The
<scheme> can be:
ansi
Fully supports the most recent language
features of Standard C++.
v9
Compatible with XL C++ V9.0.
v8
Compatible with XL C++ V8.0.
v7
Compatible with XL C++ V7.0.
v6
Compatible with VisualAge C++ V6.0.
v5
The scheme for VisualAge C++ V5.0.
v4
The scheme for VisualAge C++ V4.0.
v3
The scheme for VisualAge C++ releases before
V4.0.
compat
Same as v3.
Default: -qnamemangling=ansi
-qobjmodel={classic|ibm}
(C++) Specifies the object model.
classic
This object model is compatible with version
3.6 of the IBM C and C++ compilers.
ibm
Uses the object model introduced with version
5.0 of VisualAge C++ for AIX. Objects compiled
with this object model will use less memory
and have better performance for deep
inheritance with virtual bases.
Default: -qobjmodel=classic
-qoldpassbyvalue | -qnooldpassbyvalue
(C++) Specifies how classes containing const or
reference members are passed in function arguments.
All classes in the compilation unit are affected by
this option. When -qoldpassbyvalue is specified,
the compiler mimics the IBM C/C++ compilers v3.6
compiler in that when a class containing a const or
reference member is passed as a function argument,
it is not passed by value. All such classes in the
compilation unit are affected.
Default: -qnooldpassbyvalue
-qupconv | -qnoupconv
(C) Preserves the unsigned specification when
performing integral promotions.
Default:
o -qupconv when -qlanglvl={extended|classic}.
o -qnoupconv otherwise.
-qvecnvol | -qnovecnvol
Specifies whether to use volatile or non-volatile
vector registers. Volatile vector registers are
registers whose value is not preserved across
function calls or in the context of save, jump or
switch system library functions. If -qnoenablevmx
is enabled, this option is ignored.
Default: -qnovecnvol
Compiler customization options
-qasm_as=<asm_path> [<flags_list>]
Specifies the path and flags used to invoke the
assembler in order to handle assembler code in an
asm statement. <asm_path> is the full path to the
assembler to be used, and <flags_list> is a series
of one or more flags (and their arguments),
separated by spaces. Single quotes (or double
quotes) are required around the string of arguments
if any spaces exist.
-B[<prefix>]
Determines substitute path names for programs used
during compilation, such as the compiler,
assembler, linkage editor, and preprocessor, where
<prefix> can be any program name recognized by the
-t compiler option. The optional <prefix> defines
part of a path name to the new programs. The -t
parameter, <program>, specifies the program to
which the <prefix> is to be appended. When
specifying <prefix>, there must be a slash (/)
after the folder name.
-qc_stdinc=<paths_list>
(C) Changes the standard search location for the XL
C headers. <paths_list> is a colon-separated list
of paths to search.
-qcpp_stdinc=<paths_list>
(C++) Specifies the standard search directories for
the XL C++ headers, where <paths_list> is a colon-
separated list of paths.
-F[<config_file>][:<stanza>]
Names an alternative configuration file (.cfg) for
the compiler. <config_file> is the name of a
compiler configuration file. <stanza> is the name
of the command used to invoke the compiler. This
directs the compiler to use the entries under
<stanza> in the <config_file> to set up the
compiler environment. At least one of the arguments
must be supplied.
-qpath=<program>:<path>
Constructs alternate program names for compiler
components. The program and directory path
specified are used in place of the regular program.
<program> can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-qspill=<size>
Specifies the size of the register allocation spill
area in bytes.
Default: -qspill=512
-t<programs_list>
Applies the prefix from the -B option to the
specified programs in <programs_list>.
<programs_list> is a chain (i.e: -tbcI) of one or
more of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-W<program>,<options_list>
Gives the specified option(s) to the compiler
program, <program>. <options_list> is a comma-
separated list of one or more options. <program>
can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = c++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = linkage helper (C++ only)
p = Preprocessor
SEE ALSO
gxlc(1), gxlc++(1), c++filt(1), CreateExportList(1),
linkxlC(1), makeC++SharedLib(1), vacndi(1), vacppndi(1),
showpdf(1), mergepdf(1), resetpdf(1), cleanpdf(1).
For more information, refer to the following Web sites:
http://www.ibm.com/software/awdtools/xlcpp/library/
http://www.ibm.com/software/awdtools/xlcpp/support/
COPYRIGHT
Licensed Materials - Property of IBM.
IBM XL C/C++ Enterprise Edition for AIX, V9.0.
5724-S71
Copyright IBM Corp. 1991, 2007. All Rights Reserved.
AIX, IBM, POWER3, POWER4, POWER5, POWER5+, POWER6,
PowerPC, PowerPC 604 and SAA are trademarks or registered
trademarks of International Business Machines Corporation
in the United States, other countries, or both.
Windows is a trademarks of Microsoft Corporation in the
United States, other countries, or both.
US Government Users Restricted Rights - Use, duplication
or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
configure:4281: $? = 249
configure:4288: xlC -v >&5
exec: export(export,XL_CONFIG=/etc/vac.cfg.53:xlC,NULL)
exec: less(less,/usr/vacpp/exe/default_msg/vacpp.txt,NULL)
xlc(1) IBM (2007) xlc(1)
NAME
xlc, xlc++, xlC, cc, c89, c99, xlCcore, xlc++core and
related commands - invoke the IBM XL C/C++ compiler.
SYNTAX
<invocation-command> [ <option> | <inputfile> ] ...
DESCRIPTION
The invocation commands compile C and C++ source files.
The commands and their recommended uses are described
below.
Invocations Usage (supported standards)
_________________________________________________________
xlc, xlc_r, xlc_r4, Compile C source files.
xlc_r7, xlc128, xlc128_r, (ANSI C89, ISO C99,
xlc128_r4, xlc128_r7 IBM language extensions)
xlc++, xlc++_r, xlc++_r4, Compile C++ source files.
xlc++_r7, xlc++128,
xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC, xlC_r,
xlC_r4, xlC_r7, xlC128,
xlC128_r, xlC128_r4,
xlC128_r7
cc, cc_r, cc_r4, cc_r7, Compile legacy code that
cc128, cc128_r, cc128_r4, does not conform to Standard
cc128_r7 C. (pre-ANSI C)
c89, c89_r, c89_r4, Compile C source files with
c89_r7, c89_128, c89_128_r, strict conformance to the
c89_128_r4, c89_128_r7 C89 standard. (ANSI C89)
c99, c99_r, c99_r4, Compile C source files with
c99_r7, c99_128, c99_128_r, strict conformance to the
c99_128_r4, c99_128_r7 C99 standard. (ISO 99)
xlc++core, xlc++core_r, Compile C++ source files
xlc++core_r7, xlc++core128, but the compiler will
xlc++core128_r, link only to the core of
xlc++core128_r7, xlCcore, the runtime library.
xlCcore_r, xlCcore_r7,
xlC128core, xlC128core_r,
xlC128core_r7
gxlc Accepts GNU C options, maps
them to their equivalent XL
C option, then invokes xlc.
gxlc++, gxlC Accepts GNU C/C++ options, maps
them to their equivalent XL
C++ option,then invokes xlc++.
The main difference between these commands is that they use different
default options (which are set in the configuration file
/etc/vac.cfg.XX, where XX represents the AIX version).
See the Compiler Reference for more information on these invocation
commands.
All invocations with a suffix of _r allow for thread-safe
compilation. Use these commands to create threaded
applications or to link programs that use multi-threading.
These commands also process assembler source files and
object files. The compiler calls the link editor to
produce a single executable or shared library, unless you
specify the compiler options that prevent object files
from being linked.
The input file may have any of the following suffixes:
.C, .cpp, .cxx, C++ source file
.cc, .cp, .c++
.c C source file
.i Preprocessed C or C++ source file
.a Archive file
.o Object file for ld command
.s Assembler source file
.S Assembler source file that
needs preprocessing
.so Shared object file
OPTIONS
Compiler options are categorized by their functions and
may be used to set the compiler behavior. Options can be
flag options or keyword options.
Keyword options are specified in one of the following
ways:
-q<option>
-q<option>=<suboption>
-q<option>=<suboption>:<suboption>
Keyword options with no suboptions represent switches that
may be either on or off. -qx turns the switch on, and
-qnox turns the switch off. For example, -qsource tells
the compiler to produce a source listing and -qnosource
tells the compiler not to produce a source listing.
Output control options
-c Instructs the compiler to pass source files to the
compiler only. The compiled source files are not
sent to the linker. This option produces an object
file, file_name.o, for each valid source file.
-C | -C!
Preserves or removes comments in preprocessed
output.
When -C is used with the -E option, comments are
written to standard output; with the -P option,
comments are written to an output file.
When -C! is in effect, comments are removed.
-E Instructs the compiler to preprocess the source
files named in the compiler invocation and creates
an output preprocessed source file.
-G Tells the linkage editor to create a shared object
enabled for runtime linking.
-M Creates an output file that contains information to
be included in a "make" description file. This is
equivalent to specifying -qmakedep without a
suboption.
-qmakedep[=gcc]
Creates an output file that contains targets
suitable for inclusion in a description file for
the make command that describes the dependencies of
the main source file in the compilation.
Specifying 'gcc' changes the format of the
generated dependency file.
Specifying -qmakedep without 'gcc' is equivalent to
specifying -M.
-MF<path>
Specifies the target for the output generated by
the -qmakedep or -M options, where <path> can be a
full directory path or file name. Note that "-MF
<path>" (with a space before the argument) is also
acceptable. This option only has effect when
specified with -qmakedep or -M.
(C)-qmkshrobj, (C++)-qmkshrobj[=<priority>]
Creates a shared object from the generated object
files.
The optional number specifies the priority level
for initialization of all static objects in the
file. <priority> may be any number from -214782623
(highest priority-initialized first) to 214783647
(lowest priority-initialized last). If no priority
is specified, the default priority of 0 is used.
The priority is not used when linking shared
objects (using the xlc command) written in C.
Specifying -qmkshrobj implies -qpic.
See related options, -e <name> and -o <path>.
-o <path>
Specifies an output location for the object,
assembler, or executable files created by the
compiler. When the -o option is used during
compiler invocation, <path> can be the name of
either a file or a directory.
Default: -o a.out
-P Preprocesses the C or C++ source files named in the
compiler invocation and creates an output
preprocessed source file for each input source
file. The preprocessed output file has the same
name as the output file, with a .i suffix.
-S Generates an assembler language file (.s) for each
source file. The resulting .s files can be
assembled to produce object .o files or an
executable file (a.out).
Input control options
-+ (C++) Compiles any file, <file_name.nnn>, as a C++
language file, where <nnn> is any suffix other than
.a, .so, .o, .s, or .S. This option is equivalent
to the -qsourcetype=c++ option and should not be
used together with the -qsourcetype option.
-qcinc=<directory_path> | -qnocinc
(C++) Instructs the compiler to place an extern "C"
{ } wrapper around the contents of an include file,
where <directory_path> is the location of that
include file.
Default: -qnocinc
-I<directory_path>
Specifies an additional search path for include
file names that do not specify an absolute path.
Default:
The following directories are searched, in the
following order, after any paths that are
specified by the -I option:
1) The current directory.
2) The directory where the source file is
located.
3) /usr/include.
-qidirfirst | -qnoidirfirst
Specifies the search order for files included with
the #include "<file_name>" directive. Use
-qidirfirst with the -I option. If -qidirfirst is
specified, the directories specified by the
-I<directory_path> option are searched before the
directory in which the current file resides.
Default: -qnoidirfirst
-qinclude=<file_path>
Specifies additional header files that are included
before the first line of a source file in a
compilation unit and ahead of any headers which may
be specified by an #include statement on the first
line of the source file.
-qsourcetype=<type>
Determines whether to treat all recognized source
files as if they are of the source type specified
by <type> (regardless of file name suffix), or
whether to use the file name suffix to determine
the programming language.
Note that the option only affects files that are
specified on the command line following the option,
but not those that precede the option. The
-qsourcetype option should not be used together
with the -+ option. The suboptions are:
default
The compiler assumes that the programming
language of a source file will be implied by
its file name suffix.
c
The compiler compiles all source files
following this option as if they are C
language source files.
assembler
The compiler compiles all source files
following this option as if they are assembler
language source files.
assembler-with-cpp
The compiler compiles all source files
following this option as if they are assembler
language source files that need preprocessing.
Default: -qsourcetype=default
-qstdinc | -qnostdinc
Specifies whether the standard directories are
searched for files included by the #include
<file_name> and #include "file_name" directives.
The -qnostdinc option excludes the standard include
directories from the search path.
Default: -qstdinc
Language element control options
-qaltivec | -qnoaltivec
Instructs the compiler to support vector data types
and operators and is accepted when the architecture
specified by the -qarch option supports vector
instructions and -qenablevmx is enabled.
Default: -qnoaltivec
-qasm[=<sub>] | -qnoasm[=<sub>]
Controls the interpretation of, and subsequent
generation of code for, asm statements.
In (C), <sub> can only be 'gcc'.
In (C++), <sub> can be:
gcc
Interprets asm statements using GCC syntax.
stdcpp
Interprets asm statements using stdcpp syntax.
Default:
(C++) -qnoasm=stdcpp in compat366 or strict98
modes, and -qasm=gcc otherwise.
(C) -qasm=gcc
-qcpluscmt | -qnocpluscmt
(C) Permits the usage of "//" to introduce a
comment that lasts until the end of the current
source line, as in C++.
Default:
o -qcpluscmt when you invoke the compiler with
xlc, xlc_r, cc, or cc_r, or when -qlanglvl is
set to stdc99 or extc99.
o -qnocpluscmt otherwise.
-D<name>[=[<def>]]
Defines <name> as in the #define directive. <def>
is an optional definition or value assigned to
<name>. Specifying -D<name>= (with no <def>) is
equivalent to #define <name>; specifying
-D<name> is equivalent to #define <name> 1.
-qdbcs | -qnodbcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qmbcs.
Default: -qnodbcs
-qdfp | -qnodfp
Enables compiler support for decimal floating-point
types and literals.
Default: -qnodpf
-qdigraph | -qnodigraph
Allows usage of digraph key combinations or
keywords to represent characters not found on some
keyboards.
Default:
(C) -qdigraph when -qlanglvl is extc89,
extended, extc99 or stdc99, and -qnodigraph
otherwise.
(C++) -qdigraph
-qdollar | -qnodollar
Allows the '$' symbol to be used in the names of
identifiers. When -qdollar is in effect, the dollar
symbol '$' in an identifier is treated as a base
character. If the options -qnodollar and
-qlanglvl=ucs are both enabled, the dollar symbol
is treated as an extended character.
Default: -qnodollar
-qignprag=<option>
Instructs the compiler to ignore certain pragma
statements. The options are:
disjoint
Ignores all #pragma disjoint directives in the
source file.
isolated_call
Ignores all #pragma isolated_call directives
in the source file.
all
Ignores all #pragma isolated_call directives
and #pragma disjoint directives in the source
file.
omp
Ignores all OpenMP parallel processing
directives in the source file.
ibm
(C) Ignores all #pragma ibm snapshot
directives and all IBM SMP directives in the
source file.
-qkeyword=<keyword> | -qnokeyword=<keyword>
Controls whether the specified name is treated as a
keyword or as an identifier whenever it appears in
a program source.
By default, all the built-in keywords defined in
the C and C++ language standards are reserved as
keywords. You cannot add keywords to the language
with this option. However, you can use
-qnokeyword=<keyword> to disable built-in keywords,
and use -qkeyword=<keyword> to reinstate those
keywords.
(C) This option can also be used with the following
C keywords: restrict, typeof, asm and inline.
(C++) This option can be used with all C++ built-in
keywords.
-qlanglvl=<suboptions_list>
Selects the language level and language options for
the compilation. <suboptions_list> is a colon-
separated list of suboptions.
(C) For C language programs, <suboptions_list> is
{classic|extended|saa|saa12|stdc89|stdc99|extc89|extc99}:{ucs|noucs}.
classic
Allows the compilation of non-stdc89 programs,
and conforms closely to the K&R level
preprocessor.
extended
Provides compatibility with the RT compiler
and classic. This language level is based on
C89.
saa
Compilation conforms to the current SAA(R) C
CPI language definition. This is currently SAA
C Level 2.
saal2
Compilation conforms to the SAA C Level 2 CPI
language definition, with some exceptions.
stdc89
Compilation conforms to the ANSI C89 standard,
also known as ISO C90.
stdc99
Compilation conforms to the ISO C99 standard.
extc89
Compilation conforms to the ANSI C89 standard,
and accepts implementation-specific language
extensions.
extc99
Compilation conforms to the ISO C99 standard,
and accepts implementation-specific language
extensions.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in program
source code.
Default:
o -qlanglvl=ucs under language levels stdc99
and extc99.
o -qlanglvl=noucs for all other language
levels.
(C++) The suboptions for C++ language programs are:
compat366
Compilation conforms to some, but not all, IBM
C and C++ Compilers V3.6 features.
extended
Compilation is based on the strict98, with
some differences to accommodate extended
language features.
strict98
Compilation conforms to the ISO C++ standard
for C++ programs.
anonstruct | noanonstruct
This suboption controls whether anonymous
structs and anonymous classes are allowed in
your C++ source. By default, the compiler
allows anonymous structs.
anonunion | noanonunion
This suboption controls what members are
allowed in anonymous unions. When this
suboption is set to anonunion, anonymous
unions can have members of all types that
standard C++ allows in non-anonymous unions.
ansifor | noansifor
This suboption controls whether scope rules
defined in the C++ standard apply to names
declared in for-init statements. By default,
standard C++ rules are used.
ansisinit | noansisinit
This suboption can be used to select between
old (v3.6 or earlier) and current (v5.0 or
later) compiler object compatibility.
c99__func__ | noc99__func__
This suboption instructs the compiler to
recognize the C99 __func__ identifier.
The c99__func__ suboption is enabled by
default when -qlanglvl=extended is enabled. It
can be enabled for any language level by
specifying -qlanglvl=c99__func__, or disabled
by specifying -qlanglvl=noc99__func__.
c99complex | noc99complex
This suboption instructs the compiler to
recognize C99 complex data types and related
keywords. It is set by default for
-qlanglvl=extended.
c99complexheader | noc99complexheader
This suboption instructs the compiler to use
the C99 complex.h header file.
c99compoundliteral | noc99compoundliteral
This suboption instructs the compiler to
support the C99 compound literal feature. It
is set by default for -qlanglvl=extended.
c99hexfloat | noc99hexfloat
This suboption enables support for C99-style
hexadecimal floating constants in C++
applications. It is on by default for
-qlanglvl=extended.
c99vla | noc99vla
When c99vla is enabled, the compiler will
support the use of C99-type variable length
arrays in your C++ applications. It is set by
default for -qlanglvl=extended.
compatzea | nocompatzea
The -qlanglvl=compatzea option is a
compatibility option that lets you continue to
use a zero extent array with dimension of 1.
Default: -qlanglvl=nocompatzea
Specifying -qlanglvl=compatzea has effect only
if -qlanglvl=zeroextarray is also enabled.
dependentbaselookup | nodependentbaselookup
Provides the ability to specify compilation in
conformance with issue 213 of TC1 of the C++
standard.
Default: -qlanglvl=dependentbaselookup
gnu_assert | nognu_assert
Enables or disables support for the following
GNU C system identification assertions:
'#assert', '#unassert', '#cpu', '#machine',
'#system'.
gnu_complex | nognu_complex
This suboption instructs the compiler to
recognize GNU complex data types and related
keywords.
gnu_computedgoto | nognu_computedgoto
Enables support for computed gotos. This
suboption is enabled for -qlanglvl=extended.
gnu_explicitregvar | nognu_explicitregvar
(C) Allows you to control whether the compiler
accepts and ignores the specification of
explicit registers for variables.
gnu_externtemplate | nognu_externtemplate
This suboption enables or disables extern
template instantiations.
Default:
gnu_externtemplate is enabled by default
when compiling to the extended language
level.
gnu_include_next | nognu_include_next
Enables or disables support for the GNU C
#include_next preprocessor directive.
Default:
gnu_include_next is enabled by default for
-qlanglvl=extended.
gnu_labelvalue | nognu_labelvalue
Enables or disables support for labels as
values.
Default:
gnu_labelvalue is enabled by default for
-qlanglvl=extended.
gnu_locallabel | nognu_locallabel
Enables or disables support for locally-
declared labels.
gnu_membernamereuse | nognu_membernamereuse
Enables or disables reusing a template name in
a member list as a typedef.
gnu_suffixij | nognu_suffixij
Enables or disables support for GCC style
complex numbers. If gnu_suffixij is specified,
a complex number can be ended with suffix i/I
or j/J.
Default:
gnu_suffixij is enabled by default for
-qlanglvl=extended.
gnu_varargmacros | nognu_varargmacros
This option is similar to
-qlanglvl=varargmacros. For the list of the
main differences, refer to the Compiler
Reference.
Default:
gnu_varargmacros is set by default for
-qlanglvl=extended.
gnu_warning | nognu_warning
Enables or disables support for the GNU C
#warning preprocessor directive.
illptom | noillptom
This suboption controls what expressions can
be used to form pointers to members. C/C++ can
accept some forms that are in common use, but
do not conform to the C++ standard. The
compiler allows these forms by default.
implicitint | noimplicitint
This suboption controls whether the compiler
will accept missing or partially specified
types as implicitly specifying 'int'. This is
no longer accepted in the standard but may
exist in legacy code.
With the suboption set to noimplicitint, all
types must be fully specified.
With the suboption set to implicitint, a
function declaration at namespace scope or in
a member list will implicitly be declared to
return int.
newexcp | nonewexcp
This suboption determines whether or not the
C++ new operator throws an exception. If the
-qlanglvl=newexcp option is specified, the
standard exception std::bad_alloc is thrown
when the requested memory allocation fails.
This option does not apply to the nothrow
versions of the new operator.
The standard implementation of the new
operators fully support exceptions. For
compatibility with previous versions of
VisualAge C++, these operators return 0 by
default.
offsetnonpod | nooffsetnonpod
This suboption controls whether the offsetof
macro can be applied to classes that are not
data-only.
By default, the compiler allows offsetof to be
used with non-POD classes.
olddigraph | noolddigraph
This option controls whether old-style
digraphs are allowed in your C++ source. It
applies only when -qdigraph is also set.
By default, the compiler supports only the
digraphs specified in the C++ standard.
oldfriend | nooldfriend
This option controls whether friend
declarations that name classes without
elaborated class names are treated as C++
errors.
By default, the compiler lets you declare a
friend class without elaborating the name of
the class with the keyword class.
oldmath | nooldmath
This suboption controls which versions of math
function declarations in <math.h> are included
when you specify math.h as an included or
primary source file.
By default, the new standard math functions
are used. Build with -qlanglvl=nooldmath for
strict compliance with the C++ standard. For
compatibility with modules that were built
with earlier versions of VisualAge C++ and
predecessor products, you may need to build
with -qlanglvl=oldmath.
oldtempacc | nooldtempacc
This suboption controls whether access to a
copy constructor to create a temporary object
is always checked, even if creation of the
temporary object is avoided.
By default, the compiler suppresses the access
checking.
oldtmplalign | nooldtmplalign
Controls whether alignment rules specified for
nested templates are ignored.
When the default, -qlanglvl=nooldtmplalign, is
in effect, these alignment rules are not
ignored.
Specify -qlanglvl=oldtmplalign for
compatibility with VisualAge C++ 4.0 and
predecessor products.
oldtmplspec | nooldtmplspec
This suboption controls whether template
specializations that do not conform to the C++
standard are allowed.
By default, the compiler allows these old
specializations (-qlanglvl=nooldtmplspec).
redefmac | noredefmac
Specifies whether a macro can be redefined
without a prior #undef or undefine()
statement.
trailenum | notrailenum
This suboption controls whether trailing
commas are allowed in enum declarations.
By default, the compiler allows one or more
trailing commas at the end of the enumerator
list.
typedefclass | notypedefclass
This suboption provides backwards
compatibility with previous versions of
VisualAge C++ and predecessor products.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in C++
sources.
Default: -qlanglvl=noucs
varargmacros | novarargmacros
This C99 feature allows the use of a variable
argument list in function-like macros in your
C++ applications.
zeroextarray | nozeroextarray
This suboption controls whether zero-extent
arrays are allowed as the last non-static data
member in a class definition.
By default, the compiler allows arrays with
zero elements.
The default depends on the invocation command used:
Command Default
_____________________________________________
xlC/xlc++ extended
xlc extc99
cc extended
c89 stdc89
c99 stdc99
-qlonglong | -qnolonglong
Allows IBM-style long long integers. This option
cannot be used with -qlanglvl=stdc99 or
-qlanglvl=extc99.
Default:
o -qlonglong when compiling with xlc, xlc++,
xlC or cc.
o -qnolonglong when compiling with c89 or c99.
-qmacpstr | -qnomacpstr
Converts Pascal string literals into null-
terminated strings where the first byte contains
the length of the string.
Default: -qnomacpstr
-qmbcs | -qnombcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qdbcs.
Default: -qnombcs
-qstaticinline | -qnostaticinline
(C++) Controls whether inline functions are treated
as static or extern. Specifying -qnostaticinline
means the inline functions are treated as having
extern linkage.
Default: -qnostaticinline
-qtabsize=<size>
Changes the length of tabs as perceived by the
compiler, where <size> is the number of character
spaces representing a tab in the source program.
Default: -qtabsize=8
-qtrigraph | -qnotrigraph
Allows trigraph key combinations to represent
characters not found on some keyboards.
Default: -qtrigraph
However, if -qlanglvl=classic is enabled or
implied, the trigraphs are not recognized by
default.
-U<name>
Undefines the identifier <name> defined by the
compiler or by the -D<name> option.
-qutf | -qnoutf
Enables recognition of UTF literal syntax.
Default:
o (C) -qnoutf
o (C++) -qutf for all language levels except
-qlanglvl=strict98
o (C++) -qnoutf when -qlanglvl=strict98 is in
effect
Template control options (C++ only)
-qtempinc[=<directory_path>] | -qnotempinc
(C++) Generates separate template include files for
template functions and class declarations, and
places these files in a directory which can be
optionally specified.
Default: -qnotempinc
-qtemplatedepth=<number>
(C++) Specifies the maximum number of recursively
instantiated template specializations that will be
processed by the compiler. <number> can be a value
between 1 and INT_MAX.
Default: -qtemplatedepth=300
-qtemplaterecompile | -qnotemplaterecompile
(C++) Helps manage dependencies between compilation
units that have been compiled using the
-qtemplateregistry compiler option.
Default: -qnotemplaterecompile
-qtemplateregistry[=<filename>] | -qnotemplateregistry
(C++) Maintains records of all templates as they
are encountered in the source and ensures that only
one instantiation of each template is made.
Default: -qnotemplateregistry
-qtempmax=<number>
(C++) Specifies the maximum number of template
include files to be generated by the -qtempinc
option for each header file.
Default: -qtempmax=1
-qtmplinst=<suboption>
(C++) Allows you to manage implicit template
instantiations. <suboption> is one of the
following:
none
Instantiates only the inline functions. If
this is specified, -qtempinc and
-qtemplateregistry are ignored.
noinline
Suppresses all implicit instantiations.
auto
Handles the implicit instantiations according
to the -qtempinc and -qtemplateregistry
options. If both options are off, then
implicit instantiations are always performed.
always
Always perform implicit instantiations. This
will ignore the -qtempinc and
-qtemplateregistry options.
Default: -qtmplinst=auto
-qtmplparse=<option>
(C++) Controls whether parsing and semantic
checking are applied to template definition
implementations or only to template instantiations.
The compiler has the option to produce warning or
error messages. The suboptions are:
no
Does not parse, to reduce the number of errors
issued in code written for previous versions
of the compiler.
warn
Parses template definitions and issues warning
messages for semantic errors.
error
Treats problems in template definitions as
errors, even if the template is not
instantiated.
Default: -qtmplparse=no
Floating-point and integer control options
-qbitfields={signed|unsigned}
Specifies whether bit fields will be signed or
unsigned.
Default: -qbitfields=unsigned
-qchars={signed|unsigned}
Specifies whether the data type char will be signed
or unsigned.
Default: -qchars=unsigned
-qenum=<suboption>
Specifies the amount of storage occupied by
enumerations, where <suboption> can be:
small
Specifies that enumerations occupy the
smallest amount of space (1, 2, 4, or 8 bytes)
that can accurately represent the range of
values in the enumeration. Signage is
unsigned, unless the range of values includes
negative values.
int
Specifies that enumerations occupy 4 bytes and
are represented by int.
intlong
Specifies that enumerations occupy 8 bytes of
storage if the range of values in the
enumeration exceeds the limit for int.
Otherwise, the enumerations occupy 4 bytes of
storage and are represented by int.
1
Specifies that enumerations occupy 1 byte.
Type is signed or unsigned char.
2
Specifies that enumerations occupy 2 bytes.
Type is signed or unsigned short.
4
Specifies that enumerations occupy 4 bytes.
Type is signed or unsigned int.
8
Specifies that enumerations occupy 8 bytes.
Type is signed or unsigned long long in 32-bit
mode, and signed or unsigned long in 64-bit
mode.
Default: -qenum=intlong
-qfloat=<suboptions_list>
Specifies various floating-point suboptions. This
provides different strategies for speeding up or
improving the accuracy of floating-point
calculations. <suboptions_list> is a colon-
separated list of one or more of the following:
dfpemulate | nodfpemulate
Specifies whether decimal floating-point
computations are implemented in hardware
instructions or emulated in software by calls
to library functions.
-qdfp must be enabled for either suboption to
have any effect. nodfpemulate is only valid on
a system that supports decimal floating-point
instructions; that is, on AIX 5.3 and higher,
and with -qarch=pwr6 in effect. dfpemulate is
required for all other -qarch values.
Default: dfpemulate
fenv | nofenv
Specifies whether the code depends on the
hardware environment and whether to suppress
optimizations that could cause unexpected
results due to this dependency.
When nofenv is in effect, the compiler assumes
that the program does not depend on the
hardware environment, and that aggressive
compiler optimizations that change the
sequence of floating-point operations are
allowed to be performed. When fenv is in
effect, such optimizations are suppressed.
Default: nofenv
fltint | nofltint
Speeds up floating-point-to-integer
conversions by using faster inline code that
does not check for overflows. -qfloat=nofltint
checks floating-point-to-integer conversions
for out-of-range values.
Default:
o nofltint at -O2 optimization.
o fltint when -qnostrict or -O3 or higher
optimization level is in effect.
fold | nofold
Specifies that constant floating-point
expressions are to be evaluated at compile
time rather than at run time.
Default: fold
hscmplx | nohscmplx
Speeds up operations involving complex
division and complex absolute value. This
suboption, which provides a subset of the
optimizations of the hsflt suboption, is
preferred for complex calculations.
Default: nohscmplx
hsflt | nohsflt
The hsflt option speeds up calculations by
truncating instead of rounding computed values
to single precision before storing and on
conversions from floating-point to integer.
The nohsflt suboption specifies that single-
precision expressions are rounded after
expression evaluation and that floating-
point-to-integer conversions are to be checked
for out-of-range values.
Default: nohsflt
hssngl | nohssngl
The hssngl option specifies that single-
precision expressions are rounded only when
the results are stored into float memory
locations. The nohssngl option specifies that
single-precision expressions are rounded after
expression evaluation. Using hssngl can
improve runtime performance and is safer than
using -qfloat=hsflt.
Default: nohssngl
maf | nomaf
Makes floating-point calculations faster and
more accurate by using floating-point
multiply-add instructions where appropriate.
Default: maf
nans | nonans
Generates extra instructions to detect
signalling NaN when converting from single-
precision to double-precision at run time. The
option nonans specifies that this conversion
need not be detected.
Default: nonans
relax | norelax
Relaxes the strict IEEE-conformance slightly
for greater speed, typically by removing some
trivial, floating-point arithmetic operations,
such as adds and subtracts involving a zero on
the right.
Default: norelax
rndsngl | norndsngl
Specifies that the result of each single-
precision (float) operation is to be rounded
to single precision. -qfloat=norndsngl
specifies that rounding to single-precision
happens only after full expressions have been
evaluated.
Default: rndsngl
rngchk | norngchk
Specifying norngchk instructs the compiler to
skip range checking, allowing for increased
performance where division and sqrt operations
are performed repeatedly within a loop.
When rngchk is specified, range checking is
performed for input arguments for software
divide and inlined sqrt operations.
When -qstrict is active, the setting of this
option is forced to -qfloat=rngchk. When
-qnostrict is active, the setting of this
option is -qfloat=norngchk unless the
-qfloat=rngchk option is explicitly set by the
user.
Default: rngchk
rrm | norrm
Prevents floating-point optimizations that are
incompatible with runtime rounding to plus and
minus infinity modes.
Default: norrm
rsqrt | norsqrt
Specifies whether a sequence of code that
involves division by the result of a square
root can be replaced by calculating the
reciprocal of the square root and multiplying.
Allowing this replacement produces code that
runs faster. -qfloat=rsqrt has no effect
unless -qignerrno is also specified.
Default:
o norsqrt at -O2 optimization.
o rsqrt when when -qnostrict or -O3 or
higher optimization level is in effect.
single | nosingle
Allows single-precision arithmetic
instructions to be generated for single-
precision floating-point values. All PowerPC
processors support single-precision
instructions; however, if you wish to preserve
the behavior of applications compiled for
earlier architectures, in which all floating-
point arithmetic was performed in double-
precision and then truncated to single-
precision, you can use
-qfloat=nosingle:norndsngl. This suboption
provides computation precision results
compatible with those provided by the
deprecated options
-qarch=com|pwr|pwrx|pwr2|p2sc|601|602|603.
Default: single
spnans | nospnans
Detects signalling NaN on conversion from
single-precision to double-precision.
Default: nospnans
-qldbl128 | -qnoldbl128
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qlongdouble.
Default: -qnoldbl128
-qlongdouble | -qnolongdouble
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qldbl128.
Default: -qnolongdouble
-qlonglit | -qnolonglit
Makes unsuffixed literals into the long type in
64-bit mode.
Default: -qnolonglit
-y<rounding_mode>
Specifies the compile-time rounding mode of
constant floating-point expressions.
For binary floating-point types, <rounding_mode> is
one of the following:
m = round toward minus infinity
n = round to the nearest representable number, ties
to even
p = round toward plus infinity
z = round toward zero
Default: -yn
For decimal floating-point types, <rounding_mode>
is one of the following:
di = round toward infinities (away from zero)
dm = round toward minus infinity
dn = round to the nearest representable number,
ties to even
dna = round to the nearest representable number,
ties away from zero
dnz = round to the nearest representable number,
ties toward zero
dp = round toward plus infinity
dz = round toward zero
Default: -ydn
Object code control options
-q32, -q64
Selects either 32-bit or 64-bit compilation mode.
Use the -q32 and -q64 options, along with the
-qarch and -qtune compiler options, to optimize the
output of the compiler to the architecture on which
that output will be used.
Default: -q32
-qalloca
(C) Substitutes inline code for calls to function
alloca, as if #pragma alloca directives were in the
source code.
-ma (C) Substitutes inline code for calls to function
alloca.
-qeh[={v5|v6}] | -qnoeh
(C++) Controls whether exception handling is
enabled in the module being compiled.
v5
Instructs the compiler to generate exception-
handling code that is compatible with
VisualAge C++ V5.0.
v6
Instructs the compiler to generate new
exception-handling code, compatible with
VisualAge C++ V6.0, that correctly handles
try-catch blocks nested within other catch
blocks.
Default: -qeh=v6
-qexpfile=<file_name>
Saves the exported symbols in the specified file
and is only used together with the -qmkshrobj
compiler option.
Refer to the -qmkshrobj option for more
information.
-qfuncsect[=[no]implicitstaticref] | -qnofuncsect
Places instructions for each function in a separate
object file control section or csect. -qfuncsect
can take the following suboption:
implicitstaticref | noimplicitstaticref
Specifies whether the compiler generates dummy
references to the static area. Specifying
-qfuncsect with no suboption implies
implicitstaticref. Specifying
noimplicitstaticref removes unnecessary
references to the static data area.
Default: -qnofuncsect
-qinlglue | -qnoinlglue
This option inlines glue code that optimizes
external function calls when compiling at -q64 and
-O2 and higher.
Default: -qnoinlglue
-qkeepinlines | -qnokeepinlines
(C++) Instructs the compiler to keep or discard
definitions for unreferenced extern inline
functions. Discarding these definitions can reduce
the size of the object files. The -qkeepinlines
setting keeps the definitions of unreferenced
extern inline functions.
Default: -qnokeepinlines
-qpic[={small|large}] | -qnopic
Generates position-independent code (pic). Specify
-qpic=small if the global offset table must be 64
Kb or smaller, or -qpic=large if it can be larger
than 64 Kb.
Default: -qpic=small
-qppline | -qnoppline
When used in conjunction with the -E or -P options,
enables or disables the generation of #line
directives in the preprocessed output.
Default:
o -qnoppline with -P
o -qppline with -E
-qpriority=<num>
(C++) Specifies the priority level for the
initialization of static objects, where <num> is
the initialization priority level assigned to the
static objects within a file, or the priority level
of a shared or non-shared file or library.
You can specify a priority level from -(2147483647
+ 1) (highest priority) to +2147483647 (lowest
priority).
Default: -qpriority=0
-qproto | -qnoproto
(C) Assumes that all functions are prototyped.
Asserts that procedure call points agree with their
declarations even if the procedure has not been
prototyped. This allows the caller to pass
floating-point arguments in floating-point
registers instead of general-purpose registers.
Default: -qnoproto
-r Produces a relocatable object. This permits the
output file to be produced even though it contains
unresolved symbols.
-qreserved_reg=<registers_list>
Indicates that the specified register(s) cannot be
used during the compilation, except as a stack
pointer, frame pointer or in a different fixed
role. <registers_list> is a colon-separated list of
registers.
-qro | -qnoro
Specifies the storage type for string literals and
puts string literals in read-only storage.
Default:
o -qnoro with cc and its derivatives.
o -qro otherwise.
-qroconst | -qnoroconst
Specifies the storage location for constant values.
Default:
o -qroconst with xlc, xlc++, xlC, c89 and c99
invocations commands.
o -qnoroconst with cc.
-qroptr | -qnoroptr
Specifies the storage location for constant
pointers.
Default: -qnoroptr
-qrtti=<option> | -qnortti
(C++) Generates runtime type identification (RTTI)
information for the typeid and dynamic_cast
operators. The suboptions are:
all
Generates the information needed for the RTTI
typeid and dynamic_cast operators.
type | typeinfo
Generates the information needed for the RTTI
typeid operator only.
dyna | dynamiccast
Generates the information needed for the RTTI
dynamic_cast operator only.
Default: -qnortti
-s Strips the symbol table, line number information,
and relocation information from the output file.
-qsaveopt | -qnosaveopt
Saves the command-line options used for compiling a
source file, the version and level of each compiler
component invoked during compilation, and other
information to the corresponding object file.
This option must be used with the -c option.
Default: -qnosaveopt
-qstatsym | -qnostatsym
Adds user-defined, non-external names that have a
persistent storage class (such as initialized and
uninitialized static variables) to the name list
(the symbol table of objects).
Default: -qnostatsym
-qtbtable=<suboption>
Generates a traceback table that contains
information about each function, including the type
of function as well as stack frame and register
information. The traceback table is placed in the
text segment at the end of its code. Suboptions
include:
none
No traceback table is generated.
small
A traceback table is generated with no name or
parameter information. This is the default
with optimization if -g is not specified.
full
A full traceback table is generated. This is
the default with -qnoopt or -g specified.
Default:
o -qtbtable=full when compiling non-optimized
(without -O) or for debugging (with -g).
o -qtbtable=small otherwise.
-qthreaded | -qnothreaded
Ensures that all optimizations will be thread-safe
for executing in a multi-threaded environment.
Default:
o -qthreaded when compiling invocation
commands ending in "_r" or "_r7".
o -qnothreaded otherwise.
-qtls[=<model>] | -qnotls
Specifies the thread-local storage model to be used
by the application, where <model> can be:
global-dynamic
This model is the most general, and can be
used for all thread-local variables.
local-dynamic
This model provides better performance than
the global-dynamic model, and can be used for
thread-local variables defined in
dynamically-loaded modules.
initial-exec
This model provides better performance than
the global-dynamic or local-dynamic models,
and can be used for thread-local variables
defined in dynamically-loaded modules,
provided that those modules are loaded at the
same time as the executable.
local-exec
This model provides the best performance of
all of the models, but can only be used when
all thread-local variables are defined and
referenced by the main executable.
Default:
o -qtls=unsupported
o -qtls=initial_exec if the -qnopic compiler
option is enabled.
o -qtls=global_dynamic if the -qpic compiler
option is enabled.
-qunique | -qnounique
(C++) Generates unique names for static
constructor/destructor file compilation units.
Default: -qnounique
-qweakexp | -qnoweakexp
When used with the -qmkshrobj or -G options,
includes or excludes global symbols marked as weak
from the export list generated when you create a
shared object.
Default: -qweakexp
-qweaksymbol | -qnoweaksymbol
Instructs the compiler to generate weak symbols.
Default: -qweaksymbol
-qxcall | -qnoxcall
Generates code to treat static functions within a
compilation unit as if they were external
functions.
Default: -qnoxcall
Error checking and debugging options
-# Traces the compilation and generates information on
the progress of the compilation without invoking
the preprocessor, compiler, or linkage editor.
-qcheck[=<suboptions_list>] | -qnocheck
Generates code that performs certain types of
runtime checking. If a violation is encountered, a
runtime exception is raised by sending a SIGTRAP
signal to the process. <suboptions_list> is a
colon-separated list of one or more of the
following:
all
Enables all suboptions.
bounds | nobounds
Performs runtime checking of addresses when
subscripting within an object of known size.
divzero | nodivzero
Performs runtime checking of integer division.
A trap will occur if an attempt is made to
divide by zero.
nullptr | nonullptr
Performs runtime checking of addresses
contained in pointer variables used to
reference storage.
Default: -qnocheck
-qdbxextra | -qnodbxextra
(C) Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for debugging. Use this option with the -g
option to produce additional debugging information
for use with a debugger.
Default: -qnodbxextra
-qdpcl | -qnodpcl
Generates symbols that can be used by tools based
on the Dynamic Probe Class Library (DPCL) to see
the structure of an executable file.
Default: -qnodpcl
-qextchk | -qnoextchk
Generates bind-time type-checking information and
checks for compile-time consistency.
Default: -qnoextchk
-qflttrap[=<suboptions_list>] | -qnoflttrap
Generates instructions to detect and trap runtime
floating-point exceptions. <suboptions_list> is a
colon-separated list of one or more of the
following suboptions:
enable
Enables trapping of the specified exceptions.
imprecise
Only checks for the specified exceptions on
subprogram entry and exit.
inexact
Detects floating-point inexact exceptions.
invalid
Detects floating-point invalid operation
exceptions.
nanq
Generates code to detect and trap NaNQ (Not a
Number Quiet) exceptions handled or generated
by floating-point operations.
overflow
Detects floating-point overflow.
underflow
Detects floating-point underflow.
zerodivide
Detects floating-point division by zero.
Default: -qnoflttrap
-qformat=<options_list> | -qnoformat
Warns of possible problems with string input and
output format specifications. Functions diagnosed
are printf, scanf, strftime, strfmon family
functions and functions marked with format
attributes. <options_list> is a comma-separated
list of one or more of the following suboptions:
all | noall
Turns on all format diagnostic messages.
exarg | noexarg
Warns if excess arguments appear in printf and
scanf style function calls.
nlt | nonlt
Warns if a format string is not a string
literal, unless the format function takes its
format arguments as a va_list.
sec | nosec
Warns of possible security problems in use of
format functions.
y2k | noy2k
Warns of strftime formats that produce a 2-
digit year.
zln | nozln
Warns of zero-length formats.
Default:
o -qnoformat, which is equivalent to
-qformat=noall.
o -qformat=all if -qformat is specified
without any suboptions.
-qfullpath | -qnofullpath
Records the full or absolute path names of source
and include files in object files compiled with
debugging information (when you use the -g option).
Default: -qnofullpath
-g Generates debug information for debugging tools.
-qdbg is the long form of -g.
-g implies the -Q! option.
-qhalt=<sev>
Stops the compiler after the first phase if the
severity level of errors detected equals or exceeds
the specified level, <sev>. The severity levels in
increasing order of severity are:
i = informational messages
w = warning messages
e = error messages (C only)
s = severe error messages
Default: -qhalt=s
-qhaltonmsg=<msgnum_list>
(C++) Stops the compiler after the compilation
phase where it encounters the specified message
number(s), where <msgnum_list> is a comma-separated
list of message numbers.
-qheapdebug | -qnoheapdebug
Enables debug versions of memory management
functions.
Default: -qnoheapdebug
-qinfo[=[<suboption>][<groups_list>]] | -qnoinfo
Produces or suppresses informational messages.
<groups_list> is a colon-separated list. If a
<groups_list> is specified along with a
<suboption>, a colon must separate them. The
suboptions are:
all
Enables all diagnostic messages for all
groups.
noall
Disables all diagnostic messages for all
groups.
private
Lists shared variables that are made private
to a parallel loop.
reduction
Lists variables that are recognized as
reduction variables inside a parallel loop.
<groups_list> turns on or off specific groups of
messages and is a colon-separated list of one or
more of the following:
c99 | noc99
(C) C code that might behave differently
between C89 and C99 language levels
cls | nocls
C++ classes
cmp | nocmp
Possible redundancies in unsigned comparisons
cnd | nocnd
Possible redundancies or problems in
conditional expressions
cns | nocns
Operations involving constants
cnv | nocnv
Conversions
dcl | nodcl
Consistency of declarations
eff | noeff
Statements and pragmas with no effect
enu | noenu
Consistency of enum variables
ext | noext
Unused external definitions
gen | nogen
General diagnostic messages
gnr | nognr
Generation of temporary variables
got | nogot
Use of goto statements
ini | noini
Possible problems with initialization
lan | nolan
Language level effects
obs | noobs
Obsolete features
ord | noord
Unspecified order of evaluation
par | nopar
Unused parameters
por | nopor
Non-portable language constructs
ppc | noppc
Possible problems with using the preprocessor
ppt | noppt
Trace of preprocessor actions
pro | nopro
Missing function prototypes
rea | norea
Code that cannot be reached
ret | noret
Consistency of return statements
trd | notrd
Possible truncation or loss of data or
precision
tru | notru
Variable names truncated by the compiler
trx | notrx
Rounding of hexadecimal floating-point
constants
uni | nouni
Uninitialized variables
upg | noupg
Upgrade issues from one release to the next
release
use | nouse
(C++) Unused auto and static variables
vft | novft
(C++) Generation of virtual function tables in
C++ programs
zea | nozea
Zero-extent arrays
Default:
(C) -qnoinfo
(C++) -qinfo=lan:trx
If -qinfo is specified without a suboption, the
default is -qinfo=all for C and -qinfo=all:noppt
for C++.
-qinitauto=<hex_value> | -qnoinitauto
Initializes each byte or word of storage for
automatic variables to the specified hexadecimal
value <hex_value>. This generates extra code and
should only be used for error determination.
Default: -qnoinitauto
-qkeepparm | -qnokeepparm
Ensures that function parameters are stored on the
stack even if the application is optimized. As a
result, parameters remain in the expected memory
location, providing access to the values of these
incoming parameters to tools such as debuggers.
Default: -qnokeepparm
-qlinedebug | -qnolinedebug
Generates only abbreviated line number and source
file name information for the debugger.
Default: -qnolinedebug
-qmaxerr=<num>[:<sev>] | -qnomaxerr
Instructs the compiler to halt compilation when the
specified number of errors of the specified
severity (by default, the value of -qhalt) or
greater is reached. <num> must be an integer. The
severity levels, <sev>, are:
i = informational
w = warning
e = error (C only)
s = severe error
Default: -qnomaxerr
-qoptdebug | -qnooptdebug
When used with high levels of optimization,
-qoptdebug produces source files containing
optimized pseudocode that can be read by a
debugger.
An output file with a .optdbg extension is created
for each input file compiled with -qoptdebug. You
can use the information contained in this file to
help you understand how your code actually behaves
under optimization.
Default: -qnooptdebug
-qsymtab={unref|static}
(C) Determines what types of information appear in
the symbol table. The suboptions are:
unref
Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for processing by the debugger.
static
Adds user-defined, non-external names that
have a persistent storage class (such as
initialized and uninitialized static
variables) to the name list.
Default:
The default is to not add static variables to
the symbol table.
-qsyntaxonly
(C) Performs syntax checking without generating an
object file.
Default:
By default, source files are compiled and
linked to generate an executable file.
-qwarn64 | -qnowarn64
Enables checking for possible data conversion
problems between 32-bit and 64-bit compiler modes.
Default: -qnowarn64
Listing and messages options
-qattr[=full] | -qnoattr
Produces a compiler listing that includes an
attribute listing for all identifiers. If -qattr is
specified, the listing contains only those
identifiers that are used. If -qattr=full is
specified, the listing contains all names. If
-qnoattr is specified, no listing is produced.
Default: -qnoattr
-qdump_class_hierarchy
(C++) For each class object, this option dumps a
representation of its hierarchy and virtual
function table layout to a file. The file name is
created by appending ".class" to the source file
name.
-qflag=<listing_severity>:<terminal_severity>
Defines the minimum severity level of diagnostic
messages to be written to the listing file and to
the user terminal. <listing_severity> is the
minimum level for the listing file, and
<terminal_severity> is the minimum level for the
terminal. The message severity levels are:
i = informational messages
w = warning messages
e = error, severe error and unrecoverable error
messages (C only)
s = severe error and unrecoverable error messages
(C)
s = severe error messages (C++)
Default: -qflag=i:i
-qlist[={offset|nooffset}] | -qnolist
Produces a compiler listing that includes an object
listing. You can use the object listing to help
understand the performance characteristics of the
generated code and to diagnose execution problems.
offset | nooffset
Changes the offset of the PDEF header from
00000 to the offset of the start of the text
area.
Specifying -qlist without the suboption is
equivalent to list=nooffset.
Default: -qnolist
-qlistopt | -qnolistopt
Produces a compiler listing that displays all the
options that were in effect when the compiler was
invoked.
Default: -qnolistopt
-qphsinfo | -qnophsinfo
Reports the time taken in each compilation phase.
Phase information is sent to standard output. The
output takes the form <number1>/<number2> for each
phase where <number1> represents the CPU time used
by the compiler and <number2> represents the total
of the compiler time and the time that the CPU
spends handling system calls.
Default: -qnophsinfo
-qprint | -qnoprint
Enables or suppresses listings. Specifying
-qnoprint overrides all listing-producing options,
regardless of where they are specified, to suppress
listings.
Default: -qprint
-qreport | -qnoreport
Instructs the compiler to produce transformation
reports that show how program loops are optimized.
The transformation reports are included as part of
the compiler listing. This option requires -qhot or
-qsmp in order to have effect.
When used with -qipa=clonearch, -qreport produces
transformation reports on the procedures that are
cloned for the architectures specified by the
option.
Default: -qnoreport
-qshowinc[=<types_list>] | -qnoshowinc
Used with -qsource to selectively show user header
files (includes using " ") or system header files
(includes using < >) in the program source listing.
<types_list> is a colon-separated list of one or
more of the following types:
usr | nousr
Specifies whether to show user include files.
sys | nosys
Specifies whether to show system include
files.
all
Shows both user and system include files.
Default: -qnoshowinc
-qsource | -qnosource
Produces a compiler listing that includes source
code.
Default: -qnosource
-qsrcmsg | -qnosrcmsg
(C) Adds the corresponding source code lines to the
diagnostic messages in the stderr file.
Default: -qnosrcmsg
-qsuppress=<msg_id> | -qnosuppress=[<msg_id>]
Prevents the specified compiler or driver
informational or warning messages from being
displayed or added to the listings, where <msg_id>
is a colon-separated list of message numbers to
suppress or display.
NOTE: In (C++), -qnosuppress requires that you
supply message number(s), and in (C), -qnosuppress
does not allow you to supply any.
Default: -qnosuppress
-v Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a comma-separated list.
-V Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a space-separated list.
-qversion[=verbose]
Displays the official compiler product name and the
compiler version found on the system.
verbose
Additionally displays information about the
version, release, and level of each compiler
component installed.
-w Suppresses informational, language-level and
warning messages.
Specifying this option is equivalent to specifying
-qflag=e:e in C or -qflag=s:s in C++.
-qxref[=full] | -qnoxref
Specifies whether to produce a compiler listing
that includes a cross-reference listing of all
identifiers. Specifying -qxref will report only
identifiers that are used, -qxref=full reports all
identifiers in the program, and -qnoxref does not
report any identifiers in the program. The
-qnoprint option overrides this option.
Default: -qnoxref
Optimization and tuning options
-qaggrcopy={overlap|nooverlap}
Enables destructive copy operations for structures
and unions.
overlap | nooverlap
Enables or disables optimizations for
structure and union assignments. nooverlap
assumes that the source and destination for
structure and union assignments do not
overlap, allowing the compiler to generate
faster code. overlap inhibits these
optimizations.
Default: -qaggrcopy=nooverlap
-qalias=<suboptions_list>
Specifies the aliasing assertions to be applied to
your compilation unit. <suboptions_list> is a
colon-separated list of the following options:
addrtaken | noaddrtaken
Variables are disjoint from pointers unless
their address is taken.
allptrs | noallptrs
Pointers are never aliased if allptrs is
specified, but may be aliased if noallptrs is
specified. -qalias=allptrs implies
-qalias=typeptr.
ansi | noansi
If ansi is specified, type-based aliasing is
used during optimization, which restricts the
lvalues that can be safely used to access a
data object. This option has no effect unless
you also specify the -O option.
Specifying -qalias=noansi turns off type-based
aliasing completely.
global | noglobal
When global is in effect, type-based aliasing
rules are enabled during IPA link-time
optimization across compilation units. Both
-qipa and -qalias=ansi must be enabled for
-qalias=global to have an effect.
Specifying noglobal disables type-based
aliasing rules across compilation units.
restrict | norestrict
When restrict is in effect, optimizations for
pointers qualified with the restrict keyword
are enabled. Specifying norestrict disables
optimizations for restrict-qualified pointers.
-qalias=restrict is independent from other
-qalias suboptions.
typeptr | notypeptr
Pointers to different types are never aliased
if typeptr is specified, but may be aliased if
notypeptr is specified.
Default:
(C++)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
(C)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
for all invocation commands except cc.
-qalias=noaddrtaken:noallptrs:noansi:global:restrict:notypeptr
for the cc invocation command.
-qarch=<suboption>
Specifies the general processor architecture for
which the code (instructions) should be generated.
In general, the -qarch option allows you to target
a specific architecture for the compilation. For
any given -qarch setting, the compiler defaults to
a specific, matching -qtune setting, which can
provide additional performance improvements. The
suboptions are:
auto
Automatically detects the specific
architecture of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
403
Produces object code containing instructions
that will run on the PowerPC 403 hardware
platform.
604
Produces an object that contains instructions
that run on PowerPC 604 systems.
pwr3
Produces an object that contains instructions
that run on the POWER3 hardware platforms.
pwr4
Produces an object that contains instructions
that run on the POWER4 hardware platforms.
pwr5
Produces an object that contains instructions
that run on the POWER5 hardware platforms.
pwr5x
Produces an object that contains instructions
that run on the POWER5+ hardware platforms.
pwr6
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 architected mode. If you
would like support for decimal floating-point
instructions, be sure to specify this
suboption during compilation.
pwr6e
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 raw mode.
ppc
Produces an object that contains instructions
that run on any of the 32-bit PowerPC hardware
platforms. Using -q64 with ppc upgrades the
architecture to ppc64.
ppc64
Produces object code that will run on any 64-
bit PowerPC hardware platform. When compiled
in 32-bit mode, the resulting object code may
include instructions that are not recognized
or behave differently when run on 32-bit
PowerPC platforms.
ppcgr
In 32-bit mode, produces object code
containing optional graphics instructions for
PowerPC hardware platforms.
In 64-bit mode, produces object code
containing optional graphics instructions that
will run on 64-bit PowerPC platforms, but not
on 32-bit-only platforms. Using -q64 with
ppcgr upgrades the architecture to ppc64gr.
ppc64gr
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics instructions.
ppc64grsq
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics and square root
instructions.
ppc64v
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional vector instructions, such as a
PowerPC 970.
ppc970
Generates instructions specific to PowerPC 970
processors.
rs64a
Produces an object that contains instructions
that run on an RS64I hardware platform.
rs64b
Produces an object that contains instructions
that run on an RS64II hardware platform.
rs64c
Produces an object that contains instructions
that run on an RS64III hardware platform.
Default: -qarch=ppc
-qcache=<suboptions_list>
Describes the cache configuration for a specific
target execution machine, where <suboptions_list>
is a colon-separated list of one or more of the
following suboptions:
assoc=<number>
Specifies the set associativity of the cache,
where <number> is one of the following:
0 Direct-mapped cache
1 Fully associative cache
(number > 1) n-way set associative cache
auto
Automatically detects the specific cache
configuration of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
cost=<cycles>
Specifies the performance penalty, in CPU
cycles, resulting from a cache miss.
level=<level>
Specifies which level of cache is affected,
where level is one of the following::
1 Basic cache
2 Level-2 cache
3 Table Lookaside Buffer (TLB)
If a machine has more than one level of cache,
use a separate -qcache option.
line=<bytes>
Specifies the line size of the cache.
size=<Kbytes>
Specifies the total size of the cache.
type=<cache_type>
The settings apply to the specified type of
cache, where <cache_type> is one of the
following:
C or c = Combined data and instruction
cache
D or d = Data cache
I or i = Instruction cache
Default:
The -qtune setting determines the optimal
default -qcache settings for most typical
compilations. -O4, -O5, or -qipa must be
specified with the -qcache option.
-qcompact | -qnocompact
Reduces code size where possible, at the expense of
execution speed. Code size is reduced by inhibiting
optimizations that replicate or expand code inline.
This option takes effect only if -O2 or higher is
also used.
Default: -qnocompact
-qdataimported[=<variable_names>]
Specifies variables that the compiler can assume
are imported. <variable_names> is a colon-separated
list of variables. Specifying -qdataimported
without <variable_names> instructs the compiler to
assume that all variables are imported. This is
equivalent to specifying -qnotocdata.
(C++) Variable names must be specified using their
mangled names.
-qdatalocal[=<variable_names>]
Specifies variables that the compiler can assume
are local. <variable_names> is a colon-separated
list of variables. Specifying -qdatalocal with no
variables instructs the compiler to assume that all
variables are local. This is equivalent to
specifying -qtocdata.
(C++) Variable names must be specified using their
mangled names.
-qtocdata | -qnotocdata
Marks all data as local.
Default: -qnotocdata (marks all data as imported)
-qdirectstorage | -qnodirectstorage
Informs the compiler that write-through-enabled or
cache-inhibited storage may be referenced.
Default: -qnodirectstorage
-qenablevmx | -qnoenablevmx
Enables the generation of vector instructions for
processors that support them. These instructions
can offer higher performance when used with
algorithmic-intensive tasks such as multimedia
applications.
For -qenablevmx to have effect, the architecture
specified by the -qarch option must support vector
instructions.
If -qnoenablevmx is in effect, -qaltivec,
-qvecnvol, and -qhot=simd cannot be used.
Default: -qnoenablevmx
-qfdpr | -qnofdpr
Collects information about programs for use with
the IBM Feedback Directed Program Restructuring
(FDPR) performance-tuning utility.
Default: -qnofdpr
-qhot[=<suboption>] | -qnohot
Specifies whether or not to perform high-order
transformations during optimization. The suboptions
are:
arraypad[=<number>] | noarraypad
When <number> is specified, the compiler will
pad every array in the code. The pad amount
must be a positive integer value. Otherwise,
the compiler will pad any arrays where it
infers that there may be a benefit.
level={0|1}
Specifies the level of high-order
transformation to perform during compilation.
0
The compiler performs a subset of the
high-order transformations. Some of these
include early distribution, loop
interchange, and loop tiling, as
examples. Optimization level -O3 implies
-qhot=level=0.
1
At level=1, full high-order
transformation is performed.
-qhot=level=1 is equivalent to -qhot and
the compiler options that imply -qhot
also imply -qhot=level=1, unless
-qhot=level=0 is explicitly specified.
simd | nosimd
Converts certain operations in a loop that
apply to successive elements of an array into
a vector instruction. This call calculates
several results at one time, which is faster
than calculating each result sequentially. If
you specify -qhot=nosimd, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with vector
instructions. To enable -qhot=simd, you must
specify an architecture that supports vector
instructions.
vector | novector
When specified with -qnostrict and -qignerrno,
or an optimization level of -O3 or higher
(otherwise -qhot=vector has no effect), the
compiler converts certain operations in a loop
that apply to successive elements of an array
into a call to a routine in the Mathematical
Acceleration Subsystem (MASS) library, part of
the libxlopt.a library.
If you specify -qhot=novector, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with calls
to vector library routines.
Specifying -qhot without suboptions implies
-qhot=nosimd, -qhot=noarraypad, -qhot=vector and
-qhot=level=1. The -qhot option is also implied by
-qsmp, -O4, and -O5.
Default: -qnohot
-qignerrno | -qnoignerrno
Allows the compiler to perform optimizations that
assume errno is not modified by system calls.
Default: -qnoignerrno
-qipa[=<suboptions_list>] | -qnoipa
Turns on or customizes a class of optimizations
known as interprocedural analysis (IPA).
<suboptions_list> is a colon-separated list of the
following suboptions:
clonearch=<arch_name> | noclonearch
Specifies the architectures for which multiple
versions of the same instruction set are
produced, where <arch_name> is a comma-
separated list of architecture names. Use this
suboption if you require optimal performance
on multiple differing machines running the
same copy of your application.
cloneproc=<function_name> |
nocloneproc=<function_name>
Specifies the name of the functions to clone
for the architectures specified by the
clonearch suboption, where <function_name> is
a comma-separated list of function names.
exits=<procedures>
Specifies names of functions which represent
program exits. <procedures> is a comma-
separated list of procedures.
infrequentlabel=<procedures>
Specifies a comma-separated list of user-
defined labels that are likely to be called
infrequently during a program run.
inline[=<suboption>]
Specifying 'inline' with no suboption asserts
that all appropriate procedures will be
inlined. <suboption> can be one of the
following:
auto|noauto
Enables or disables automatic function
inlining by the high-level optimizer.
When -qipa=inline=auto is in effect, the
compiler considers all functions that are
under the maximum size limit (see below)
for inlining. When -qipa=inline=noauto is
in effect, only procedures listed in the
<procedures> suboption are considered for
inlining.
<procedures>
Specifies a comma-separated list of
procedures to attempt to inline.
limit=<num>
Specifies a limit on the size of a
calling function after inlining. This
only takes effect when inline=auto is on.
If you do not specify a value for <num>,
<num> is 8192 by default.
threshold=<num>
Specifies the upper size limit on
procedures to inline. This only takes
effect when inline=auto is on. If you do
not specify a value for <num>, <num> is
1024 by default.
Default: auto
noinline[=<procedures>]
Specifies a comma-separated list of procedures
which are not to be inlined. Specifying
noinline without <procedures>, asserts that no
procedures are to be inlined.
isolated=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and do not
directly refer to any global variable.
level=<level>
Determines the amount of IPA analysis and
optimization performed, where <level> can be
equal to:
0
Performs only minimal interprocedural
analysis and optimization.
1
Turns on inlining, limited alias
analysis, and limited call-site
tailoring.
2
Full interprocedural data flow and alias
analysis.
Default: 1
list[={<file_name>|short|long}]
Specifies an output listing file name during
the link phase. The default name is "a.lst".
Specifying 'long' or 'short' can be used to
request more or less information in the
listing file to determine which listing
sections will be included.
Default: short
lowfreq=<procedures>
Specifies a comma-separated list of procedures
that are likely to be called infrequently
during the course of a typical program run.
malloc16 | nomalloc16
Informs the compiler that the dynamic memory
allocation routines will return 16-byte
aligned memory addresses. The compiler can
then optimize the code based on that
assertion.
Default: -qipa=malloc16
missing={unknown|safe|isolated|pure}
Specifies the default assumption for
procedures not compiled with -qipa.
unknown
Greatly restricts the amount of
interprocedural optimization for calls to
unknown functions.
safe
Functions which do not indirectly call a
visible (not missing) function either
through direct call or function pointer.
isolated
Functions which do not directly reference
global variables accessible to visible
functions.
pure
Functions which are safe and isolated and
which do not indirectly alter storage
accessible to functions.
Default: missing=unknown
object | noobject
Specifies whether to include standard object
code in the object files. Specifying
'noobject' can substantially reduce overall
compile time by not generating object code
during the first IPA phase.
partition={small|medium|large}
Specifies the size of program sections that
are analyzed together. Larger partitions may
produce better analysis but require more
storage.
Default: partition=medium
pure=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that are
"isolated", "safe", and do not modify any data
objects that are visible to the caller.
safe=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that do not call
any other part of the program.
threads[=<suboption>] | nothreads
Runs portions of the IPA optimization process
during pass 2 in parallel threads, which can
speed up the linking process on multi-
processor systems. <suboption> can be one of
the following:
auto | noauto
When auto is in effect, the compiler
selects a number of threads heuristically
based on machine load. When noauto is in
effect, the compiler spawns one thread
per machine processor.
<number>
Instructs the compiler to use a specific
number of threads. <number> can be any
integer value in the range of 1 to 32767.
However, <number> is effectively limited
to the number of processors available on
your system.
Specifying threads with no suboptions implies
threads=auto.
Default: -qipa=threads
unknown=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and that may
update global variables and dummy arguments
and call other parts of the program compiled
with -qipa.
<file_name>
Specifies the name of a file that contains
suboption information in a special format.
Regular expressions are supported when specifying
procedure names for these suboptions:
cloneproc, nocloneproc, exits, inline, noinline,
isolated, lowfreq, pure, safe, unknown.
(C++) In C++ programs, procedure names must be
given in mangled form.
Default:
-qnoipa
-qipa=inline=auto:level=1:missing=unknown:partition=medium:threads=auto
when -O4 is in effect.
-qipa=inline=auto:level=2:missing=unknown:partition=medium:threads=auto
when -O5 is in effect.
-qipa=inline=auto:level=0:missing=unknown:partition=medium:threads=auto
when -qpdf1 or -qpdf2 is in effect.
-qisolated_call=<procedures>
Informs the compiler that specific functions do not
have or rely on side effects, other than those
implied by their parameters. <procedures> is a
colon-separated list of function names.
-qlargepage | -qnolargepage
Indicates that a program, designed to execute in a
large page memory environment, can take advantage
of large 16 MB pages provided on POWER4 and later
systems.
Default: -qnolargepage
-qlibansi | -qnolibansi
Assumes that all functions with the name of an ANSI
C defined library function are, in fact, the
library functions.
Default: -qnolibansi
-qmaxmem=<size>
Limits the amount of memory used by certain
memory-intensive optimizations to <size> kilobytes.
When <size> is -1, the optimizer will use as much
memory as needed.
Default:
o -qmaxmem=8192 when -O2 level optimization is
set.
o -qmaxmem=-1 when -O3 level or greater
optimization is set.
-qminimaltoc | -qnominimaltoc
Avoids Table of Contents (TOC) overflow conditions
by placing TOC entries into a separate data section
for each object file. By default, the compiler will
allocate at least one TOC entry for each unique
non-automatic variable reference in your program.
Default: -qnominimaltoc
-O[<level>]
Optimizes code at a choice of levels during
compilation. This is equivalent to
-qoptimize[=<level>]. <level> can be:
0
Performs only quick local optimizations such
as constant folding and elimination of local
common subexpressions.
2
Performs optimizations that the compiler
developers considered the best combination for
compilation speed and runtime performance. The
optimizations may change from product release
to release.
3
Performs some memory and compile-time
intensive optimizations in addition to those
executed with -O2. The -O3 specific
optimizations have the potential to alter the
semantics of a program. The compiler guards
against these optimizations at -O2 and the
option -qstrict is provided at -O3 to turn off
these aggressive optimizations. Specifying -O3
implies -qhot=level=0.
4
This option is the same as -O3, but also:
o sets the -qarch and -qtune options to the
architecture of the compiling machine.
o sets the -qcache option most appropriate
to the characteristics of the compiling
machine.
5
Equivalent to -O4 -qipa=level=2.
Specifying -O with no <level> is equivalent to
specifying -O2.
Default: -O0
-qoptimize[=<level>] | -qnooptimize
The long form of the -O option. -qoptimize=<level>
is equivalent to -O<level>. See the -O option.
Default: -qnooptimize
-p, -pg, -qprofile={-p|-pg}
Sets up the object files produced by the compiler
for profiling.
-pg is like -p, but it produces more extensive
statistics.
-qpdf1[=pdfname=<file_path] | -qnopdf1
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf1 produces an object that is instrumented to
collect runtime execution information. This is
phase 1 of the profile-directed feedback
optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf1
-qpdf2[=pdfname=<file_path>] | -qnopdf2
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf2 tunes application performance using the data
generated by running a program compiled with
-qpdf1. This is phase 2 of the profile-directed
feedback optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf2
-qprefetch | -qnoprefetch
Enables generation of prefetching instructions such
as dcbt and dcbz in compiled code.
Default: -qprefetch
-qprocimported[=<procedures>] | -qnoprocimported
Specifies functions that the compiler can assume
are imported. Imported functions are dynamically
bound with a shared portion of a library. Code
generated for calls to functions marked as imported
may be larger, but is faster than the default code
sequence generated for functions marked as unknown.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qproclocal[=<procedures>] | -qnoproclocal
Specifies functions that the compiler can assume
are local. Local functions are statically bound
with the functions that call them; smaller, faster
code is generated for calls to such functions.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qprocunknown[=<procedures>] | -qnoprocunknown
Specifies functions that the compiler can assume
are unknown. Unknown functions are resolved to
either statically or dynamically bound objects
during linking. <procedures> is a colon-separated
list of function identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-Q[<suboption>]
(C++) Instructs the compiler to try to inline
functions. Inlining is performed if possible but,
depending on which optimizations are performed,
some functions might not be inlined.
(C) Specifies which specific functions the compiler
should attempt to inline. You must specify at least
an optimization level of -O2 for inlining to take
effect with -Q. To turn on inline expansion for
calls to procedures in different scopes, you must
also use the -qipa=inline.
(C++) In the C++ language, this option can take the
form:
-Q
Compiler inlines all functions that it can.
-Q!
Compiler does not inline any functions.
(C) In the C language, this option can take the
form:
-Q
Attempts to inline all appropriate functions
with 20 executable source statements or fewer,
subject to the setting of any of the
suboptions to the -Q option. If -Q is
specified last, all functions are inlined.
-Q!
Does not inline any functions. If -Q! is
specified last, no functions are inlined.
-Q-<names>
Does not inline functions listed in <names>,
where <names> is a colon-separated list. All
other appropriate functions are inlined. The
option implies -Q.
-Q+<names>
Attempts to inline the functions listed in
<names>, where <names> is a colon-separated
list. All other appropriate functions are
inlined.
-Q=<threshold>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <threshold> for
the function to be inlined.
Default: -Q!
-qinline[<suboption>] | -qnoinline
Specifies whether to attempt to inline functions
instead of generating calls to a function.
(C++) In C++, you cannot specify any suboptions.
-qinline specifies that all appropriate functions
should be inlined, and -qnoinline specifies that no
functions should be inlined.
(C) In C, this option can take the following forms:
-qinline
The compiler attempts to inline all
appropriate functions with 20 executable
source statements or fewer, subject to any
other settings of the suboptions to the
-qinline option.
-qinline+<procedures>
Attempts to inline the functions listed in
<procedures> and any other appropriate
functions, where <procedures> is a colon-
separated list.
-qinline-<procedures>
Specifies that functions listed in
<procedures> do not get inlined, where
<procedures> is a colon-separated list.
-qnoinline
Does not inline any functions.
-qinline=threshold=<num>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <num> for the
function to be inlined. <num> must be a
positive integer.
Default:
The default is to treat inline specifications
as a hint to the compiler, and the result
depends on other options that you select. If
you specify the -g option (to generate debug
information), inlining may be affected.
-qshowpdf | -qnoshowpdf
Used with -qpdf1 and a minimum optimization level
of -O2 to add additional call and block count
profiling information to an executable.
Default: -qnoshowpdf
-qsmallstack | -qnosmallstack
Reduces the size of the stack frame. This option is
only valid when used together with IPA (-qipa, -O4,
-O5 compiler options).
Default: -qnosmallstack
-qsmp[=<suboptions_list>] | -qnosmp
Enables parallelization of program code.
<suboptions_list> is a colon-separated list of one
or more of the following suboptions:
auto | noauto
Enables automatic parallelization and
optimization. If noauto is specified,
automatic parallelization of program code is
disabled; only program code explicitly
parallelized with OpenMP directives is
optimized.
Default: auto
nested_par | nonested_par
If nested_par is specified, prescriptive
nested parallel constructs are parallelized by
the compiler.
Default: nonested_par
omp | noomp
Enables strict OpenMP compliance. Only OpenMP
parallelization pragmas are recognized.
Default: noomp
opt | noopt
Enables automatic parallelization but disables
optimization of parallelized program code. If
noopt is specified, optimization of
parallelized program code is disabled.
Default: opt
rec_locks | norec_locks
Specifies whether to use recursive locks.
Default: norec_locks
schedule=<type>
Specifies what kinds of scheduling algorithms
and chunking are used for loops to which no
other scheduling algorithm has been explicitly
assigned in the source code. <type> can be:
o affinity[=<num>]
o dynamic[=<num>]
o guided[=<num>]
o runtime
o static[=<num>],
where <num> is the number of loop iterations.
Default: schedule=runtime
stackcheck | nostackcheck
Causes the compiler to check for stack
overflow by slave threads at run time, and
issue a warning if the remaining stack size is
less than the number of bytes specified by the
stackcheck option of the XLSMPOPTS environment
variable. This suboption is intended for
debugging purposes, and only takes effect when
XLSMPOPTS=stackcheck is also set.
Default: nostackcheck
threshold[=<num>]
When -qsmp=auto is in effect, controls the
amount of automatic loop parallelization that
occurs. The value of <num> represents the
lower limit allowed for parallelization of a
loop, based on the level of "work" present in
a loop.
Default:
<num> must be a positive integer of 0 or
greater. If you specify threshold with no
suboption, the program uses a default value
of 100.
Specifying -qsmp without suboptions is equivalent
to
-qsmp=auto:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100
or
-qsmp=opt:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100.
Default: -qnosmp
-qspeculateabsolutes | -qnospeculateabsolutes
Works with the -qtocmerge -bl:file for non-IPA
links and with the -bl:file for IPA links to
disable speculation at absolute addresses.
The bl:file is necessary for the compiler to know
which addresses are absolutes.
Default: -qspeculateabsolutes
-qstrict | -qnostrict
Turns off aggressive optimizations which have the
potential to alter the semantics of your program.
-qstrict sets -qfloat=nofltint:norsqrt. -qnostrict
sets -qfloat=rsqrt. This option is only valid with
-O2 or higher optimization levels.
Default:
o -qnostrict at -O3 or higher.
o -qstrict otherwise.
-qstrict_induction | -qnostrict_induction
Turns off loop induction variable optimizations
that have the potential to alter the semantics of
your program.
Default:
o -qnostrict_induction at -O2 or higher.
o -qstrict_induction otherwise.
-qtocmerge | -qnotocmerge
Enables TOC merging to reduce TOC pointer loads and
improves the scheduling of external loads. Reads
from the file specified in -bImportfile linker
option and merges the address information to access
ranges of external addresses using a single table
of contents entry.
Default: -qnotocmerge
-qtune=<suboption>
Specifies the architecture system for which the
executable program is optimized.
<suboption> must be one of the following:
403
Generates object code optimized for all the
PowerPC 403 processors.
604
Generates object code optimized for all the
PowerPC 604 processors.
auto
Generates object code optimized for the
hardware platform on which the program is
compiled.
balanced
Optimizations are tuned across a selected
range of recent hardware.
ppc970
Generates instructions specific to PowerPC 970
hardware platforms.
pwr3
Generates object code optimized for the POWER3
hardware platforms.
pwr4
Generates object code optimized for the POWER4
hardware platforms.
pwr5
Generates object code optimized for the POWER5
hardware platforms.
pwr6
Generates object code optimized for the POWER6
hardware platforms.
rs64a
Generates object code optimized for the RS64I
processor.
rs64b
Generates object code optimized for the RS64II
processor.
rs64c
Generates object code optimized for the
RS64III processor.
Default:
-qtune=balanced when the default -qarch
setting is in effect. Otherwise, the default
depends on the effective -qarch setting.
-qunroll[=<suboption>] | -qnounroll
Unrolls inner loops in the program. This can help
improve program performance. The suboptions are:
auto
Instructs the compiler to perform basic loop
unrolling.
yes
Instructs the compiler to search for more
opportunities for loop unrolling than that
performed with auto. In general, this
suboption is more likely to increase compile
time or program size than auto processing, but
it may also improve your application's
performance.
no
Instructs the compiler to not unroll loops.
Default: -qunroll=auto
If -qunroll is specified with no suboptions, the
compiler assumes -qunroll=yes. -qnounroll is
equivalent to -qunroll=no.
-qunwind | -qnounwind
Informs the compiler that the stack can be unwound
while a routine in the compilation is active.
Specifying -qnounwind can improve the optimization
of non-volatile register saves and restores.
Default: -qunwind
Linking options
-b{dynamic|shared|static}
Controls how shared objects are processed by the
linkage editor. The suboptions are:
dynamic, shared
Causes the linker to process subsequent shared
objects in dynamic mode. In dynamic mode,
shared objects are not statically included in
the output file. Instead, the shared objects
are listed in the loader section of the output
file.
-bdynamic and -bshared are synonymous.
static
Causes the linker to process subsequent shared
objects in static mode. In static mode, shared
objects are statically linked in the output
file.
Default: -bshared
-bmaxdata:<bytes>
Specifies the maximum amount of space to reserve
for the program data segment for programs where the
size of these regions is a constraint. Combined
data space is slightly less than 256MB, or lower,
depending on the limits for the user ID.
Default: -bmaxdata:0
-brtl Controls runtime linking for the output file.
-qcrt | -qnocrt
Instructs the linker to use the standard system
startup files at link time.
Default: -qcrt
-e <name>
Sets the entry name for a shared executable and is
only used together with -qmkshrobj.
-f<file_name>
Names a file to store a list of object files for
the compiler to pass to the linker. The <file_name>
file should contain only the names of object files.
There should be one object file per line.
-L<dir>
Searches the path directory for library files
specified by the -l<key> option.
Default:
The default is to search only the standard
directories.
-l<key>
Searches the file lib<key>.so and then lib<key>.a
for dynamic linking, or only lib<key>.a for static
linking.
Default:
The default is to search only some of the
compiler runtime libraries.
-qlib | -qnolib
Specifies whether the compiler should use the
standard system libraries at link time. -qnolib is
similar to the gcc option nostdlib; the driver will
not pass the standard system startup files or
libraries when linking.
Default: -qlib
-qtwolink | -qnotwolink
(C++) Links twice in order to minimize the number
of static constructors included from libraries and
object files.
Default: -qnotwolink
-Z<prefix>
This linker option specifies a prefix for the
library search path. This is useful when developing
a new version of a library.
Portability and migration options
-qalign=<suboption>
Specifies what aggregate alignment rules the
compiler uses for file compilation, where the
alignment suboptions are:
bit_packed
The compiler uses the bit_packed alignment
rules.
full
The compiler uses the RISC System/6000
alignment rules. This is the same as power.
mac68k
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the twobyte
suboption.
natural
The compiler maps structure members to their
natural boundaries.
packed
The compiler uses the packed alignment rules.
power
The compiler uses the RISC System/6000
alignment rules.
twobyte
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the mac68k
suboption.
Default: -qalign=full
-qalignrulefor=power=[no]typedefrespectsrule
(C++) When used with -qalign=power, determines
whether a 4-byte alignment ceiling is applied to
non-first members of structures that are of type
typedef to array of element type that exceeds the
alignment ceiling.
typedefrespectsrule | notypedefrespectsrule
When typedefrespectsrule is in effect, the
member follows the normal alignment rules for
-qalign=power. This suboption provides
compatibility with code compiled with
-qalign=power with XL C++ V6.0 and earlier.
When notypedefrespectsrule is in effect, a
member that exceeds the alignment ceiling of 4
bytes is aligned on 4-byte boundaries. This
suboption provides compatibility with code
compiled with -qalign=power with XL C++ V7.0
and V8.0.
Default: -qalignrulefor=power=typedefrespectsrule
-qgenproto[=parmnames] | -qnogenproto
(C) Generates ANSI prototypes from K&R function
definitions and displays them on standard output.
Specifying -qgenproto without '=parmnames' will
cause prototypes to be generated without parameter
names.
Default: -qnogenproto
-qnamemangling=<scheme>
(C++) Chooses the name mangling scheme for external
symbol names generated from C++ source code. The
<scheme> can be:
ansi
Fully supports the most recent language
features of Standard C++.
v9
Compatible with XL C++ V9.0.
v8
Compatible with XL C++ V8.0.
v7
Compatible with XL C++ V7.0.
v6
Compatible with VisualAge C++ V6.0.
v5
The scheme for VisualAge C++ V5.0.
v4
The scheme for VisualAge C++ V4.0.
v3
The scheme for VisualAge C++ releases before
V4.0.
compat
Same as v3.
Default: -qnamemangling=ansi
-qobjmodel={classic|ibm}
(C++) Specifies the object model.
classic
This object model is compatible with version
3.6 of the IBM C and C++ compilers.
ibm
Uses the object model introduced with version
5.0 of VisualAge C++ for AIX. Objects compiled
with this object model will use less memory
and have better performance for deep
inheritance with virtual bases.
Default: -qobjmodel=classic
-qoldpassbyvalue | -qnooldpassbyvalue
(C++) Specifies how classes containing const or
reference members are passed in function arguments.
All classes in the compilation unit are affected by
this option. When -qoldpassbyvalue is specified,
the compiler mimics the IBM C/C++ compilers v3.6
compiler in that when a class containing a const or
reference member is passed as a function argument,
it is not passed by value. All such classes in the
compilation unit are affected.
Default: -qnooldpassbyvalue
-qupconv | -qnoupconv
(C) Preserves the unsigned specification when
performing integral promotions.
Default:
o -qupconv when -qlanglvl={extended|classic}.
o -qnoupconv otherwise.
-qvecnvol | -qnovecnvol
Specifies whether to use volatile or non-volatile
vector registers. Volatile vector registers are
registers whose value is not preserved across
function calls or in the context of save, jump or
switch system library functions. If -qnoenablevmx
is enabled, this option is ignored.
Default: -qnovecnvol
Compiler customization options
-qasm_as=<asm_path> [<flags_list>]
Specifies the path and flags used to invoke the
assembler in order to handle assembler code in an
asm statement. <asm_path> is the full path to the
assembler to be used, and <flags_list> is a series
of one or more flags (and their arguments),
separated by spaces. Single quotes (or double
quotes) are required around the string of arguments
if any spaces exist.
-B[<prefix>]
Determines substitute path names for programs used
during compilation, such as the compiler,
assembler, linkage editor, and preprocessor, where
<prefix> can be any program name recognized by the
-t compiler option. The optional <prefix> defines
part of a path name to the new programs. The -t
parameter, <program>, specifies the program to
which the <prefix> is to be appended. When
specifying <prefix>, there must be a slash (/)
after the folder name.
-qc_stdinc=<paths_list>
(C) Changes the standard search location for the XL
C headers. <paths_list> is a colon-separated list
of paths to search.
-qcpp_stdinc=<paths_list>
(C++) Specifies the standard search directories for
the XL C++ headers, where <paths_list> is a colon-
separated list of paths.
-F[<config_file>][:<stanza>]
Names an alternative configuration file (.cfg) for
the compiler. <config_file> is the name of a
compiler configuration file. <stanza> is the name
of the command used to invoke the compiler. This
directs the compiler to use the entries under
<stanza> in the <config_file> to set up the
compiler environment. At least one of the arguments
must be supplied.
-qpath=<program>:<path>
Constructs alternate program names for compiler
components. The program and directory path
specified are used in place of the regular program.
<program> can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-qspill=<size>
Specifies the size of the register allocation spill
area in bytes.
Default: -qspill=512
-t<programs_list>
Applies the prefix from the -B option to the
specified programs in <programs_list>.
<programs_list> is a chain (i.e: -tbcI) of one or
more of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-W<program>,<options_list>
Gives the specified option(s) to the compiler
program, <program>. <options_list> is a comma-
separated list of one or more options. <program>
can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = c++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = linkage helper (C++ only)
p = Preprocessor
SEE ALSO
gxlc(1), gxlc++(1), c++filt(1), CreateExportList(1),
linkxlC(1), makeC++SharedLib(1), vacndi(1), vacppndi(1),
showpdf(1), mergepdf(1), resetpdf(1), cleanpdf(1).
For more information, refer to the following Web sites:
http://www.ibm.com/software/awdtools/xlcpp/library/
http://www.ibm.com/software/awdtools/xlcpp/support/
COPYRIGHT
Licensed Materials - Property of IBM.
IBM XL C/C++ Enterprise Edition for AIX, V9.0.
5724-S71
Copyright IBM Corp. 1991, 2007. All Rights Reserved.
AIX, IBM, POWER3, POWER4, POWER5, POWER5+, POWER6,
PowerPC, PowerPC 604 and SAA are trademarks or registered
trademarks of International Business Machines Corporation
in the United States, other countries, or both.
Windows is a trademarks of Microsoft Corporation in the
United States, other countries, or both.
US Government Users Restricted Rights - Use, duplication
or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
unlink: /ptmp/ddvento/xlcW0u-ieaa
unlink: /ptmp/ddvento/xlcW1u-ieab
unlink: /ptmp/ddvento/xlcW2u-ieac
configure:4292: $? = 249
configure:4299: xlC -V >&5
export XL_CONFIG=/etc/vac.cfg.53:xlC
less /usr/vacpp/exe/default_msg/vacpp.txt
xlc(1) IBM (2007) xlc(1)
NAME
xlc, xlc++, xlC, cc, c89, c99, xlCcore, xlc++core and
related commands - invoke the IBM XL C/C++ compiler.
SYNTAX
<invocation-command> [ <option> | <inputfile> ] ...
DESCRIPTION
The invocation commands compile C and C++ source files.
The commands and their recommended uses are described
below.
Invocations Usage (supported standards)
_________________________________________________________
xlc, xlc_r, xlc_r4, Compile C source files.
xlc_r7, xlc128, xlc128_r, (ANSI C89, ISO C99,
xlc128_r4, xlc128_r7 IBM language extensions)
xlc++, xlc++_r, xlc++_r4, Compile C++ source files.
xlc++_r7, xlc++128,
xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC, xlC_r,
xlC_r4, xlC_r7, xlC128,
xlC128_r, xlC128_r4,
xlC128_r7
cc, cc_r, cc_r4, cc_r7, Compile legacy code that
cc128, cc128_r, cc128_r4, does not conform to Standard
cc128_r7 C. (pre-ANSI C)
c89, c89_r, c89_r4, Compile C source files with
c89_r7, c89_128, c89_128_r, strict conformance to the
c89_128_r4, c89_128_r7 C89 standard. (ANSI C89)
c99, c99_r, c99_r4, Compile C source files with
c99_r7, c99_128, c99_128_r, strict conformance to the
c99_128_r4, c99_128_r7 C99 standard. (ISO 99)
xlc++core, xlc++core_r, Compile C++ source files
xlc++core_r7, xlc++core128, but the compiler will
xlc++core128_r, link only to the core of
xlc++core128_r7, xlCcore, the runtime library.
xlCcore_r, xlCcore_r7,
xlC128core, xlC128core_r,
xlC128core_r7
gxlc Accepts GNU C options, maps
them to their equivalent XL
C option, then invokes xlc.
gxlc++, gxlC Accepts GNU C/C++ options, maps
them to their equivalent XL
C++ option,then invokes xlc++.
The main difference between these commands is that they use different
default options (which are set in the configuration file
/etc/vac.cfg.XX, where XX represents the AIX version).
See the Compiler Reference for more information on these invocation
commands.
All invocations with a suffix of _r allow for thread-safe
compilation. Use these commands to create threaded
applications or to link programs that use multi-threading.
These commands also process assembler source files and
object files. The compiler calls the link editor to
produce a single executable or shared library, unless you
specify the compiler options that prevent object files
from being linked.
The input file may have any of the following suffixes:
.C, .cpp, .cxx, C++ source file
.cc, .cp, .c++
.c C source file
.i Preprocessed C or C++ source file
.a Archive file
.o Object file for ld command
.s Assembler source file
.S Assembler source file that
needs preprocessing
.so Shared object file
OPTIONS
Compiler options are categorized by their functions and
may be used to set the compiler behavior. Options can be
flag options or keyword options.
Keyword options are specified in one of the following
ways:
-q<option>
-q<option>=<suboption>
-q<option>=<suboption>:<suboption>
Keyword options with no suboptions represent switches that
may be either on or off. -qx turns the switch on, and
-qnox turns the switch off. For example, -qsource tells
the compiler to produce a source listing and -qnosource
tells the compiler not to produce a source listing.
Output control options
-c Instructs the compiler to pass source files to the
compiler only. The compiled source files are not
sent to the linker. This option produces an object
file, file_name.o, for each valid source file.
-C | -C!
Preserves or removes comments in preprocessed
output.
When -C is used with the -E option, comments are
written to standard output; with the -P option,
comments are written to an output file.
When -C! is in effect, comments are removed.
-E Instructs the compiler to preprocess the source
files named in the compiler invocation and creates
an output preprocessed source file.
-G Tells the linkage editor to create a shared object
enabled for runtime linking.
-M Creates an output file that contains information to
be included in a "make" description file. This is
equivalent to specifying -qmakedep without a
suboption.
-qmakedep[=gcc]
Creates an output file that contains targets
suitable for inclusion in a description file for
the make command that describes the dependencies of
the main source file in the compilation.
Specifying 'gcc' changes the format of the
generated dependency file.
Specifying -qmakedep without 'gcc' is equivalent to
specifying -M.
-MF<path>
Specifies the target for the output generated by
the -qmakedep or -M options, where <path> can be a
full directory path or file name. Note that "-MF
<path>" (with a space before the argument) is also
acceptable. This option only has effect when
specified with -qmakedep or -M.
(C)-qmkshrobj, (C++)-qmkshrobj[=<priority>]
Creates a shared object from the generated object
files.
The optional number specifies the priority level
for initialization of all static objects in the
file. <priority> may be any number from -214782623
(highest priority-initialized first) to 214783647
(lowest priority-initialized last). If no priority
is specified, the default priority of 0 is used.
The priority is not used when linking shared
objects (using the xlc command) written in C.
Specifying -qmkshrobj implies -qpic.
See related options, -e <name> and -o <path>.
-o <path>
Specifies an output location for the object,
assembler, or executable files created by the
compiler. When the -o option is used during
compiler invocation, <path> can be the name of
either a file or a directory.
Default: -o a.out
-P Preprocesses the C or C++ source files named in the
compiler invocation and creates an output
preprocessed source file for each input source
file. The preprocessed output file has the same
name as the output file, with a .i suffix.
-S Generates an assembler language file (.s) for each
source file. The resulting .s files can be
assembled to produce object .o files or an
executable file (a.out).
Input control options
-+ (C++) Compiles any file, <file_name.nnn>, as a C++
language file, where <nnn> is any suffix other than
.a, .so, .o, .s, or .S. This option is equivalent
to the -qsourcetype=c++ option and should not be
used together with the -qsourcetype option.
-qcinc=<directory_path> | -qnocinc
(C++) Instructs the compiler to place an extern "C"
{ } wrapper around the contents of an include file,
where <directory_path> is the location of that
include file.
Default: -qnocinc
-I<directory_path>
Specifies an additional search path for include
file names that do not specify an absolute path.
Default:
The following directories are searched, in the
following order, after any paths that are
specified by the -I option:
1) The current directory.
2) The directory where the source file is
located.
3) /usr/include.
-qidirfirst | -qnoidirfirst
Specifies the search order for files included with
the #include "<file_name>" directive. Use
-qidirfirst with the -I option. If -qidirfirst is
specified, the directories specified by the
-I<directory_path> option are searched before the
directory in which the current file resides.
Default: -qnoidirfirst
-qinclude=<file_path>
Specifies additional header files that are included
before the first line of a source file in a
compilation unit and ahead of any headers which may
be specified by an #include statement on the first
line of the source file.
-qsourcetype=<type>
Determines whether to treat all recognized source
files as if they are of the source type specified
by <type> (regardless of file name suffix), or
whether to use the file name suffix to determine
the programming language.
Note that the option only affects files that are
specified on the command line following the option,
but not those that precede the option. The
-qsourcetype option should not be used together
with the -+ option. The suboptions are:
default
The compiler assumes that the programming
language of a source file will be implied by
its file name suffix.
c
The compiler compiles all source files
following this option as if they are C
language source files.
assembler
The compiler compiles all source files
following this option as if they are assembler
language source files.
assembler-with-cpp
The compiler compiles all source files
following this option as if they are assembler
language source files that need preprocessing.
Default: -qsourcetype=default
-qstdinc | -qnostdinc
Specifies whether the standard directories are
searched for files included by the #include
<file_name> and #include "file_name" directives.
The -qnostdinc option excludes the standard include
directories from the search path.
Default: -qstdinc
Language element control options
-qaltivec | -qnoaltivec
Instructs the compiler to support vector data types
and operators and is accepted when the architecture
specified by the -qarch option supports vector
instructions and -qenablevmx is enabled.
Default: -qnoaltivec
-qasm[=<sub>] | -qnoasm[=<sub>]
Controls the interpretation of, and subsequent
generation of code for, asm statements.
In (C), <sub> can only be 'gcc'.
In (C++), <sub> can be:
gcc
Interprets asm statements using GCC syntax.
stdcpp
Interprets asm statements using stdcpp syntax.
Default:
(C++) -qnoasm=stdcpp in compat366 or strict98
modes, and -qasm=gcc otherwise.
(C) -qasm=gcc
-qcpluscmt | -qnocpluscmt
(C) Permits the usage of "//" to introduce a
comment that lasts until the end of the current
source line, as in C++.
Default:
o -qcpluscmt when you invoke the compiler with
xlc, xlc_r, cc, or cc_r, or when -qlanglvl is
set to stdc99 or extc99.
o -qnocpluscmt otherwise.
-D<name>[=[<def>]]
Defines <name> as in the #define directive. <def>
is an optional definition or value assigned to
<name>. Specifying -D<name>= (with no <def>) is
equivalent to #define <name>; specifying
-D<name> is equivalent to #define <name> 1.
-qdbcs | -qnodbcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qmbcs.
Default: -qnodbcs
-qdfp | -qnodfp
Enables compiler support for decimal floating-point
types and literals.
Default: -qnodpf
-qdigraph | -qnodigraph
Allows usage of digraph key combinations or
keywords to represent characters not found on some
keyboards.
Default:
(C) -qdigraph when -qlanglvl is extc89,
extended, extc99 or stdc99, and -qnodigraph
otherwise.
(C++) -qdigraph
-qdollar | -qnodollar
Allows the '$' symbol to be used in the names of
identifiers. When -qdollar is in effect, the dollar
symbol '$' in an identifier is treated as a base
character. If the options -qnodollar and
-qlanglvl=ucs are both enabled, the dollar symbol
is treated as an extended character.
Default: -qnodollar
-qignprag=<option>
Instructs the compiler to ignore certain pragma
statements. The options are:
disjoint
Ignores all #pragma disjoint directives in the
source file.
isolated_call
Ignores all #pragma isolated_call directives
in the source file.
all
Ignores all #pragma isolated_call directives
and #pragma disjoint directives in the source
file.
omp
Ignores all OpenMP parallel processing
directives in the source file.
ibm
(C) Ignores all #pragma ibm snapshot
directives and all IBM SMP directives in the
source file.
-qkeyword=<keyword> | -qnokeyword=<keyword>
Controls whether the specified name is treated as a
keyword or as an identifier whenever it appears in
a program source.
By default, all the built-in keywords defined in
the C and C++ language standards are reserved as
keywords. You cannot add keywords to the language
with this option. However, you can use
-qnokeyword=<keyword> to disable built-in keywords,
and use -qkeyword=<keyword> to reinstate those
keywords.
(C) This option can also be used with the following
C keywords: restrict, typeof, asm and inline.
(C++) This option can be used with all C++ built-in
keywords.
-qlanglvl=<suboptions_list>
Selects the language level and language options for
the compilation. <suboptions_list> is a colon-
separated list of suboptions.
(C) For C language programs, <suboptions_list> is
{classic|extended|saa|saa12|stdc89|stdc99|extc89|extc99}:{ucs|noucs}.
classic
Allows the compilation of non-stdc89 programs,
and conforms closely to the K&R level
preprocessor.
extended
Provides compatibility with the RT compiler
and classic. This language level is based on
C89.
saa
Compilation conforms to the current SAA(R) C
CPI language definition. This is currently SAA
C Level 2.
saal2
Compilation conforms to the SAA C Level 2 CPI
language definition, with some exceptions.
stdc89
Compilation conforms to the ANSI C89 standard,
also known as ISO C90.
stdc99
Compilation conforms to the ISO C99 standard.
extc89
Compilation conforms to the ANSI C89 standard,
and accepts implementation-specific language
extensions.
extc99
Compilation conforms to the ISO C99 standard,
and accepts implementation-specific language
extensions.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in program
source code.
Default:
o -qlanglvl=ucs under language levels stdc99
and extc99.
o -qlanglvl=noucs for all other language
levels.
(C++) The suboptions for C++ language programs are:
compat366
Compilation conforms to some, but not all, IBM
C and C++ Compilers V3.6 features.
extended
Compilation is based on the strict98, with
some differences to accommodate extended
language features.
strict98
Compilation conforms to the ISO C++ standard
for C++ programs.
anonstruct | noanonstruct
This suboption controls whether anonymous
structs and anonymous classes are allowed in
your C++ source. By default, the compiler
allows anonymous structs.
anonunion | noanonunion
This suboption controls what members are
allowed in anonymous unions. When this
suboption is set to anonunion, anonymous
unions can have members of all types that
standard C++ allows in non-anonymous unions.
ansifor | noansifor
This suboption controls whether scope rules
defined in the C++ standard apply to names
declared in for-init statements. By default,
standard C++ rules are used.
ansisinit | noansisinit
This suboption can be used to select between
old (v3.6 or earlier) and current (v5.0 or
later) compiler object compatibility.
c99__func__ | noc99__func__
This suboption instructs the compiler to
recognize the C99 __func__ identifier.
The c99__func__ suboption is enabled by
default when -qlanglvl=extended is enabled. It
can be enabled for any language level by
specifying -qlanglvl=c99__func__, or disabled
by specifying -qlanglvl=noc99__func__.
c99complex | noc99complex
This suboption instructs the compiler to
recognize C99 complex data types and related
keywords. It is set by default for
-qlanglvl=extended.
c99complexheader | noc99complexheader
This suboption instructs the compiler to use
the C99 complex.h header file.
c99compoundliteral | noc99compoundliteral
This suboption instructs the compiler to
support the C99 compound literal feature. It
is set by default for -qlanglvl=extended.
c99hexfloat | noc99hexfloat
This suboption enables support for C99-style
hexadecimal floating constants in C++
applications. It is on by default for
-qlanglvl=extended.
c99vla | noc99vla
When c99vla is enabled, the compiler will
support the use of C99-type variable length
arrays in your C++ applications. It is set by
default for -qlanglvl=extended.
compatzea | nocompatzea
The -qlanglvl=compatzea option is a
compatibility option that lets you continue to
use a zero extent array with dimension of 1.
Default: -qlanglvl=nocompatzea
Specifying -qlanglvl=compatzea has effect only
if -qlanglvl=zeroextarray is also enabled.
dependentbaselookup | nodependentbaselookup
Provides the ability to specify compilation in
conformance with issue 213 of TC1 of the C++
standard.
Default: -qlanglvl=dependentbaselookup
gnu_assert | nognu_assert
Enables or disables support for the following
GNU C system identification assertions:
'#assert', '#unassert', '#cpu', '#machine',
'#system'.
gnu_complex | nognu_complex
This suboption instructs the compiler to
recognize GNU complex data types and related
keywords.
gnu_computedgoto | nognu_computedgoto
Enables support for computed gotos. This
suboption is enabled for -qlanglvl=extended.
gnu_explicitregvar | nognu_explicitregvar
(C) Allows you to control whether the compiler
accepts and ignores the specification of
explicit registers for variables.
gnu_externtemplate | nognu_externtemplate
This suboption enables or disables extern
template instantiations.
Default:
gnu_externtemplate is enabled by default
when compiling to the extended language
level.
gnu_include_next | nognu_include_next
Enables or disables support for the GNU C
#include_next preprocessor directive.
Default:
gnu_include_next is enabled by default for
-qlanglvl=extended.
gnu_labelvalue | nognu_labelvalue
Enables or disables support for labels as
values.
Default:
gnu_labelvalue is enabled by default for
-qlanglvl=extended.
gnu_locallabel | nognu_locallabel
Enables or disables support for locally-
declared labels.
gnu_membernamereuse | nognu_membernamereuse
Enables or disables reusing a template name in
a member list as a typedef.
gnu_suffixij | nognu_suffixij
Enables or disables support for GCC style
complex numbers. If gnu_suffixij is specified,
a complex number can be ended with suffix i/I
or j/J.
Default:
gnu_suffixij is enabled by default for
-qlanglvl=extended.
gnu_varargmacros | nognu_varargmacros
This option is similar to
-qlanglvl=varargmacros. For the list of the
main differences, refer to the Compiler
Reference.
Default:
gnu_varargmacros is set by default for
-qlanglvl=extended.
gnu_warning | nognu_warning
Enables or disables support for the GNU C
#warning preprocessor directive.
illptom | noillptom
This suboption controls what expressions can
be used to form pointers to members. C/C++ can
accept some forms that are in common use, but
do not conform to the C++ standard. The
compiler allows these forms by default.
implicitint | noimplicitint
This suboption controls whether the compiler
will accept missing or partially specified
types as implicitly specifying 'int'. This is
no longer accepted in the standard but may
exist in legacy code.
With the suboption set to noimplicitint, all
types must be fully specified.
With the suboption set to implicitint, a
function declaration at namespace scope or in
a member list will implicitly be declared to
return int.
newexcp | nonewexcp
This suboption determines whether or not the
C++ new operator throws an exception. If the
-qlanglvl=newexcp option is specified, the
standard exception std::bad_alloc is thrown
when the requested memory allocation fails.
This option does not apply to the nothrow
versions of the new operator.
The standard implementation of the new
operators fully support exceptions. For
compatibility with previous versions of
VisualAge C++, these operators return 0 by
default.
offsetnonpod | nooffsetnonpod
This suboption controls whether the offsetof
macro can be applied to classes that are not
data-only.
By default, the compiler allows offsetof to be
used with non-POD classes.
olddigraph | noolddigraph
This option controls whether old-style
digraphs are allowed in your C++ source. It
applies only when -qdigraph is also set.
By default, the compiler supports only the
digraphs specified in the C++ standard.
oldfriend | nooldfriend
This option controls whether friend
declarations that name classes without
elaborated class names are treated as C++
errors.
By default, the compiler lets you declare a
friend class without elaborating the name of
the class with the keyword class.
oldmath | nooldmath
This suboption controls which versions of math
function declarations in <math.h> are included
when you specify math.h as an included or
primary source file.
By default, the new standard math functions
are used. Build with -qlanglvl=nooldmath for
strict compliance with the C++ standard. For
compatibility with modules that were built
with earlier versions of VisualAge C++ and
predecessor products, you may need to build
with -qlanglvl=oldmath.
oldtempacc | nooldtempacc
This suboption controls whether access to a
copy constructor to create a temporary object
is always checked, even if creation of the
temporary object is avoided.
By default, the compiler suppresses the access
checking.
oldtmplalign | nooldtmplalign
Controls whether alignment rules specified for
nested templates are ignored.
When the default, -qlanglvl=nooldtmplalign, is
in effect, these alignment rules are not
ignored.
Specify -qlanglvl=oldtmplalign for
compatibility with VisualAge C++ 4.0 and
predecessor products.
oldtmplspec | nooldtmplspec
This suboption controls whether template
specializations that do not conform to the C++
standard are allowed.
By default, the compiler allows these old
specializations (-qlanglvl=nooldtmplspec).
redefmac | noredefmac
Specifies whether a macro can be redefined
without a prior #undef or undefine()
statement.
trailenum | notrailenum
This suboption controls whether trailing
commas are allowed in enum declarations.
By default, the compiler allows one or more
trailing commas at the end of the enumerator
list.
typedefclass | notypedefclass
This suboption provides backwards
compatibility with previous versions of
VisualAge C++ and predecessor products.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in C++
sources.
Default: -qlanglvl=noucs
varargmacros | novarargmacros
This C99 feature allows the use of a variable
argument list in function-like macros in your
C++ applications.
zeroextarray | nozeroextarray
This suboption controls whether zero-extent
arrays are allowed as the last non-static data
member in a class definition.
By default, the compiler allows arrays with
zero elements.
The default depends on the invocation command used:
Command Default
_____________________________________________
xlC/xlc++ extended
xlc extc99
cc extended
c89 stdc89
c99 stdc99
-qlonglong | -qnolonglong
Allows IBM-style long long integers. This option
cannot be used with -qlanglvl=stdc99 or
-qlanglvl=extc99.
Default:
o -qlonglong when compiling with xlc, xlc++,
xlC or cc.
o -qnolonglong when compiling with c89 or c99.
-qmacpstr | -qnomacpstr
Converts Pascal string literals into null-
terminated strings where the first byte contains
the length of the string.
Default: -qnomacpstr
-qmbcs | -qnombcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qdbcs.
Default: -qnombcs
-qstaticinline | -qnostaticinline
(C++) Controls whether inline functions are treated
as static or extern. Specifying -qnostaticinline
means the inline functions are treated as having
extern linkage.
Default: -qnostaticinline
-qtabsize=<size>
Changes the length of tabs as perceived by the
compiler, where <size> is the number of character
spaces representing a tab in the source program.
Default: -qtabsize=8
-qtrigraph | -qnotrigraph
Allows trigraph key combinations to represent
characters not found on some keyboards.
Default: -qtrigraph
However, if -qlanglvl=classic is enabled or
implied, the trigraphs are not recognized by
default.
-U<name>
Undefines the identifier <name> defined by the
compiler or by the -D<name> option.
-qutf | -qnoutf
Enables recognition of UTF literal syntax.
Default:
o (C) -qnoutf
o (C++) -qutf for all language levels except
-qlanglvl=strict98
o (C++) -qnoutf when -qlanglvl=strict98 is in
effect
Template control options (C++ only)
-qtempinc[=<directory_path>] | -qnotempinc
(C++) Generates separate template include files for
template functions and class declarations, and
places these files in a directory which can be
optionally specified.
Default: -qnotempinc
-qtemplatedepth=<number>
(C++) Specifies the maximum number of recursively
instantiated template specializations that will be
processed by the compiler. <number> can be a value
between 1 and INT_MAX.
Default: -qtemplatedepth=300
-qtemplaterecompile | -qnotemplaterecompile
(C++) Helps manage dependencies between compilation
units that have been compiled using the
-qtemplateregistry compiler option.
Default: -qnotemplaterecompile
-qtemplateregistry[=<filename>] | -qnotemplateregistry
(C++) Maintains records of all templates as they
are encountered in the source and ensures that only
one instantiation of each template is made.
Default: -qnotemplateregistry
-qtempmax=<number>
(C++) Specifies the maximum number of template
include files to be generated by the -qtempinc
option for each header file.
Default: -qtempmax=1
-qtmplinst=<suboption>
(C++) Allows you to manage implicit template
instantiations. <suboption> is one of the
following:
none
Instantiates only the inline functions. If
this is specified, -qtempinc and
-qtemplateregistry are ignored.
noinline
Suppresses all implicit instantiations.
auto
Handles the implicit instantiations according
to the -qtempinc and -qtemplateregistry
options. If both options are off, then
implicit instantiations are always performed.
always
Always perform implicit instantiations. This
will ignore the -qtempinc and
-qtemplateregistry options.
Default: -qtmplinst=auto
-qtmplparse=<option>
(C++) Controls whether parsing and semantic
checking are applied to template definition
implementations or only to template instantiations.
The compiler has the option to produce warning or
error messages. The suboptions are:
no
Does not parse, to reduce the number of errors
issued in code written for previous versions
of the compiler.
warn
Parses template definitions and issues warning
messages for semantic errors.
error
Treats problems in template definitions as
errors, even if the template is not
instantiated.
Default: -qtmplparse=no
Floating-point and integer control options
-qbitfields={signed|unsigned}
Specifies whether bit fields will be signed or
unsigned.
Default: -qbitfields=unsigned
-qchars={signed|unsigned}
Specifies whether the data type char will be signed
or unsigned.
Default: -qchars=unsigned
-qenum=<suboption>
Specifies the amount of storage occupied by
enumerations, where <suboption> can be:
small
Specifies that enumerations occupy the
smallest amount of space (1, 2, 4, or 8 bytes)
that can accurately represent the range of
values in the enumeration. Signage is
unsigned, unless the range of values includes
negative values.
int
Specifies that enumerations occupy 4 bytes and
are represented by int.
intlong
Specifies that enumerations occupy 8 bytes of
storage if the range of values in the
enumeration exceeds the limit for int.
Otherwise, the enumerations occupy 4 bytes of
storage and are represented by int.
1
Specifies that enumerations occupy 1 byte.
Type is signed or unsigned char.
2
Specifies that enumerations occupy 2 bytes.
Type is signed or unsigned short.
4
Specifies that enumerations occupy 4 bytes.
Type is signed or unsigned int.
8
Specifies that enumerations occupy 8 bytes.
Type is signed or unsigned long long in 32-bit
mode, and signed or unsigned long in 64-bit
mode.
Default: -qenum=intlong
-qfloat=<suboptions_list>
Specifies various floating-point suboptions. This
provides different strategies for speeding up or
improving the accuracy of floating-point
calculations. <suboptions_list> is a colon-
separated list of one or more of the following:
dfpemulate | nodfpemulate
Specifies whether decimal floating-point
computations are implemented in hardware
instructions or emulated in software by calls
to library functions.
-qdfp must be enabled for either suboption to
have any effect. nodfpemulate is only valid on
a system that supports decimal floating-point
instructions; that is, on AIX 5.3 and higher,
and with -qarch=pwr6 in effect. dfpemulate is
required for all other -qarch values.
Default: dfpemulate
fenv | nofenv
Specifies whether the code depends on the
hardware environment and whether to suppress
optimizations that could cause unexpected
results due to this dependency.
When nofenv is in effect, the compiler assumes
that the program does not depend on the
hardware environment, and that aggressive
compiler optimizations that change the
sequence of floating-point operations are
allowed to be performed. When fenv is in
effect, such optimizations are suppressed.
Default: nofenv
fltint | nofltint
Speeds up floating-point-to-integer
conversions by using faster inline code that
does not check for overflows. -qfloat=nofltint
checks floating-point-to-integer conversions
for out-of-range values.
Default:
o nofltint at -O2 optimization.
o fltint when -qnostrict or -O3 or higher
optimization level is in effect.
fold | nofold
Specifies that constant floating-point
expressions are to be evaluated at compile
time rather than at run time.
Default: fold
hscmplx | nohscmplx
Speeds up operations involving complex
division and complex absolute value. This
suboption, which provides a subset of the
optimizations of the hsflt suboption, is
preferred for complex calculations.
Default: nohscmplx
hsflt | nohsflt
The hsflt option speeds up calculations by
truncating instead of rounding computed values
to single precision before storing and on
conversions from floating-point to integer.
The nohsflt suboption specifies that single-
precision expressions are rounded after
expression evaluation and that floating-
point-to-integer conversions are to be checked
for out-of-range values.
Default: nohsflt
hssngl | nohssngl
The hssngl option specifies that single-
precision expressions are rounded only when
the results are stored into float memory
locations. The nohssngl option specifies that
single-precision expressions are rounded after
expression evaluation. Using hssngl can
improve runtime performance and is safer than
using -qfloat=hsflt.
Default: nohssngl
maf | nomaf
Makes floating-point calculations faster and
more accurate by using floating-point
multiply-add instructions where appropriate.
Default: maf
nans | nonans
Generates extra instructions to detect
signalling NaN when converting from single-
precision to double-precision at run time. The
option nonans specifies that this conversion
need not be detected.
Default: nonans
relax | norelax
Relaxes the strict IEEE-conformance slightly
for greater speed, typically by removing some
trivial, floating-point arithmetic operations,
such as adds and subtracts involving a zero on
the right.
Default: norelax
rndsngl | norndsngl
Specifies that the result of each single-
precision (float) operation is to be rounded
to single precision. -qfloat=norndsngl
specifies that rounding to single-precision
happens only after full expressions have been
evaluated.
Default: rndsngl
rngchk | norngchk
Specifying norngchk instructs the compiler to
skip range checking, allowing for increased
performance where division and sqrt operations
are performed repeatedly within a loop.
When rngchk is specified, range checking is
performed for input arguments for software
divide and inlined sqrt operations.
When -qstrict is active, the setting of this
option is forced to -qfloat=rngchk. When
-qnostrict is active, the setting of this
option is -qfloat=norngchk unless the
-qfloat=rngchk option is explicitly set by the
user.
Default: rngchk
rrm | norrm
Prevents floating-point optimizations that are
incompatible with runtime rounding to plus and
minus infinity modes.
Default: norrm
rsqrt | norsqrt
Specifies whether a sequence of code that
involves division by the result of a square
root can be replaced by calculating the
reciprocal of the square root and multiplying.
Allowing this replacement produces code that
runs faster. -qfloat=rsqrt has no effect
unless -qignerrno is also specified.
Default:
o norsqrt at -O2 optimization.
o rsqrt when when -qnostrict or -O3 or
higher optimization level is in effect.
single | nosingle
Allows single-precision arithmetic
instructions to be generated for single-
precision floating-point values. All PowerPC
processors support single-precision
instructions; however, if you wish to preserve
the behavior of applications compiled for
earlier architectures, in which all floating-
point arithmetic was performed in double-
precision and then truncated to single-
precision, you can use
-qfloat=nosingle:norndsngl. This suboption
provides computation precision results
compatible with those provided by the
deprecated options
-qarch=com|pwr|pwrx|pwr2|p2sc|601|602|603.
Default: single
spnans | nospnans
Detects signalling NaN on conversion from
single-precision to double-precision.
Default: nospnans
-qldbl128 | -qnoldbl128
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qlongdouble.
Default: -qnoldbl128
-qlongdouble | -qnolongdouble
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qldbl128.
Default: -qnolongdouble
-qlonglit | -qnolonglit
Makes unsuffixed literals into the long type in
64-bit mode.
Default: -qnolonglit
-y<rounding_mode>
Specifies the compile-time rounding mode of
constant floating-point expressions.
For binary floating-point types, <rounding_mode> is
one of the following:
m = round toward minus infinity
n = round to the nearest representable number, ties
to even
p = round toward plus infinity
z = round toward zero
Default: -yn
For decimal floating-point types, <rounding_mode>
is one of the following:
di = round toward infinities (away from zero)
dm = round toward minus infinity
dn = round to the nearest representable number,
ties to even
dna = round to the nearest representable number,
ties away from zero
dnz = round to the nearest representable number,
ties toward zero
dp = round toward plus infinity
dz = round toward zero
Default: -ydn
Object code control options
-q32, -q64
Selects either 32-bit or 64-bit compilation mode.
Use the -q32 and -q64 options, along with the
-qarch and -qtune compiler options, to optimize the
output of the compiler to the architecture on which
that output will be used.
Default: -q32
-qalloca
(C) Substitutes inline code for calls to function
alloca, as if #pragma alloca directives were in the
source code.
-ma (C) Substitutes inline code for calls to function
alloca.
-qeh[={v5|v6}] | -qnoeh
(C++) Controls whether exception handling is
enabled in the module being compiled.
v5
Instructs the compiler to generate exception-
handling code that is compatible with
VisualAge C++ V5.0.
v6
Instructs the compiler to generate new
exception-handling code, compatible with
VisualAge C++ V6.0, that correctly handles
try-catch blocks nested within other catch
blocks.
Default: -qeh=v6
-qexpfile=<file_name>
Saves the exported symbols in the specified file
and is only used together with the -qmkshrobj
compiler option.
Refer to the -qmkshrobj option for more
information.
-qfuncsect[=[no]implicitstaticref] | -qnofuncsect
Places instructions for each function in a separate
object file control section or csect. -qfuncsect
can take the following suboption:
implicitstaticref | noimplicitstaticref
Specifies whether the compiler generates dummy
references to the static area. Specifying
-qfuncsect with no suboption implies
implicitstaticref. Specifying
noimplicitstaticref removes unnecessary
references to the static data area.
Default: -qnofuncsect
-qinlglue | -qnoinlglue
This option inlines glue code that optimizes
external function calls when compiling at -q64 and
-O2 and higher.
Default: -qnoinlglue
-qkeepinlines | -qnokeepinlines
(C++) Instructs the compiler to keep or discard
definitions for unreferenced extern inline
functions. Discarding these definitions can reduce
the size of the object files. The -qkeepinlines
setting keeps the definitions of unreferenced
extern inline functions.
Default: -qnokeepinlines
-qpic[={small|large}] | -qnopic
Generates position-independent code (pic). Specify
-qpic=small if the global offset table must be 64
Kb or smaller, or -qpic=large if it can be larger
than 64 Kb.
Default: -qpic=small
-qppline | -qnoppline
When used in conjunction with the -E or -P options,
enables or disables the generation of #line
directives in the preprocessed output.
Default:
o -qnoppline with -P
o -qppline with -E
-qpriority=<num>
(C++) Specifies the priority level for the
initialization of static objects, where <num> is
the initialization priority level assigned to the
static objects within a file, or the priority level
of a shared or non-shared file or library.
You can specify a priority level from -(2147483647
+ 1) (highest priority) to +2147483647 (lowest
priority).
Default: -qpriority=0
-qproto | -qnoproto
(C) Assumes that all functions are prototyped.
Asserts that procedure call points agree with their
declarations even if the procedure has not been
prototyped. This allows the caller to pass
floating-point arguments in floating-point
registers instead of general-purpose registers.
Default: -qnoproto
-r Produces a relocatable object. This permits the
output file to be produced even though it contains
unresolved symbols.
-qreserved_reg=<registers_list>
Indicates that the specified register(s) cannot be
used during the compilation, except as a stack
pointer, frame pointer or in a different fixed
role. <registers_list> is a colon-separated list of
registers.
-qro | -qnoro
Specifies the storage type for string literals and
puts string literals in read-only storage.
Default:
o -qnoro with cc and its derivatives.
o -qro otherwise.
-qroconst | -qnoroconst
Specifies the storage location for constant values.
Default:
o -qroconst with xlc, xlc++, xlC, c89 and c99
invocations commands.
o -qnoroconst with cc.
-qroptr | -qnoroptr
Specifies the storage location for constant
pointers.
Default: -qnoroptr
-qrtti=<option> | -qnortti
(C++) Generates runtime type identification (RTTI)
information for the typeid and dynamic_cast
operators. The suboptions are:
all
Generates the information needed for the RTTI
typeid and dynamic_cast operators.
type | typeinfo
Generates the information needed for the RTTI
typeid operator only.
dyna | dynamiccast
Generates the information needed for the RTTI
dynamic_cast operator only.
Default: -qnortti
-s Strips the symbol table, line number information,
and relocation information from the output file.
-qsaveopt | -qnosaveopt
Saves the command-line options used for compiling a
source file, the version and level of each compiler
component invoked during compilation, and other
information to the corresponding object file.
This option must be used with the -c option.
Default: -qnosaveopt
-qstatsym | -qnostatsym
Adds user-defined, non-external names that have a
persistent storage class (such as initialized and
uninitialized static variables) to the name list
(the symbol table of objects).
Default: -qnostatsym
-qtbtable=<suboption>
Generates a traceback table that contains
information about each function, including the type
of function as well as stack frame and register
information. The traceback table is placed in the
text segment at the end of its code. Suboptions
include:
none
No traceback table is generated.
small
A traceback table is generated with no name or
parameter information. This is the default
with optimization if -g is not specified.
full
A full traceback table is generated. This is
the default with -qnoopt or -g specified.
Default:
o -qtbtable=full when compiling non-optimized
(without -O) or for debugging (with -g).
o -qtbtable=small otherwise.
-qthreaded | -qnothreaded
Ensures that all optimizations will be thread-safe
for executing in a multi-threaded environment.
Default:
o -qthreaded when compiling invocation
commands ending in "_r" or "_r7".
o -qnothreaded otherwise.
-qtls[=<model>] | -qnotls
Specifies the thread-local storage model to be used
by the application, where <model> can be:
global-dynamic
This model is the most general, and can be
used for all thread-local variables.
local-dynamic
This model provides better performance than
the global-dynamic model, and can be used for
thread-local variables defined in
dynamically-loaded modules.
initial-exec
This model provides better performance than
the global-dynamic or local-dynamic models,
and can be used for thread-local variables
defined in dynamically-loaded modules,
provided that those modules are loaded at the
same time as the executable.
local-exec
This model provides the best performance of
all of the models, but can only be used when
all thread-local variables are defined and
referenced by the main executable.
Default:
o -qtls=unsupported
o -qtls=initial_exec if the -qnopic compiler
option is enabled.
o -qtls=global_dynamic if the -qpic compiler
option is enabled.
-qunique | -qnounique
(C++) Generates unique names for static
constructor/destructor file compilation units.
Default: -qnounique
-qweakexp | -qnoweakexp
When used with the -qmkshrobj or -G options,
includes or excludes global symbols marked as weak
from the export list generated when you create a
shared object.
Default: -qweakexp
-qweaksymbol | -qnoweaksymbol
Instructs the compiler to generate weak symbols.
Default: -qweaksymbol
-qxcall | -qnoxcall
Generates code to treat static functions within a
compilation unit as if they were external
functions.
Default: -qnoxcall
Error checking and debugging options
-# Traces the compilation and generates information on
the progress of the compilation without invoking
the preprocessor, compiler, or linkage editor.
-qcheck[=<suboptions_list>] | -qnocheck
Generates code that performs certain types of
runtime checking. If a violation is encountered, a
runtime exception is raised by sending a SIGTRAP
signal to the process. <suboptions_list> is a
colon-separated list of one or more of the
following:
all
Enables all suboptions.
bounds | nobounds
Performs runtime checking of addresses when
subscripting within an object of known size.
divzero | nodivzero
Performs runtime checking of integer division.
A trap will occur if an attempt is made to
divide by zero.
nullptr | nonullptr
Performs runtime checking of addresses
contained in pointer variables used to
reference storage.
Default: -qnocheck
-qdbxextra | -qnodbxextra
(C) Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for debugging. Use this option with the -g
option to produce additional debugging information
for use with a debugger.
Default: -qnodbxextra
-qdpcl | -qnodpcl
Generates symbols that can be used by tools based
on the Dynamic Probe Class Library (DPCL) to see
the structure of an executable file.
Default: -qnodpcl
-qextchk | -qnoextchk
Generates bind-time type-checking information and
checks for compile-time consistency.
Default: -qnoextchk
-qflttrap[=<suboptions_list>] | -qnoflttrap
Generates instructions to detect and trap runtime
floating-point exceptions. <suboptions_list> is a
colon-separated list of one or more of the
following suboptions:
enable
Enables trapping of the specified exceptions.
imprecise
Only checks for the specified exceptions on
subprogram entry and exit.
inexact
Detects floating-point inexact exceptions.
invalid
Detects floating-point invalid operation
exceptions.
nanq
Generates code to detect and trap NaNQ (Not a
Number Quiet) exceptions handled or generated
by floating-point operations.
overflow
Detects floating-point overflow.
underflow
Detects floating-point underflow.
zerodivide
Detects floating-point division by zero.
Default: -qnoflttrap
-qformat=<options_list> | -qnoformat
Warns of possible problems with string input and
output format specifications. Functions diagnosed
are printf, scanf, strftime, strfmon family
functions and functions marked with format
attributes. <options_list> is a comma-separated
list of one or more of the following suboptions:
all | noall
Turns on all format diagnostic messages.
exarg | noexarg
Warns if excess arguments appear in printf and
scanf style function calls.
nlt | nonlt
Warns if a format string is not a string
literal, unless the format function takes its
format arguments as a va_list.
sec | nosec
Warns of possible security problems in use of
format functions.
y2k | noy2k
Warns of strftime formats that produce a 2-
digit year.
zln | nozln
Warns of zero-length formats.
Default:
o -qnoformat, which is equivalent to
-qformat=noall.
o -qformat=all if -qformat is specified
without any suboptions.
-qfullpath | -qnofullpath
Records the full or absolute path names of source
and include files in object files compiled with
debugging information (when you use the -g option).
Default: -qnofullpath
-g Generates debug information for debugging tools.
-qdbg is the long form of -g.
-g implies the -Q! option.
-qhalt=<sev>
Stops the compiler after the first phase if the
severity level of errors detected equals or exceeds
the specified level, <sev>. The severity levels in
increasing order of severity are:
i = informational messages
w = warning messages
e = error messages (C only)
s = severe error messages
Default: -qhalt=s
-qhaltonmsg=<msgnum_list>
(C++) Stops the compiler after the compilation
phase where it encounters the specified message
number(s), where <msgnum_list> is a comma-separated
list of message numbers.
-qheapdebug | -qnoheapdebug
Enables debug versions of memory management
functions.
Default: -qnoheapdebug
-qinfo[=[<suboption>][<groups_list>]] | -qnoinfo
Produces or suppresses informational messages.
<groups_list> is a colon-separated list. If a
<groups_list> is specified along with a
<suboption>, a colon must separate them. The
suboptions are:
all
Enables all diagnostic messages for all
groups.
noall
Disables all diagnostic messages for all
groups.
private
Lists shared variables that are made private
to a parallel loop.
reduction
Lists variables that are recognized as
reduction variables inside a parallel loop.
<groups_list> turns on or off specific groups of
messages and is a colon-separated list of one or
more of the following:
c99 | noc99
(C) C code that might behave differently
between C89 and C99 language levels
cls | nocls
C++ classes
cmp | nocmp
Possible redundancies in unsigned comparisons
cnd | nocnd
Possible redundancies or problems in
conditional expressions
cns | nocns
Operations involving constants
cnv | nocnv
Conversions
dcl | nodcl
Consistency of declarations
eff | noeff
Statements and pragmas with no effect
enu | noenu
Consistency of enum variables
ext | noext
Unused external definitions
gen | nogen
General diagnostic messages
gnr | nognr
Generation of temporary variables
got | nogot
Use of goto statements
ini | noini
Possible problems with initialization
lan | nolan
Language level effects
obs | noobs
Obsolete features
ord | noord
Unspecified order of evaluation
par | nopar
Unused parameters
por | nopor
Non-portable language constructs
ppc | noppc
Possible problems with using the preprocessor
ppt | noppt
Trace of preprocessor actions
pro | nopro
Missing function prototypes
rea | norea
Code that cannot be reached
ret | noret
Consistency of return statements
trd | notrd
Possible truncation or loss of data or
precision
tru | notru
Variable names truncated by the compiler
trx | notrx
Rounding of hexadecimal floating-point
constants
uni | nouni
Uninitialized variables
upg | noupg
Upgrade issues from one release to the next
release
use | nouse
(C++) Unused auto and static variables
vft | novft
(C++) Generation of virtual function tables in
C++ programs
zea | nozea
Zero-extent arrays
Default:
(C) -qnoinfo
(C++) -qinfo=lan:trx
If -qinfo is specified without a suboption, the
default is -qinfo=all for C and -qinfo=all:noppt
for C++.
-qinitauto=<hex_value> | -qnoinitauto
Initializes each byte or word of storage for
automatic variables to the specified hexadecimal
value <hex_value>. This generates extra code and
should only be used for error determination.
Default: -qnoinitauto
-qkeepparm | -qnokeepparm
Ensures that function parameters are stored on the
stack even if the application is optimized. As a
result, parameters remain in the expected memory
location, providing access to the values of these
incoming parameters to tools such as debuggers.
Default: -qnokeepparm
-qlinedebug | -qnolinedebug
Generates only abbreviated line number and source
file name information for the debugger.
Default: -qnolinedebug
-qmaxerr=<num>[:<sev>] | -qnomaxerr
Instructs the compiler to halt compilation when the
specified number of errors of the specified
severity (by default, the value of -qhalt) or
greater is reached. <num> must be an integer. The
severity levels, <sev>, are:
i = informational
w = warning
e = error (C only)
s = severe error
Default: -qnomaxerr
-qoptdebug | -qnooptdebug
When used with high levels of optimization,
-qoptdebug produces source files containing
optimized pseudocode that can be read by a
debugger.
An output file with a .optdbg extension is created
for each input file compiled with -qoptdebug. You
can use the information contained in this file to
help you understand how your code actually behaves
under optimization.
Default: -qnooptdebug
-qsymtab={unref|static}
(C) Determines what types of information appear in
the symbol table. The suboptions are:
unref
Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for processing by the debugger.
static
Adds user-defined, non-external names that
have a persistent storage class (such as
initialized and uninitialized static
variables) to the name list.
Default:
The default is to not add static variables to
the symbol table.
-qsyntaxonly
(C) Performs syntax checking without generating an
object file.
Default:
By default, source files are compiled and
linked to generate an executable file.
-qwarn64 | -qnowarn64
Enables checking for possible data conversion
problems between 32-bit and 64-bit compiler modes.
Default: -qnowarn64
Listing and messages options
-qattr[=full] | -qnoattr
Produces a compiler listing that includes an
attribute listing for all identifiers. If -qattr is
specified, the listing contains only those
identifiers that are used. If -qattr=full is
specified, the listing contains all names. If
-qnoattr is specified, no listing is produced.
Default: -qnoattr
-qdump_class_hierarchy
(C++) For each class object, this option dumps a
representation of its hierarchy and virtual
function table layout to a file. The file name is
created by appending ".class" to the source file
name.
-qflag=<listing_severity>:<terminal_severity>
Defines the minimum severity level of diagnostic
messages to be written to the listing file and to
the user terminal. <listing_severity> is the
minimum level for the listing file, and
<terminal_severity> is the minimum level for the
terminal. The message severity levels are:
i = informational messages
w = warning messages
e = error, severe error and unrecoverable error
messages (C only)
s = severe error and unrecoverable error messages
(C)
s = severe error messages (C++)
Default: -qflag=i:i
-qlist[={offset|nooffset}] | -qnolist
Produces a compiler listing that includes an object
listing. You can use the object listing to help
understand the performance characteristics of the
generated code and to diagnose execution problems.
offset | nooffset
Changes the offset of the PDEF header from
00000 to the offset of the start of the text
area.
Specifying -qlist without the suboption is
equivalent to list=nooffset.
Default: -qnolist
-qlistopt | -qnolistopt
Produces a compiler listing that displays all the
options that were in effect when the compiler was
invoked.
Default: -qnolistopt
-qphsinfo | -qnophsinfo
Reports the time taken in each compilation phase.
Phase information is sent to standard output. The
output takes the form <number1>/<number2> for each
phase where <number1> represents the CPU time used
by the compiler and <number2> represents the total
of the compiler time and the time that the CPU
spends handling system calls.
Default: -qnophsinfo
-qprint | -qnoprint
Enables or suppresses listings. Specifying
-qnoprint overrides all listing-producing options,
regardless of where they are specified, to suppress
listings.
Default: -qprint
-qreport | -qnoreport
Instructs the compiler to produce transformation
reports that show how program loops are optimized.
The transformation reports are included as part of
the compiler listing. This option requires -qhot or
-qsmp in order to have effect.
When used with -qipa=clonearch, -qreport produces
transformation reports on the procedures that are
cloned for the architectures specified by the
option.
Default: -qnoreport
-qshowinc[=<types_list>] | -qnoshowinc
Used with -qsource to selectively show user header
files (includes using " ") or system header files
(includes using < >) in the program source listing.
<types_list> is a colon-separated list of one or
more of the following types:
usr | nousr
Specifies whether to show user include files.
sys | nosys
Specifies whether to show system include
files.
all
Shows both user and system include files.
Default: -qnoshowinc
-qsource | -qnosource
Produces a compiler listing that includes source
code.
Default: -qnosource
-qsrcmsg | -qnosrcmsg
(C) Adds the corresponding source code lines to the
diagnostic messages in the stderr file.
Default: -qnosrcmsg
-qsuppress=<msg_id> | -qnosuppress=[<msg_id>]
Prevents the specified compiler or driver
informational or warning messages from being
displayed or added to the listings, where <msg_id>
is a colon-separated list of message numbers to
suppress or display.
NOTE: In (C++), -qnosuppress requires that you
supply message number(s), and in (C), -qnosuppress
does not allow you to supply any.
Default: -qnosuppress
-v Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a comma-separated list.
-V Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a space-separated list.
-qversion[=verbose]
Displays the official compiler product name and the
compiler version found on the system.
verbose
Additionally displays information about the
version, release, and level of each compiler
component installed.
-w Suppresses informational, language-level and
warning messages.
Specifying this option is equivalent to specifying
-qflag=e:e in C or -qflag=s:s in C++.
-qxref[=full] | -qnoxref
Specifies whether to produce a compiler listing
that includes a cross-reference listing of all
identifiers. Specifying -qxref will report only
identifiers that are used, -qxref=full reports all
identifiers in the program, and -qnoxref does not
report any identifiers in the program. The
-qnoprint option overrides this option.
Default: -qnoxref
Optimization and tuning options
-qaggrcopy={overlap|nooverlap}
Enables destructive copy operations for structures
and unions.
overlap | nooverlap
Enables or disables optimizations for
structure and union assignments. nooverlap
assumes that the source and destination for
structure and union assignments do not
overlap, allowing the compiler to generate
faster code. overlap inhibits these
optimizations.
Default: -qaggrcopy=nooverlap
-qalias=<suboptions_list>
Specifies the aliasing assertions to be applied to
your compilation unit. <suboptions_list> is a
colon-separated list of the following options:
addrtaken | noaddrtaken
Variables are disjoint from pointers unless
their address is taken.
allptrs | noallptrs
Pointers are never aliased if allptrs is
specified, but may be aliased if noallptrs is
specified. -qalias=allptrs implies
-qalias=typeptr.
ansi | noansi
If ansi is specified, type-based aliasing is
used during optimization, which restricts the
lvalues that can be safely used to access a
data object. This option has no effect unless
you also specify the -O option.
Specifying -qalias=noansi turns off type-based
aliasing completely.
global | noglobal
When global is in effect, type-based aliasing
rules are enabled during IPA link-time
optimization across compilation units. Both
-qipa and -qalias=ansi must be enabled for
-qalias=global to have an effect.
Specifying noglobal disables type-based
aliasing rules across compilation units.
restrict | norestrict
When restrict is in effect, optimizations for
pointers qualified with the restrict keyword
are enabled. Specifying norestrict disables
optimizations for restrict-qualified pointers.
-qalias=restrict is independent from other
-qalias suboptions.
typeptr | notypeptr
Pointers to different types are never aliased
if typeptr is specified, but may be aliased if
notypeptr is specified.
Default:
(C++)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
(C)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
for all invocation commands except cc.
-qalias=noaddrtaken:noallptrs:noansi:global:restrict:notypeptr
for the cc invocation command.
-qarch=<suboption>
Specifies the general processor architecture for
which the code (instructions) should be generated.
In general, the -qarch option allows you to target
a specific architecture for the compilation. For
any given -qarch setting, the compiler defaults to
a specific, matching -qtune setting, which can
provide additional performance improvements. The
suboptions are:
auto
Automatically detects the specific
architecture of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
403
Produces object code containing instructions
that will run on the PowerPC 403 hardware
platform.
604
Produces an object that contains instructions
that run on PowerPC 604 systems.
pwr3
Produces an object that contains instructions
that run on the POWER3 hardware platforms.
pwr4
Produces an object that contains instructions
that run on the POWER4 hardware platforms.
pwr5
Produces an object that contains instructions
that run on the POWER5 hardware platforms.
pwr5x
Produces an object that contains instructions
that run on the POWER5+ hardware platforms.
pwr6
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 architected mode. If you
would like support for decimal floating-point
instructions, be sure to specify this
suboption during compilation.
pwr6e
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 raw mode.
ppc
Produces an object that contains instructions
that run on any of the 32-bit PowerPC hardware
platforms. Using -q64 with ppc upgrades the
architecture to ppc64.
ppc64
Produces object code that will run on any 64-
bit PowerPC hardware platform. When compiled
in 32-bit mode, the resulting object code may
include instructions that are not recognized
or behave differently when run on 32-bit
PowerPC platforms.
ppcgr
In 32-bit mode, produces object code
containing optional graphics instructions for
PowerPC hardware platforms.
In 64-bit mode, produces object code
containing optional graphics instructions that
will run on 64-bit PowerPC platforms, but not
on 32-bit-only platforms. Using -q64 with
ppcgr upgrades the architecture to ppc64gr.
ppc64gr
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics instructions.
ppc64grsq
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics and square root
instructions.
ppc64v
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional vector instructions, such as a
PowerPC 970.
ppc970
Generates instructions specific to PowerPC 970
processors.
rs64a
Produces an object that contains instructions
that run on an RS64I hardware platform.
rs64b
Produces an object that contains instructions
that run on an RS64II hardware platform.
rs64c
Produces an object that contains instructions
that run on an RS64III hardware platform.
Default: -qarch=ppc
-qcache=<suboptions_list>
Describes the cache configuration for a specific
target execution machine, where <suboptions_list>
is a colon-separated list of one or more of the
following suboptions:
assoc=<number>
Specifies the set associativity of the cache,
where <number> is one of the following:
0 Direct-mapped cache
1 Fully associative cache
(number > 1) n-way set associative cache
auto
Automatically detects the specific cache
configuration of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
cost=<cycles>
Specifies the performance penalty, in CPU
cycles, resulting from a cache miss.
level=<level>
Specifies which level of cache is affected,
where level is one of the following::
1 Basic cache
2 Level-2 cache
3 Table Lookaside Buffer (TLB)
If a machine has more than one level of cache,
use a separate -qcache option.
line=<bytes>
Specifies the line size of the cache.
size=<Kbytes>
Specifies the total size of the cache.
type=<cache_type>
The settings apply to the specified type of
cache, where <cache_type> is one of the
following:
C or c = Combined data and instruction
cache
D or d = Data cache
I or i = Instruction cache
Default:
The -qtune setting determines the optimal
default -qcache settings for most typical
compilations. -O4, -O5, or -qipa must be
specified with the -qcache option.
-qcompact | -qnocompact
Reduces code size where possible, at the expense of
execution speed. Code size is reduced by inhibiting
optimizations that replicate or expand code inline.
This option takes effect only if -O2 or higher is
also used.
Default: -qnocompact
-qdataimported[=<variable_names>]
Specifies variables that the compiler can assume
are imported. <variable_names> is a colon-separated
list of variables. Specifying -qdataimported
without <variable_names> instructs the compiler to
assume that all variables are imported. This is
equivalent to specifying -qnotocdata.
(C++) Variable names must be specified using their
mangled names.
-qdatalocal[=<variable_names>]
Specifies variables that the compiler can assume
are local. <variable_names> is a colon-separated
list of variables. Specifying -qdatalocal with no
variables instructs the compiler to assume that all
variables are local. This is equivalent to
specifying -qtocdata.
(C++) Variable names must be specified using their
mangled names.
-qtocdata | -qnotocdata
Marks all data as local.
Default: -qnotocdata (marks all data as imported)
-qdirectstorage | -qnodirectstorage
Informs the compiler that write-through-enabled or
cache-inhibited storage may be referenced.
Default: -qnodirectstorage
-qenablevmx | -qnoenablevmx
Enables the generation of vector instructions for
processors that support them. These instructions
can offer higher performance when used with
algorithmic-intensive tasks such as multimedia
applications.
For -qenablevmx to have effect, the architecture
specified by the -qarch option must support vector
instructions.
If -qnoenablevmx is in effect, -qaltivec,
-qvecnvol, and -qhot=simd cannot be used.
Default: -qnoenablevmx
-qfdpr | -qnofdpr
Collects information about programs for use with
the IBM Feedback Directed Program Restructuring
(FDPR) performance-tuning utility.
Default: -qnofdpr
-qhot[=<suboption>] | -qnohot
Specifies whether or not to perform high-order
transformations during optimization. The suboptions
are:
arraypad[=<number>] | noarraypad
When <number> is specified, the compiler will
pad every array in the code. The pad amount
must be a positive integer value. Otherwise,
the compiler will pad any arrays where it
infers that there may be a benefit.
level={0|1}
Specifies the level of high-order
transformation to perform during compilation.
0
The compiler performs a subset of the
high-order transformations. Some of these
include early distribution, loop
interchange, and loop tiling, as
examples. Optimization level -O3 implies
-qhot=level=0.
1
At level=1, full high-order
transformation is performed.
-qhot=level=1 is equivalent to -qhot and
the compiler options that imply -qhot
also imply -qhot=level=1, unless
-qhot=level=0 is explicitly specified.
simd | nosimd
Converts certain operations in a loop that
apply to successive elements of an array into
a vector instruction. This call calculates
several results at one time, which is faster
than calculating each result sequentially. If
you specify -qhot=nosimd, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with vector
instructions. To enable -qhot=simd, you must
specify an architecture that supports vector
instructions.
vector | novector
When specified with -qnostrict and -qignerrno,
or an optimization level of -O3 or higher
(otherwise -qhot=vector has no effect), the
compiler converts certain operations in a loop
that apply to successive elements of an array
into a call to a routine in the Mathematical
Acceleration Subsystem (MASS) library, part of
the libxlopt.a library.
If you specify -qhot=novector, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with calls
to vector library routines.
Specifying -qhot without suboptions implies
-qhot=nosimd, -qhot=noarraypad, -qhot=vector and
-qhot=level=1. The -qhot option is also implied by
-qsmp, -O4, and -O5.
Default: -qnohot
-qignerrno | -qnoignerrno
Allows the compiler to perform optimizations that
assume errno is not modified by system calls.
Default: -qnoignerrno
-qipa[=<suboptions_list>] | -qnoipa
Turns on or customizes a class of optimizations
known as interprocedural analysis (IPA).
<suboptions_list> is a colon-separated list of the
following suboptions:
clonearch=<arch_name> | noclonearch
Specifies the architectures for which multiple
versions of the same instruction set are
produced, where <arch_name> is a comma-
separated list of architecture names. Use this
suboption if you require optimal performance
on multiple differing machines running the
same copy of your application.
cloneproc=<function_name> |
nocloneproc=<function_name>
Specifies the name of the functions to clone
for the architectures specified by the
clonearch suboption, where <function_name> is
a comma-separated list of function names.
exits=<procedures>
Specifies names of functions which represent
program exits. <procedures> is a comma-
separated list of procedures.
infrequentlabel=<procedures>
Specifies a comma-separated list of user-
defined labels that are likely to be called
infrequently during a program run.
inline[=<suboption>]
Specifying 'inline' with no suboption asserts
that all appropriate procedures will be
inlined. <suboption> can be one of the
following:
auto|noauto
Enables or disables automatic function
inlining by the high-level optimizer.
When -qipa=inline=auto is in effect, the
compiler considers all functions that are
under the maximum size limit (see below)
for inlining. When -qipa=inline=noauto is
in effect, only procedures listed in the
<procedures> suboption are considered for
inlining.
<procedures>
Specifies a comma-separated list of
procedures to attempt to inline.
limit=<num>
Specifies a limit on the size of a
calling function after inlining. This
only takes effect when inline=auto is on.
If you do not specify a value for <num>,
<num> is 8192 by default.
threshold=<num>
Specifies the upper size limit on
procedures to inline. This only takes
effect when inline=auto is on. If you do
not specify a value for <num>, <num> is
1024 by default.
Default: auto
noinline[=<procedures>]
Specifies a comma-separated list of procedures
which are not to be inlined. Specifying
noinline without <procedures>, asserts that no
procedures are to be inlined.
isolated=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and do not
directly refer to any global variable.
level=<level>
Determines the amount of IPA analysis and
optimization performed, where <level> can be
equal to:
0
Performs only minimal interprocedural
analysis and optimization.
1
Turns on inlining, limited alias
analysis, and limited call-site
tailoring.
2
Full interprocedural data flow and alias
analysis.
Default: 1
list[={<file_name>|short|long}]
Specifies an output listing file name during
the link phase. The default name is "a.lst".
Specifying 'long' or 'short' can be used to
request more or less information in the
listing file to determine which listing
sections will be included.
Default: short
lowfreq=<procedures>
Specifies a comma-separated list of procedures
that are likely to be called infrequently
during the course of a typical program run.
malloc16 | nomalloc16
Informs the compiler that the dynamic memory
allocation routines will return 16-byte
aligned memory addresses. The compiler can
then optimize the code based on that
assertion.
Default: -qipa=malloc16
missing={unknown|safe|isolated|pure}
Specifies the default assumption for
procedures not compiled with -qipa.
unknown
Greatly restricts the amount of
interprocedural optimization for calls to
unknown functions.
safe
Functions which do not indirectly call a
visible (not missing) function either
through direct call or function pointer.
isolated
Functions which do not directly reference
global variables accessible to visible
functions.
pure
Functions which are safe and isolated and
which do not indirectly alter storage
accessible to functions.
Default: missing=unknown
object | noobject
Specifies whether to include standard object
code in the object files. Specifying
'noobject' can substantially reduce overall
compile time by not generating object code
during the first IPA phase.
partition={small|medium|large}
Specifies the size of program sections that
are analyzed together. Larger partitions may
produce better analysis but require more
storage.
Default: partition=medium
pure=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that are
"isolated", "safe", and do not modify any data
objects that are visible to the caller.
safe=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that do not call
any other part of the program.
threads[=<suboption>] | nothreads
Runs portions of the IPA optimization process
during pass 2 in parallel threads, which can
speed up the linking process on multi-
processor systems. <suboption> can be one of
the following:
auto | noauto
When auto is in effect, the compiler
selects a number of threads heuristically
based on machine load. When noauto is in
effect, the compiler spawns one thread
per machine processor.
<number>
Instructs the compiler to use a specific
number of threads. <number> can be any
integer value in the range of 1 to 32767.
However, <number> is effectively limited
to the number of processors available on
your system.
Specifying threads with no suboptions implies
threads=auto.
Default: -qipa=threads
unknown=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and that may
update global variables and dummy arguments
and call other parts of the program compiled
with -qipa.
<file_name>
Specifies the name of a file that contains
suboption information in a special format.
Regular expressions are supported when specifying
procedure names for these suboptions:
cloneproc, nocloneproc, exits, inline, noinline,
isolated, lowfreq, pure, safe, unknown.
(C++) In C++ programs, procedure names must be
given in mangled form.
Default:
-qnoipa
-qipa=inline=auto:level=1:missing=unknown:partition=medium:threads=auto
when -O4 is in effect.
-qipa=inline=auto:level=2:missing=unknown:partition=medium:threads=auto
when -O5 is in effect.
-qipa=inline=auto:level=0:missing=unknown:partition=medium:threads=auto
when -qpdf1 or -qpdf2 is in effect.
-qisolated_call=<procedures>
Informs the compiler that specific functions do not
have or rely on side effects, other than those
implied by their parameters. <procedures> is a
colon-separated list of function names.
-qlargepage | -qnolargepage
Indicates that a program, designed to execute in a
large page memory environment, can take advantage
of large 16 MB pages provided on POWER4 and later
systems.
Default: -qnolargepage
-qlibansi | -qnolibansi
Assumes that all functions with the name of an ANSI
C defined library function are, in fact, the
library functions.
Default: -qnolibansi
-qmaxmem=<size>
Limits the amount of memory used by certain
memory-intensive optimizations to <size> kilobytes.
When <size> is -1, the optimizer will use as much
memory as needed.
Default:
o -qmaxmem=8192 when -O2 level optimization is
set.
o -qmaxmem=-1 when -O3 level or greater
optimization is set.
-qminimaltoc | -qnominimaltoc
Avoids Table of Contents (TOC) overflow conditions
by placing TOC entries into a separate data section
for each object file. By default, the compiler will
allocate at least one TOC entry for each unique
non-automatic variable reference in your program.
Default: -qnominimaltoc
-O[<level>]
Optimizes code at a choice of levels during
compilation. This is equivalent to
-qoptimize[=<level>]. <level> can be:
0
Performs only quick local optimizations such
as constant folding and elimination of local
common subexpressions.
2
Performs optimizations that the compiler
developers considered the best combination for
compilation speed and runtime performance. The
optimizations may change from product release
to release.
3
Performs some memory and compile-time
intensive optimizations in addition to those
executed with -O2. The -O3 specific
optimizations have the potential to alter the
semantics of a program. The compiler guards
against these optimizations at -O2 and the
option -qstrict is provided at -O3 to turn off
these aggressive optimizations. Specifying -O3
implies -qhot=level=0.
4
This option is the same as -O3, but also:
o sets the -qarch and -qtune options to the
architecture of the compiling machine.
o sets the -qcache option most appropriate
to the characteristics of the compiling
machine.
5
Equivalent to -O4 -qipa=level=2.
Specifying -O with no <level> is equivalent to
specifying -O2.
Default: -O0
-qoptimize[=<level>] | -qnooptimize
The long form of the -O option. -qoptimize=<level>
is equivalent to -O<level>. See the -O option.
Default: -qnooptimize
-p, -pg, -qprofile={-p|-pg}
Sets up the object files produced by the compiler
for profiling.
-pg is like -p, but it produces more extensive
statistics.
-qpdf1[=pdfname=<file_path] | -qnopdf1
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf1 produces an object that is instrumented to
collect runtime execution information. This is
phase 1 of the profile-directed feedback
optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf1
-qpdf2[=pdfname=<file_path>] | -qnopdf2
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf2 tunes application performance using the data
generated by running a program compiled with
-qpdf1. This is phase 2 of the profile-directed
feedback optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf2
-qprefetch | -qnoprefetch
Enables generation of prefetching instructions such
as dcbt and dcbz in compiled code.
Default: -qprefetch
-qprocimported[=<procedures>] | -qnoprocimported
Specifies functions that the compiler can assume
are imported. Imported functions are dynamically
bound with a shared portion of a library. Code
generated for calls to functions marked as imported
may be larger, but is faster than the default code
sequence generated for functions marked as unknown.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qproclocal[=<procedures>] | -qnoproclocal
Specifies functions that the compiler can assume
are local. Local functions are statically bound
with the functions that call them; smaller, faster
code is generated for calls to such functions.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qprocunknown[=<procedures>] | -qnoprocunknown
Specifies functions that the compiler can assume
are unknown. Unknown functions are resolved to
either statically or dynamically bound objects
during linking. <procedures> is a colon-separated
list of function identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-Q[<suboption>]
(C++) Instructs the compiler to try to inline
functions. Inlining is performed if possible but,
depending on which optimizations are performed,
some functions might not be inlined.
(C) Specifies which specific functions the compiler
should attempt to inline. You must specify at least
an optimization level of -O2 for inlining to take
effect with -Q. To turn on inline expansion for
calls to procedures in different scopes, you must
also use the -qipa=inline.
(C++) In the C++ language, this option can take the
form:
-Q
Compiler inlines all functions that it can.
-Q!
Compiler does not inline any functions.
(C) In the C language, this option can take the
form:
-Q
Attempts to inline all appropriate functions
with 20 executable source statements or fewer,
subject to the setting of any of the
suboptions to the -Q option. If -Q is
specified last, all functions are inlined.
-Q!
Does not inline any functions. If -Q! is
specified last, no functions are inlined.
-Q-<names>
Does not inline functions listed in <names>,
where <names> is a colon-separated list. All
other appropriate functions are inlined. The
option implies -Q.
-Q+<names>
Attempts to inline the functions listed in
<names>, where <names> is a colon-separated
list. All other appropriate functions are
inlined.
-Q=<threshold>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <threshold> for
the function to be inlined.
Default: -Q!
-qinline[<suboption>] | -qnoinline
Specifies whether to attempt to inline functions
instead of generating calls to a function.
(C++) In C++, you cannot specify any suboptions.
-qinline specifies that all appropriate functions
should be inlined, and -qnoinline specifies that no
functions should be inlined.
(C) In C, this option can take the following forms:
-qinline
The compiler attempts to inline all
appropriate functions with 20 executable
source statements or fewer, subject to any
other settings of the suboptions to the
-qinline option.
-qinline+<procedures>
Attempts to inline the functions listed in
<procedures> and any other appropriate
functions, where <procedures> is a colon-
separated list.
-qinline-<procedures>
Specifies that functions listed in
<procedures> do not get inlined, where
<procedures> is a colon-separated list.
-qnoinline
Does not inline any functions.
-qinline=threshold=<num>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <num> for the
function to be inlined. <num> must be a
positive integer.
Default:
The default is to treat inline specifications
as a hint to the compiler, and the result
depends on other options that you select. If
you specify the -g option (to generate debug
information), inlining may be affected.
-qshowpdf | -qnoshowpdf
Used with -qpdf1 and a minimum optimization level
of -O2 to add additional call and block count
profiling information to an executable.
Default: -qnoshowpdf
-qsmallstack | -qnosmallstack
Reduces the size of the stack frame. This option is
only valid when used together with IPA (-qipa, -O4,
-O5 compiler options).
Default: -qnosmallstack
-qsmp[=<suboptions_list>] | -qnosmp
Enables parallelization of program code.
<suboptions_list> is a colon-separated list of one
or more of the following suboptions:
auto | noauto
Enables automatic parallelization and
optimization. If noauto is specified,
automatic parallelization of program code is
disabled; only program code explicitly
parallelized with OpenMP directives is
optimized.
Default: auto
nested_par | nonested_par
If nested_par is specified, prescriptive
nested parallel constructs are parallelized by
the compiler.
Default: nonested_par
omp | noomp
Enables strict OpenMP compliance. Only OpenMP
parallelization pragmas are recognized.
Default: noomp
opt | noopt
Enables automatic parallelization but disables
optimization of parallelized program code. If
noopt is specified, optimization of
parallelized program code is disabled.
Default: opt
rec_locks | norec_locks
Specifies whether to use recursive locks.
Default: norec_locks
schedule=<type>
Specifies what kinds of scheduling algorithms
and chunking are used for loops to which no
other scheduling algorithm has been explicitly
assigned in the source code. <type> can be:
o affinity[=<num>]
o dynamic[=<num>]
o guided[=<num>]
o runtime
o static[=<num>],
where <num> is the number of loop iterations.
Default: schedule=runtime
stackcheck | nostackcheck
Causes the compiler to check for stack
overflow by slave threads at run time, and
issue a warning if the remaining stack size is
less than the number of bytes specified by the
stackcheck option of the XLSMPOPTS environment
variable. This suboption is intended for
debugging purposes, and only takes effect when
XLSMPOPTS=stackcheck is also set.
Default: nostackcheck
threshold[=<num>]
When -qsmp=auto is in effect, controls the
amount of automatic loop parallelization that
occurs. The value of <num> represents the
lower limit allowed for parallelization of a
loop, based on the level of "work" present in
a loop.
Default:
<num> must be a positive integer of 0 or
greater. If you specify threshold with no
suboption, the program uses a default value
of 100.
Specifying -qsmp without suboptions is equivalent
to
-qsmp=auto:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100
or
-qsmp=opt:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100.
Default: -qnosmp
-qspeculateabsolutes | -qnospeculateabsolutes
Works with the -qtocmerge -bl:file for non-IPA
links and with the -bl:file for IPA links to
disable speculation at absolute addresses.
The bl:file is necessary for the compiler to know
which addresses are absolutes.
Default: -qspeculateabsolutes
-qstrict | -qnostrict
Turns off aggressive optimizations which have the
potential to alter the semantics of your program.
-qstrict sets -qfloat=nofltint:norsqrt. -qnostrict
sets -qfloat=rsqrt. This option is only valid with
-O2 or higher optimization levels.
Default:
o -qnostrict at -O3 or higher.
o -qstrict otherwise.
-qstrict_induction | -qnostrict_induction
Turns off loop induction variable optimizations
that have the potential to alter the semantics of
your program.
Default:
o -qnostrict_induction at -O2 or higher.
o -qstrict_induction otherwise.
-qtocmerge | -qnotocmerge
Enables TOC merging to reduce TOC pointer loads and
improves the scheduling of external loads. Reads
from the file specified in -bImportfile linker
option and merges the address information to access
ranges of external addresses using a single table
of contents entry.
Default: -qnotocmerge
-qtune=<suboption>
Specifies the architecture system for which the
executable program is optimized.
<suboption> must be one of the following:
403
Generates object code optimized for all the
PowerPC 403 processors.
604
Generates object code optimized for all the
PowerPC 604 processors.
auto
Generates object code optimized for the
hardware platform on which the program is
compiled.
balanced
Optimizations are tuned across a selected
range of recent hardware.
ppc970
Generates instructions specific to PowerPC 970
hardware platforms.
pwr3
Generates object code optimized for the POWER3
hardware platforms.
pwr4
Generates object code optimized for the POWER4
hardware platforms.
pwr5
Generates object code optimized for the POWER5
hardware platforms.
pwr6
Generates object code optimized for the POWER6
hardware platforms.
rs64a
Generates object code optimized for the RS64I
processor.
rs64b
Generates object code optimized for the RS64II
processor.
rs64c
Generates object code optimized for the
RS64III processor.
Default:
-qtune=balanced when the default -qarch
setting is in effect. Otherwise, the default
depends on the effective -qarch setting.
-qunroll[=<suboption>] | -qnounroll
Unrolls inner loops in the program. This can help
improve program performance. The suboptions are:
auto
Instructs the compiler to perform basic loop
unrolling.
yes
Instructs the compiler to search for more
opportunities for loop unrolling than that
performed with auto. In general, this
suboption is more likely to increase compile
time or program size than auto processing, but
it may also improve your application's
performance.
no
Instructs the compiler to not unroll loops.
Default: -qunroll=auto
If -qunroll is specified with no suboptions, the
compiler assumes -qunroll=yes. -qnounroll is
equivalent to -qunroll=no.
-qunwind | -qnounwind
Informs the compiler that the stack can be unwound
while a routine in the compilation is active.
Specifying -qnounwind can improve the optimization
of non-volatile register saves and restores.
Default: -qunwind
Linking options
-b{dynamic|shared|static}
Controls how shared objects are processed by the
linkage editor. The suboptions are:
dynamic, shared
Causes the linker to process subsequent shared
objects in dynamic mode. In dynamic mode,
shared objects are not statically included in
the output file. Instead, the shared objects
are listed in the loader section of the output
file.
-bdynamic and -bshared are synonymous.
static
Causes the linker to process subsequent shared
objects in static mode. In static mode, shared
objects are statically linked in the output
file.
Default: -bshared
-bmaxdata:<bytes>
Specifies the maximum amount of space to reserve
for the program data segment for programs where the
size of these regions is a constraint. Combined
data space is slightly less than 256MB, or lower,
depending on the limits for the user ID.
Default: -bmaxdata:0
-brtl Controls runtime linking for the output file.
-qcrt | -qnocrt
Instructs the linker to use the standard system
startup files at link time.
Default: -qcrt
-e <name>
Sets the entry name for a shared executable and is
only used together with -qmkshrobj.
-f<file_name>
Names a file to store a list of object files for
the compiler to pass to the linker. The <file_name>
file should contain only the names of object files.
There should be one object file per line.
-L<dir>
Searches the path directory for library files
specified by the -l<key> option.
Default:
The default is to search only the standard
directories.
-l<key>
Searches the file lib<key>.so and then lib<key>.a
for dynamic linking, or only lib<key>.a for static
linking.
Default:
The default is to search only some of the
compiler runtime libraries.
-qlib | -qnolib
Specifies whether the compiler should use the
standard system libraries at link time. -qnolib is
similar to the gcc option nostdlib; the driver will
not pass the standard system startup files or
libraries when linking.
Default: -qlib
-qtwolink | -qnotwolink
(C++) Links twice in order to minimize the number
of static constructors included from libraries and
object files.
Default: -qnotwolink
-Z<prefix>
This linker option specifies a prefix for the
library search path. This is useful when developing
a new version of a library.
Portability and migration options
-qalign=<suboption>
Specifies what aggregate alignment rules the
compiler uses for file compilation, where the
alignment suboptions are:
bit_packed
The compiler uses the bit_packed alignment
rules.
full
The compiler uses the RISC System/6000
alignment rules. This is the same as power.
mac68k
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the twobyte
suboption.
natural
The compiler maps structure members to their
natural boundaries.
packed
The compiler uses the packed alignment rules.
power
The compiler uses the RISC System/6000
alignment rules.
twobyte
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the mac68k
suboption.
Default: -qalign=full
-qalignrulefor=power=[no]typedefrespectsrule
(C++) When used with -qalign=power, determines
whether a 4-byte alignment ceiling is applied to
non-first members of structures that are of type
typedef to array of element type that exceeds the
alignment ceiling.
typedefrespectsrule | notypedefrespectsrule
When typedefrespectsrule is in effect, the
member follows the normal alignment rules for
-qalign=power. This suboption provides
compatibility with code compiled with
-qalign=power with XL C++ V6.0 and earlier.
When notypedefrespectsrule is in effect, a
member that exceeds the alignment ceiling of 4
bytes is aligned on 4-byte boundaries. This
suboption provides compatibility with code
compiled with -qalign=power with XL C++ V7.0
and V8.0.
Default: -qalignrulefor=power=typedefrespectsrule
-qgenproto[=parmnames] | -qnogenproto
(C) Generates ANSI prototypes from K&R function
definitions and displays them on standard output.
Specifying -qgenproto without '=parmnames' will
cause prototypes to be generated without parameter
names.
Default: -qnogenproto
-qnamemangling=<scheme>
(C++) Chooses the name mangling scheme for external
symbol names generated from C++ source code. The
<scheme> can be:
ansi
Fully supports the most recent language
features of Standard C++.
v9
Compatible with XL C++ V9.0.
v8
Compatible with XL C++ V8.0.
v7
Compatible with XL C++ V7.0.
v6
Compatible with VisualAge C++ V6.0.
v5
The scheme for VisualAge C++ V5.0.
v4
The scheme for VisualAge C++ V4.0.
v3
The scheme for VisualAge C++ releases before
V4.0.
compat
Same as v3.
Default: -qnamemangling=ansi
-qobjmodel={classic|ibm}
(C++) Specifies the object model.
classic
This object model is compatible with version
3.6 of the IBM C and C++ compilers.
ibm
Uses the object model introduced with version
5.0 of VisualAge C++ for AIX. Objects compiled
with this object model will use less memory
and have better performance for deep
inheritance with virtual bases.
Default: -qobjmodel=classic
-qoldpassbyvalue | -qnooldpassbyvalue
(C++) Specifies how classes containing const or
reference members are passed in function arguments.
All classes in the compilation unit are affected by
this option. When -qoldpassbyvalue is specified,
the compiler mimics the IBM C/C++ compilers v3.6
compiler in that when a class containing a const or
reference member is passed as a function argument,
it is not passed by value. All such classes in the
compilation unit are affected.
Default: -qnooldpassbyvalue
-qupconv | -qnoupconv
(C) Preserves the unsigned specification when
performing integral promotions.
Default:
o -qupconv when -qlanglvl={extended|classic}.
o -qnoupconv otherwise.
-qvecnvol | -qnovecnvol
Specifies whether to use volatile or non-volatile
vector registers. Volatile vector registers are
registers whose value is not preserved across
function calls or in the context of save, jump or
switch system library functions. If -qnoenablevmx
is enabled, this option is ignored.
Default: -qnovecnvol
Compiler customization options
-qasm_as=<asm_path> [<flags_list>]
Specifies the path and flags used to invoke the
assembler in order to handle assembler code in an
asm statement. <asm_path> is the full path to the
assembler to be used, and <flags_list> is a series
of one or more flags (and their arguments),
separated by spaces. Single quotes (or double
quotes) are required around the string of arguments
if any spaces exist.
-B[<prefix>]
Determines substitute path names for programs used
during compilation, such as the compiler,
assembler, linkage editor, and preprocessor, where
<prefix> can be any program name recognized by the
-t compiler option. The optional <prefix> defines
part of a path name to the new programs. The -t
parameter, <program>, specifies the program to
which the <prefix> is to be appended. When
specifying <prefix>, there must be a slash (/)
after the folder name.
-qc_stdinc=<paths_list>
(C) Changes the standard search location for the XL
C headers. <paths_list> is a colon-separated list
of paths to search.
-qcpp_stdinc=<paths_list>
(C++) Specifies the standard search directories for
the XL C++ headers, where <paths_list> is a colon-
separated list of paths.
-F[<config_file>][:<stanza>]
Names an alternative configuration file (.cfg) for
the compiler. <config_file> is the name of a
compiler configuration file. <stanza> is the name
of the command used to invoke the compiler. This
directs the compiler to use the entries under
<stanza> in the <config_file> to set up the
compiler environment. At least one of the arguments
must be supplied.
-qpath=<program>:<path>
Constructs alternate program names for compiler
components. The program and directory path
specified are used in place of the regular program.
<program> can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-qspill=<size>
Specifies the size of the register allocation spill
area in bytes.
Default: -qspill=512
-t<programs_list>
Applies the prefix from the -B option to the
specified programs in <programs_list>.
<programs_list> is a chain (i.e: -tbcI) of one or
more of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-W<program>,<options_list>
Gives the specified option(s) to the compiler
program, <program>. <options_list> is a comma-
separated list of one or more options. <program>
can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = c++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = linkage helper (C++ only)
p = Preprocessor
SEE ALSO
gxlc(1), gxlc++(1), c++filt(1), CreateExportList(1),
linkxlC(1), makeC++SharedLib(1), vacndi(1), vacppndi(1),
showpdf(1), mergepdf(1), resetpdf(1), cleanpdf(1).
For more information, refer to the following Web sites:
http://www.ibm.com/software/awdtools/xlcpp/library/
http://www.ibm.com/software/awdtools/xlcpp/support/
COPYRIGHT
Licensed Materials - Property of IBM.
IBM XL C/C++ Enterprise Edition for AIX, V9.0.
5724-S71
Copyright IBM Corp. 1991, 2007. All Rights Reserved.
AIX, IBM, POWER3, POWER4, POWER5, POWER5+, POWER6,
PowerPC, PowerPC 604 and SAA are trademarks or registered
trademarks of International Business Machines Corporation
in the United States, other countries, or both.
Windows is a trademarks of Microsoft Corporation in the
United States, other countries, or both.
US Government Users Restricted Rights - Use, duplication
or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
rm /ptmp/ddvento/xlcW0ve7Qia
rm /ptmp/ddvento/xlcW1ve7Qib
rm /ptmp/ddvento/xlcW2ve7Qic
configure:4303: $? = 249
configure:4306: checking whether we are using the GNU C++ compiler
configure:4335: xlC -c conftest.cpp >&5
"conftest.cpp", line 14.14: 1540-0040 (S) The text "me" is unexpected. "choke" may be undeclared or ambiguous.
configure:4342: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| /* end confdefs.h. */
|
| int
| main ()
| {
| #ifndef __GNUC__
| choke me
| #endif
|
| ;
| return 0;
| }
configure:4359: result: no
configure:4368: checking whether xlC accepts -g
configure:4398: xlC -c -g conftest.cpp >&5
configure:4405: $? = 0
configure:4506: result: yes
configure:4531: checking dependency style of xlC
configure:4622: result: aix
configure:4702: checking for grep that handles long lines and -e
configure:4762: result: /usr/local/bin//grep
configure:4767: checking for fgrep
configure:4831: result: /usr/local/bin//grep -F
configure:4836: checking for egrep
configure:4900: result: /usr/local/bin//grep -E
configure:4905: checking for a sed that does not truncate output
configure:4971: result: /usr/bin/sed
configure:4981: checking how to run the C++ preprocessor
configure:5017: xlC -E conftest.cpp
configure:5024: $? = 0
configure:5055: xlC -E conftest.cpp
"conftest.cpp", line 9.10: 1540-0836 (S) The #include file <ac_nonexistent.h> is not found.
configure:5062: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:5095: result: xlC -E
configure:5124: xlC -E conftest.cpp
configure:5131: $? = 0
configure:5162: xlC -E conftest.cpp
"conftest.cpp", line 9.10: 1540-0836 (S) The #include file <ac_nonexistent.h> is not found.
configure:5169: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:5208: checking whether make sets $(MAKE)
configure:5230: result: yes
configure:5253: checking for a BSD-compatible install
configure:5321: result: /usr/local/bin//install -c
configure:5339: checking whether to compile with debug info
configure:5348: result: yes
configure:5372: checking whether to compile for profiling
configure:5387: result: no
configure:5398: checking whether to compile for test coverage
configure:5413: result: no
configure:5424: checking whether to enable checking of run-time assertions
configure:5437: result: no
configure:5449: checking whether to enable even more run-time assertions
configure:5462: result: no
configure:5515: checking whether to enable optimizations
configure:5542: result: standard
configure:5568: checking for which architecture to optimize
configure:5591: result: default
configure:5604: checking whether to select specific floating point arithmetics
configure:5647: result: default
configure:5692: checking whether to use precompiled headers
configure:5706: result: no
configure:5824: checking the type of integral values to use as coefficients
configure:5889: result: GMP mpz
configure:6030: checking for perl
configure:6048: found /usr/bin/perl
configure:6061: result: /usr/bin/perl
configure:6086: checking for an ANSI C-conforming const
configure:6161: xlc -c -g -O2 conftest.c >&5
"conftest.c", line 23.17: 1506-359 (I) Automatic variable cs contains a const member and is not initialized. It will be initialized to zero.
configure:6168: $? = 0
configure:6183: result: yes
configure:6193: checking for inline
configure:6219: xlc -c -g -O2 conftest.c >&5
configure:6226: $? = 0
configure:6244: result: inline
configure:6268: checking how to run the C preprocessor
configure:6308: xlc -E conftest.c
configure:6315: $? = 0
configure:6346: xlc -E conftest.c
"conftest.c", line 15.10: 1506-296 (S) #include file <ac_nonexistent.h> not found.
configure:6353: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:6386: result: xlc -E
configure:6415: xlc -E conftest.c
configure:6422: $? = 0
configure:6453: xlc -E conftest.c
"conftest.c", line 15.10: 1506-296 (S) #include file <ac_nonexistent.h> not found.
configure:6460: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:6500: checking for ANSI C header files
configure:6530: xlc -c -g -O2 conftest.c >&5
configure:6537: $? = 0
configure:6636: xlc -o conftest -g -O2 conftest.c >&5
configure:6640: $? = 0
configure:6646: ./conftest
configure:6650: $? = 0
configure:6668: result: yes
configure:6692: checking for sys/types.h
configure:6713: xlc -c -g -O2 conftest.c >&5
configure:6720: $? = 0
configure:6737: result: yes
configure:6692: checking for sys/stat.h
configure:6713: xlc -c -g -O2 conftest.c >&5
configure:6720: $? = 0
configure:6737: result: yes
configure:6692: checking for stdlib.h
configure:6713: xlc -c -g -O2 conftest.c >&5
configure:6720: $? = 0
configure:6737: result: yes
configure:6692: checking for string.h
configure:6713: xlc -c -g -O2 conftest.c >&5
configure:6720: $? = 0
configure:6737: result: yes
configure:6692: checking for memory.h
configure:6713: xlc -c -g -O2 conftest.c >&5
configure:6720: $? = 0
configure:6737: result: yes
configure:6692: checking for strings.h
configure:6713: xlc -c -g -O2 conftest.c >&5
configure:6720: $? = 0
configure:6737: result: yes
configure:6692: checking for inttypes.h
configure:6713: xlc -c -g -O2 conftest.c >&5
configure:6720: $? = 0
configure:6737: result: yes
configure:6692: checking for stdint.h
configure:6713: xlc -c -g -O2 conftest.c >&5
configure:6720: $? = 0
configure:6737: result: yes
configure:6692: checking for unistd.h
configure:6713: xlc -c -g -O2 conftest.c >&5
configure:6720: $? = 0
configure:6737: result: yes
configure:6752: checking whether byte ordering is bigendian
configure:6777: xlc -c -g -O2 conftest.c >&5
"conftest.c", line 26.16: 1506-166 (S) Definition of function not requires parentheses.
"conftest.c", line 26.20: 1506-046 (S) Syntax error.
configure:6784: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h. */
| #ifndef __APPLE_CC__
| not a universal capable compiler
| #endif
| typedef int dummy;
|
configure:6834: xlc -c -g -O2 conftest.c >&5
configure:6841: $? = 0
configure:6873: xlc -c -g -O2 conftest.c >&5
configure:6880: $? = 0
configure:7132: result: yes
configure:7158: checking for typeof syntax and keyword spelling
configure:7199: xlc -c -g -O2 conftest.c >&5
"conftest.c", line 35.51: 1506-276 (S) Syntax error: possible missing ')'?
"conftest.c", line 37.58: 1506-277 (S) Syntax error: possible missing ')' or ','?
"conftest.c", line 34.33: 1506-023 (S) Expecting function or pointer to function.
"conftest.c", line 33.28: 1506-1324 (S) Array size must have integer type.
configure:7206: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| /* end confdefs.h. */
|
| int
| main ()
| {
|
| int value;
| typedef struct {
| char a [1
| + ! ((typeof (value))
| ((typeof (value)) 0 < (typeof (value)) -1
| ? (typeof (value)) - 1
| : ~ (~ (typeof (value)) 0
| << sizeof (typeof (value)))))]; }
| ac__typeof_type_;
| return
| (! ((void) ((ac__typeof_type_ *) 0), 0));
|
| ;
| return 0;
| }
configure:7199: xlc -c -g -O2 conftest.c >&5
configure:7206: $? = 0
configure:7223: result: __typeof__
configure:7246: checking size of char
configure:7551: xlc -o conftest -g -O2 conftest.c >&5
configure:7555: $? = 0
configure:7561: ./conftest
configure:7565: $? = 0
configure:7591: result: 1
configure:7605: checking size of short
configure:7910: xlc -o conftest -g -O2 conftest.c >&5
configure:7914: $? = 0
configure:7920: ./conftest
configure:7924: $? = 0
configure:7950: result: 2
configure:7964: checking size of int
configure:8269: xlc -o conftest -g -O2 conftest.c >&5
configure:8273: $? = 0
configure:8279: ./conftest
configure:8283: $? = 0
configure:8309: result: 4
configure:8323: checking size of long
configure:8628: xlc -o conftest -g -O2 conftest.c >&5
configure:8632: $? = 0
configure:8638: ./conftest
configure:8642: $? = 0
configure:8668: result: 8
configure:8682: checking size of long long
configure:8987: xlc -o conftest -g -O2 conftest.c >&5
configure:8991: $? = 0
configure:8997: ./conftest
configure:9001: $? = 0
configure:9027: result: 8
configure:9041: checking size of size_t
configure:9346: xlc -o conftest -g -O2 conftest.c >&5
configure:9350: $? = 0
configure:9356: ./conftest
configure:9360: $? = 0
configure:9386: result: 8
configure:9400: checking size of float
configure:9705: xlc -o conftest -g -O2 conftest.c >&5
configure:9709: $? = 0
configure:9715: ./conftest
configure:9719: $? = 0
configure:9745: result: 4
configure:9759: checking size of double
configure:10064: xlc -o conftest -g -O2 conftest.c >&5
configure:10068: $? = 0
configure:10074: ./conftest
configure:10078: $? = 0
configure:10104: result: 8
configure:10118: checking size of long double
configure:10423: xlc -o conftest -g -O2 conftest.c >&5
configure:10427: $? = 0
configure:10433: ./conftest
configure:10437: $? = 0
configure:10463: result: 8
configure:10480: checking size of int*
configure:10785: xlc -o conftest -g -O2 conftest.c >&5
configure:10789: $? = 0
configure:10795: ./conftest
configure:10799: $? = 0
configure:10825: result: 8
configure:10839: checking size of fp
configure:11150: xlc -o conftest -g -O2 conftest.c >&5
configure:11154: $? = 0
configure:11160: ./conftest
configure:11164: $? = 0
configure:11190: result: 8
configure:11237: checking fenv.h usability
configure:11254: xlC -c -g -O2 conftest.cpp >&5
configure:11261: $? = 0
configure:11275: result: yes
configure:11279: checking fenv.h presence
configure:11294: xlC -E conftest.cpp
configure:11301: $? = 0
configure:11315: result: yes
configure:11348: checking for fenv.h
configure:11357: result: yes
configure:11237: checking ieeefp.h usability
configure:11254: xlC -c -g -O2 conftest.cpp >&5
"conftest.cpp", line 73.10: 1540-0836 (S) The #include file <ieeefp.h> is not found.
configure:11261: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <ieeefp.h>
configure:11275: result: no
configure:11279: checking ieeefp.h presence
configure:11294: xlC -E conftest.cpp
"conftest.cpp", line 40.10: 1540-0836 (S) The #include file <ieeefp.h> is not found.
configure:11301: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| /* end confdefs.h. */
| #include <ieeefp.h>
configure:11315: result: no
configure:11348: checking for ieeefp.h
configure:11357: result: no
configure:11372: checking if it is possible to control the FPU
configure:11527: xlC -o conftest -g -O2 conftest.cpp -lm >&5
configure:11531: $? = 0
configure:11537: ./conftest
configure:11541: $? = 0
configure:11543: result: yes
configure:11594: checking whether the C++ compiler provides proper long doubles
configure:11627: xlC -o conftest -g -O2 conftest.cpp >&5
configure:11631: $? = 0
configure:11637: ./conftest
configure:11641: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| /* end confdefs.h. */
|
| #include <cfloat>
|
| long double f = 0.0;
|
| int main() {
| if ((LDBL_MAX <= DBL_MAX) && (DBL_EPSILON <= LDBL_EPSILON)
| && (LDBL_MAX_EXP <= DBL_MAX_EXP) && (LDBL_MANT_DIG <= DBL_MANT_DIG))
| return 1;
| else
| return 0;
| }
|
configure:11652: result: no
configure:11695: checking the binary format of C++ floats
configure:11763: xlC -o conftest -g -O2 conftest.cpp >&5
configure:11767: $? = 0
configure:11773: ./conftest
configure:11777: $? = 0
configure:11799: result: IEEE754 Single Precision
configure:11812: checking whether C++ provides exact output for floats
configure:11918: xlC -o conftest -g -O2 conftest.cpp >&5
configure:11922: $? = 0
configure:11928: ./conftest
configure:11932: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| /* end confdefs.h. */
|
| #include <limits>
| #ifdef HAVE_STDINT_H
| #ifndef __STDC_LIMIT_MACROS
| #define __STDC_LIMIT_MACROS 1
| #endif
| #include <stdint.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| #include <inttypes.h>
| #endif
| #include <sstream>
|
| /* Unique (nonzero) code for the IEEE 754 Single Precision
| floating point format. */
| # define PPL_FLOAT_IEEE754_SINGLE 1
|
| /* Unique (nonzero) code for the IEEE 754 Double Precision
| floating point format. */
| # define PPL_FLOAT_IEEE754_DOUBLE 2
|
| /* Unique (nonzero) code for the IEEE 754 Quad Precision
| floating point format. */
| # define PPL_FLOAT_IEEE754_QUAD 3
|
| /* Unique (nonzero) code for the Intel Double-Extended
| floating point format. */
| # define PPL_FLOAT_INTEL_DOUBLE_EXTENDED 4
|
| bool
| check(float value, const char* text) {
| std::ostringstream ss;
| ss.precision(10000);
| ss << value;
| return ss.str() == text;
| }
|
| #if SIZEOF_FLOAT == 4
|
| float
| convert(uint32_t x) {
| union {
| float value;
| uint32_t word;
| } u;
|
| u.word = x;
| return u.value;
| }
|
| #if PPL_CXX_FLOAT_BINARY_FORMAT == PPL_FLOAT_IEEE754_SINGLE
|
| int
| main() {
| if (check(convert(0xaaacccaaU),
| "-3.069535185924732179074680971098132431507110595703125e-13")
| && check(convert(0xcccaaaccU),
| "-106255968")
| && check(convert(0x00000001U),
| "1.40129846432481707092372958328991613128026194187651577175706828388979108268586060148663818836212158203125e-45")
| && check(convert(0x80000001U),
| "-1.40129846432481707092372958328991613128026194187651577175706828388979108268586060148663818836212158203125e-45"))
| return 0;
| else
| return 1;
| }
|
| #else // PPL_CXX_FLOAT_BINARY_FORMAT != FLOAT_IEEE754_SINGLE
|
| int
| main() {
| return 1;
| }
|
| #endif // PPL_CXX_FLOAT_BINARY_FORMAT != FLOAT_IEEE754_SINGLE
|
| #else // SIZEOF_FLOAT != 4
|
| int
| main() {
| return 1;
| }
|
| #endif // SIZEOF_FLOAT != 4
|
configure:11943: result: no
configure:12011: checking the binary format of C++ doubles
configure:12089: xlC -o conftest -g -O2 conftest.cpp >&5
"conftest.cpp", line 87.14: 1540-0821 (W) The floating point literal "4.9406564584124654417656879286822137236505980261432476442558568250067550727020875186529983636163599237979656469544571773092665671035593979639877479601078187812630071319031140452784581716784898210368871863605699873072305000638740915356498438731247339727316961514003171538539807412623856559117102665855668676818703956031062493194527159149245532930545654440112748012970999954193198940908041656332452475714786901472678015935523861155013480352649347201..." is out of range.
"conftest.cpp", line 89.15: 1540-0821 (W) The floating point literal "4.9406564584124654417656879286822137236505980261432476442558568250067550727020875186529983636163599237979656469544571773092665671035593979639877479601078187812630071319031140452784581716784898210368871863605699873072305000638740915356498438731247339727316961514003171538539807412623856559117102665855668676818703956031062493194527159149245532930545654440112748012970999954193198940908041656332452475714786901472678015935523861155013480352649347201..." is out of range.
configure:12093: $? = 0
configure:12099: ./conftest
configure:12103: $? = 0
configure:12125: result: IEEE754 Double Precision
configure:12139: checking whether C++ provides exact output for doubles
configure:12254: xlC -o conftest -g -O2 conftest.cpp >&5
configure:12258: $? = 0
configure:12264: ./conftest
configure:12268: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| /* end confdefs.h. */
|
| #include <limits>
| #ifdef HAVE_STDINT_H
| #ifndef __STDC_LIMIT_MACROS
| #define __STDC_LIMIT_MACROS 1
| #endif
| #include <stdint.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| #include <inttypes.h>
| #endif
| #include <sstream>
|
| /* Unique (nonzero) code for the IEEE 754 Single Precision
| floating point format. */
| # define PPL_FLOAT_IEEE754_SINGLE 1
|
| /* Unique (nonzero) code for the IEEE 754 Double Precision
| floating point format. */
| # define PPL_FLOAT_IEEE754_DOUBLE 2
|
| /* Unique (nonzero) code for the IEEE 754 Quad Precision
| floating point format. */
| # define PPL_FLOAT_IEEE754_QUAD 3
|
| /* Unique (nonzero) code for the Intel Double-Extended
| floating point format. */
| # define PPL_FLOAT_INTEL_DOUBLE_EXTENDED 4
|
| bool
| check(double value, const char* text) {
| std::ostringstream ss;
| ss.precision(10000);
| ss << value;
| return ss.str() == text;
| }
|
| #if SIZEOF_DOUBLE == 8
|
| double
| convert(uint32_t msp, uint32_t lsp) {
| union {
| double value;
| struct {
| #ifdef WORDS_BIGENDIAN
| uint32_t msp;
| uint32_t lsp;
| #else
| uint32_t lsp;
| uint32_t msp;
| #endif
| } parts;
| } u;
|
| u.parts.msp = msp;
| u.parts.lsp = lsp;
| return u.value;
| }
|
| #if PPL_CXX_DOUBLE_BINARY_FORMAT == PPL_FLOAT_IEEE754_DOUBLE
|
| int
| main() {
| if (check(convert(0xaaacccaaUL, 0xacccaaacUL),
| "-4.018242396032647085467373664662028399901175154542925376476863248797653889888945947404163925979898721593782464256360719269163883854613473748830842329884157359816532025640075051481726120707111709993717456369512975427023957197464411926714771905463723621065863511603311053477227687835693359375e-103")
| && check(convert(0xcccaaaccUL, 0xcaaacccaUL),
| "-85705035845709846787631445265530356117787053916987832397725696")
| && check(convert(0x00000000UL, 0x00000001UL),
| "4.940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625e-324")
| && check(convert(0x80000000UL, 0x00000001UL),
| "-4.940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625e-324"))
| return 0;
| else
| return 1;
| }
|
| #else // PPL_CXX_DOUBLE_BINARY_FORMAT != PPL_FLOAT_IEEE754_DOUBLE
|
| int
| main() {
| return 1;
| }
|
| #endif // PPL_CXX_DOUBLE_BINARY_FORMAT != PPL_FLOAT_IEEE754_DOUBLE
|
| #else // SIZEOF_DOUBLE != 8
|
| int
| main() {
| return 1;
| }
|
| #endif // SIZEOF_DOUBLE != 8
|
configure:12279: result: no
configure:12347: checking the binary format of C++ long doubles
configure:12425: xlC -o conftest -g -O2 conftest.cpp >&5
configure:12429: $? = 0
configure:12435: ./conftest
configure:12439: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| /* end confdefs.h. */
|
| #include <limits>
| #ifdef HAVE_STDINT_H
| #ifndef __STDC_LIMIT_MACROS
| #define __STDC_LIMIT_MACROS 1
| #endif
| #include <stdint.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| #include <inttypes.h>
| #endif
|
| #if SIZEOF_LONG_DOUBLE == 12
|
| long double
| convert(uint32_t msp, uint64_t lsp) {
| union {
| long double value;
| struct {
| #ifdef WORDS_BIGENDIAN
| uint32_t msp;
| uint64_t lsp;
| #else
| uint64_t lsp;
| uint32_t msp;
| #endif
| } parts;
| } u;
|
| u.parts.msp = msp;
| u.parts.lsp = lsp;
| return u.value;
| }
|
| int
| main() {
| if (std::numeric_limits<long double>::is_iec559
| && (convert(0xaaacccaaUL, 0xacccaaacccaaacccULL)
| == -23475151196235330448360987288488448023604990597437922665537894499317141030270831473500040521309097782521743811281100731620612303910141158923283064807755815684643856544564541670181998003713114595098650350075763370916908460284838902787487703020001649220669684278577319085319204471093693972621987808779314674903648668236688723332999785552894845325917244897920804830290985291535343986477508649100409893486651507134071296739623686984014433965803259868867855465109457220731656260670349710137932272802677796915669809481885196101414678015638835049035133835457854893845093496950772367562664955830097293678125205138879788670490610650322134182370990336443894886171520732434535881085387893610114822547025980969387956199048733969351859470324032549906964255557877860343871346618951696178837035563054101786829980983909935265617095747543882856776297861197958453847978446679149969948882161264279705948735019353220550905117946051015070744207453853343171175921378515361160726195198161165083475968.0L
| && convert(0xcccaaaccUL, 0xcaaacccaaacccaaaULL)
| == -3.234349908433673569788362433758236701401379200386310478070230491201716094576208088733092209352711081763530973139439402754721006217889031902309566905344106766697050593355851405189694125966100801537593811320493850579152938679705465870788684523518541806158791408378718596936132854683425581754205242594614192465876640102628432246897674583649745467641139234207139584810101868772915312454075582265240687184279243861217351667059920878236164506473261797703393981510799228030778152399657445848839855361831637014754038570644257393307922665529947406582062857348101442206039278033447012163028384634753160589791458287895963629514043345016273218385584012204321293761500625038828699451659598873739820939586314044735551522599884065690704853850058509917597610804664086074437219778400030370474948166770867639885264893441594112815147445129222900623635467542926999246959939000796968650036727515644358583656635086409945418378371210848857160579105176395869221692977516017583375976424496977231821652434877830409470264872173686708172667000681514442371517343085468923465834742925914605731609765839631967460042791316319023971980691582832232860491668014341598553021017317450989919240909832141247027104138677882497144506317212033031539627613710631490195651235049780490963461514410018833968072513381369320107740021476622121320911875995678620145217379068502893509758814753434218746970000807381369855297087472398985134583394635298304301976743682254755898799853471470973139487587740504614698965906370516694512439128548402418825952236144896863935402725154209604537541130862513767786738372717442238281296070010302255703329785136750848608510805269562580550421695335686256291415407706167513127610045830074144232174636354465520547408627155363076530824695464544496846799567213412195115628936631295933321590908845288558910694118404555858629368018552451467994715743285452343185080572139353967831950470208768524113647528966442712608411306460439403733081312454377815407740431356862292588345515142587184008493066353603658341268923669196617183622259532802077159684815974630350730226266887950469523895272137382682818583664766982004756872470359454855421231861600855405622250180301557001727658100463825721179482988287599820459238518127671242515104954727268296043840120459189992322364113432317376499876615018647681005294400890426164141474245830847447887800872845238979407896829797297990804023745291564182356173092302630416583955274584512411637160723327887646112927503049935866004964114798241035087343318592736488780742013424329479787548324846879335440582948017481856461250014099199025874264395426269044157577172368261822794071985989844785134561848837459343219269316428175168803982908920457749528709425299296467325603578851955843550406474402944350694486492967809731047663564513772408591390180588458110788180950470244902062953534590109356800048878919144043979000989724521292698054747484439706733411566872999353418986588749568995482953622089499726327807058708520455805869817259837526415584189633013162307753166636151833127563746069733440228640737257520299330767346391011026088684503955941755171481192133779119344715318224728775697330484860348152872987113995597980243907204928634355356748752501217143216601222634344211757170284222785899530754663487291354339744025299042982320199789070467212765859078265587040664859899997109073649635056953085131587344086263213972132295294758682559609365238437544701417284297826732242650999654640698637095193178119502815643930373741504018967640638120546136857104880094633373762586018322104925768619990210092851075031033451925224377383389610824173203445111896055901190132142204139463967556738295382942065540228560332044410017389129348710403201272349054427064370609913529996988445571571382916349536222256815467149849706750571813156961918737343978667568453623162377198802996342528197935118265696537928993634621119483415202847968129550048667353312481509419740177690982818603515625e-1634L
| && convert(0x00000000UL, 0x0000000000000001ULL)
| == 3.645199531882474602528405933619419816399050815693563343720980487028371688633397736809560708625827205197247347347203531101966985632622032169973508075589809005483822581177931678569225263805633559756621562565983410728940319793553527268591240799954172811015518538383046054768715422449295305859718268214262622067532355460844068079259753739688226338971902813354664211957293812000216762672292032277433639030845605529795518855299212255321171163487629138462930035513852750160313284578587346566858083349053123705193988703983308587839946322501468602459466376586870456423634710242397194658860357568067134477982764219736292817751295560536845761267846647908517463250923736039512722781415953366096399444403402117053488448021977763604437908687623249034116909294550532283554604255016471048510990155249694820376175072774521597924829264164672829379224834378522148847524461653340453140898534938901079999466084995792940867082225167898092626332284133633537230365710606672711016101696986908545526816093446785575823545286456670464909287063062587561930219192839574686079732400741932670792586584247903252601714502511652018733705556477669856403061671860988301022089008752404238293812121415758527179547281628232710885994458574715033852877595426024800791719981955344151916599003503828822200355665967958771090937688409231050763744882094456320484272716122798149836361660589595209083576887254232532955229749892640550762959438241278496193819382077545905461172547961340469817691165676094261320725727312607482937653140421619686103059529199421431937449566099337396063075218302243845475341677972462038126626903408167086517545386382155008956065955410392914952623927880847159533184535486666480480563407531428385329300522477684217050951264747454635754866214784941542315111038630684391425212439304190584122374222972284606537485052464648655369719099026760518287560996997210778473066980129427427439517032390964791367678221749630975419713438139162678878555999177528450882748046538588177447270306738234898502976902853001364550405227287093940058325788585457368654991956265863050083472087623066020903378919489920975190829421602010382039477772083400661519154972695436582305021910908576692048173534958894170976763084807837402813849227540942073315401115262334876815962087441302256558438912500607230205782013083674113023497612445214795170983848687988348203289441256908755565216081815151205638893112562415329084456934095146184469290901166110634875590164835606941629407489774379792739804674764243483912084691871769225446506284310565309190872477286255925383528545036360550854226919571246361133225904820301916588317084377712259367894846411294822587075835486985645510829880528578782698412556249274522235061092454342386202327120407827540333914613192189174315884136688019435966273663470431440443032136411775605030601436837063972690330417475187330200911967500496761618122614796452937124070398703890868915527051490465736745397764941094879479649438162576614346948652085308024696358256756585794568493319042053882843808180358787110774418075478801186519577416271896383169835708225636584654568643702618602433548938163720732772538345454513065011540675765510656970500413537205370067924880209217363407323673368448004904408413977741706965494247040799786451861822188473571257556819433284087486023676249467869483631380473856486239547015603318322612783652068699798539400406637311682731115340677841660240710431551140370410375585572939303084073843540702120551963050514959945741359169911676575478403279380112020347348292538150798320452794842427526501796852911863108178276638472320237870082862271763396195139513712303136194366021540830531456910584048372546025177765140460207112923151923176402146752868221966889915381596481253160696822260723194259521813054303457222367967929268763072892355278854714278243863110783067060124459039315528176840304931522813148745824350892130595015198002557204332483215551447097512510076223364801202888087635650654634946887232727623906459076670227108634162319210357007273369354657187569046394884895083794103531835959613994575377897775525461977464747518162975010091463561925032742645594645800581600698347817023194379921397347681150492687237349021564206463096138703201250277757980410772647014391579144424375252519766764670458008515297647624144814453496069685127439800629552075692648608681506879044376428977463175175205181547958459515159074701285838493694034007662410100183533141516684185460758175066481561018901133031951042099053297118837448984443230856642737606478787880285299903521855025612413471034466624171559209077538498475106811294029060334271803320566493935024621719717684804443351866946690525266060758332190531807232565501890293754259590947433140384335366973398816899253698302119916142891631005349335372158005779944529176735887193980409288474621694590303098552382376969442365186023130985507823617670051191889015351479659778676132449671642015059540438237303922903056079068344635440276772565425944329927654906262952475555750912023879424636021462043321631428365675851865654901693474343411406220907550090045689588323936814675126103464401223728058185048320475251266882875299120582253090033177883674432343812734123922042926554908548231473285349572210962289889800994026533629321464700552029391517293055196218065667251276237490129206098414338903210942488902792253924667941082273267563528653863343443486495762400409978995985052082310730277076965242846278402568285187365588876653245423047205943478612931964211293489374119565751486787204884502307512372923973119191125614068756094526892783321688030310900558025683455451898487401139315290743477461921025987905332236299398859448938742087487316288730711068752763449392366897236258997091176996253284306687635454361862179407191652155243650619571720232128624130785404930566805029233271375546253313287446285812219961565022654510373870581648214791139170870970509074158721967633425471550515801498191107216277620692347014234913527385812164834475002007099402122991439542783981984927181300669603290190495106195784248531299740262706106798338573523977365240941293695214188675632715447081372252551022981921251125675131839210074132286029621443262127145872022404314258219255606415280218445074654034790115075558513374422753617188198385931164810182817002794172279803028202086567081267453349341345496389239379776494419022301042067986600501045466950004057134726934147691678031986698845370299987067384407310337433828116514830745374490760171672152978595040351405572526523026051215093709900567873568385242574546385008567738263951532676549294356417565797771595638496719149577804216291892125541055147173723744991756669672459021375111288754125372918394417976243093028214703329386031799313949535161343892720409046065009958980978947997662545514664194262097665297242612367968766000629174655887090824363583653843658980277566031286429628476318572915045823895805826010132712977834418613468288832988547377174550796802573148684253294172285056777826927377158058647145403557721233512002495437339413998842782599710186215723437958154275340509811072349041046483806284608873394275718878590418692809288333423522781240698974441829879303794241455852776713321354870647251094720675572322788447908778778892116234131617608416732280987493141331884927860259324392781255786150891859203497212615916404999097067778739914857961305884934678762043515521190581898256624635957830927811421154992139986999936203631149852372802564314896151749326404428772008250428569338329698161850171265411426708113723558325059062871506712838460986031147060351491506316012532538793354499545667009527573810892048004652452452139688789392912938251888341298122235232861138733903153560967292104241190946350516769769305030762386908399592555043192236069279491224465826684203312081255431851756341234566913972589390601558650830437402045595207689996159597545711808203688318112918947661662115802919578636403430323041610018063696707221249826383715263388850307418469423973486747009233945036220901518185766942733836846126816638158345048782728241251279820310193223512959111029884002230571688216854282257873218631744450950552327428952538149545262779889824399028513132208638633070602135522752076661567872472325125674291268881849101416382703647451428232847993332157180794015036365361645888146355749366150209085457189187232786399585879941680370348141105404742298452497895369287193974496140445677301271403589665822911096832952021181343571136957607816318342755770560406569920261633966403484121679869542684843686908354373688437968683525723666121485947946747887572716360800696442816474113593466106089204179554677145374582437962664618883018628687510079511252556002241788346284019750863992283906513572325918053464080643521532154825074820239077990779007069588034029619562190416747359712884084324521598678178890186409451480686781733176824920276835002477523486093586963733155424491897575495851549527034538337694314953057164019215026670773910997443279760005290641511584707193226351271670439775141076552632736166117611394934325673743882365518318561208941552931629125136799711574578916741023587251428998946963182411650554404206416336487418656105333038545773960190949602850096208569085230228708894874577523512558281973392961263921656163963369388411763476388625952406901518273413037068643383550282962237729195901788599392876651086599849223994259145259240479384380657803498058719062529007339428316229997756899857712116922758683071707472935574499244978419788171338468471751125303860911589289400806637202920429489919870263415951660888975434827304297451362325052693482001524843171229078467910537913138115458626612024970730899515114301915281613929239329351501049859225274564107846818112938339161308943153205117651716380468462296193882444293370484368530096898812778973178284912798550245246063411918482638261694029245273291646707331594675213428158755273882438357960245064051015888918541801139771619743221405037797285669481455810653320008904215997597975907391512026214020012010134707536774227636477580918167507850485197065326391091171451763751237612739498468510009055480025096015985581769370179656781151306565952590101977398335185042637681982306448413722177895665290302796223004198526079143104070007874540548221582347389579e-4951L
| && convert(0x80000000UL, 0x0000000000000001ULL)
| == 3.645199531882474602528405933619419816399050815693563343720980487028371688633397736809560708625827205197247347347203531101966985632622032169973508075589809005483822581177931678569225263805633559756621562565983410728940319793553527268591240799954172811015518538383046054768715422449295305859718268214262622067532355460844068079259753739688226338971902813354664211957293812000216762672292032277433639030845605529795518855299212255321171163487629138462930035513852750160313284578587346566858083349053123705193988703983308587839946322501468602459466376586870456423634710242397194658860357568067134477982764219736292817751295560536845761267846647908517463250923736039512722781415953366096399444403402117053488448021977763604437908687623249034116909294550532283554604255016471048510990155249694820376175072774521597924829264164672829379224834378522148847524461653340453140898534938901079999466084995792940867082225167898092626332284133633537230365710606672711016101696986908545526816093446785575823545286456670464909287063062587561930219192839574686079732400741932670792586584247903252601714502511652018733705556477669856403061671860988301022089008752404238293812121415758527179547281628232710885994458574715033852877595426024800791719981955344151916599003503828822200355665967958771090937688409231050763744882094456320484272716122798149836361660589595209083576887254232532955229749892640550762959438241278496193819382077545905461172547961340469817691165676094261320725727312607482937653140421619686103059529199421431937449566099337396063075218302243845475341677972462038126626903408167086517545386382155008956065955410392914952623927880847159533184535486666480480563407531428385329300522477684217050951264747454635754866214784941542315111038630684391425212439304190584122374222972284606537485052464648655369719099026760518287560996997210778473066980129427427439517032390964791367678221749630975419713438139162678878555999177528450882748046538588177447270306738234898502976902853001364550405227287093940058325788585457368654991956265863050083472087623066020903378919489920975190829421602010382039477772083400661519154972695436582305021910908576692048173534958894170976763084807837402813849227540942073315401115262334876815962087441302256558438912500607230205782013083674113023497612445214795170983848687988348203289441256908755565216081815151205638893112562415329084456934095146184469290901166110634875590164835606941629407489774379792739804674764243483912084691871769225446506284310565309190872477286255925383528545036360550854226919571246361133225904820301916588317084377712259367894846411294822587075835486985645510829880528578782698412556249274522235061092454342386202327120407827540333914613192189174315884136688019435966273663470431440443032136411775605030601436837063972690330417475187330200911967500496761618122614796452937124070398703890868915527051490465736745397764941094879479649438162576614346948652085308024696358256756585794568493319042053882843808180358787110774418075478801186519577416271896383169835708225636584654568643702618602433548938163720732772538345454513065011540675765510656970500413537205370067924880209217363407323673368448004904408413977741706965494247040799786451861822188473571257556819433284087486023676249467869483631380473856486239547015603318322612783652068699798539400406637311682731115340677841660240710431551140370410375585572939303084073843540702120551963050514959945741359169911676575478403279380112020347348292538150798320452794842427526501796852911863108178276638472320237870082862271763396195139513712303136194366021540830531456910584048372546025177765140460207112923151923176402146752868221966889915381596481253160696822260723194259521813054303457222367967929268763072892355278854714278243863110783067060124459039315528176840304931522813148745824350892130595015198002557204332483215551447097512510076223364801202888087635650654634946887232727623906459076670227108634162319210357007273369354657187569046394884895083794103531835959613994575377897775525461977464747518162975010091463561925032742645594645800581600698347817023194379921397347681150492687237349021564206463096138703201250277757980410772647014391579144424375252519766764670458008515297647624144814453496069685127439800629552075692648608681506879044376428977463175175205181547958459515159074701285838493694034007662410100183533141516684185460758175066481561018901133031951042099053297118837448984443230856642737606478787880285299903521855025612413471034466624171559209077538498475106811294029060334271803320566493935024621719717684804443351866946690525266060758332190531807232565501890293754259590947433140384335366973398816899253698302119916142891631005349335372158005779944529176735887193980409288474621694590303098552382376969442365186023130985507823617670051191889015351479659778676132449671642015059540438237303922903056079068344635440276772565425944329927654906262952475555750912023879424636021462043321631428365675851865654901693474343411406220907550090045689588323936814675126103464401223728058185048320475251266882875299120582253090033177883674432343812734123922042926554908548231473285349572210962289889800994026533629321464700552029391517293055196218065667251276237490129206098414338903210942488902792253924667941082273267563528653863343443486495762400409978995985052082310730277076965242846278402568285187365588876653245423047205943478612931964211293489374119565751486787204884502307512372923973119191125614068756094526892783321688030310900558025683455451898487401139315290743477461921025987905332236299398859448938742087487316288730711068752763449392366897236258997091176996253284306687635454361862179407191652155243650619571720232128624130785404930566805029233271375546253313287446285812219961565022654510373870581648214791139170870970509074158721967633425471550515801498191107216277620692347014234913527385812164834475002007099402122991439542783981984927181300669603290190495106195784248531299740262706106798338573523977365240941293695214188675632715447081372252551022981921251125675131839210074132286029621443262127145872022404314258219255606415280218445074654034790115075558513374422753617188198385931164810182817002794172279803028202086567081267453349341345496389239379776494419022301042067986600501045466950004057134726934147691678031986698845370299987067384407310337433828116514830745374490760171672152978595040351405572526523026051215093709900567873568385242574546385008567738263951532676549294356417565797771595638496719149577804216291892125541055147173723744991756669672459021375111288754125372918394417976243093028214703329386031799313949535161343892720409046065009958980978947997662545514664194262097665297242612367968766000629174655887090824363583653843658980277566031286429628476318572915045823895805826010132712977834418613468288832988547377174550796802573148684253294172285056777826927377158058647145403557721233512002495437339413998842782599710186215723437958154275340509811072349041046483806284608873394275718878590418692809288333423522781240698974441829879303794241455852776713321354870647251094720675572322788447908778778892116234131617608416732280987493141331884927860259324392781255786150891859203497212615916404999097067778739914857961305884934678762043515521190581898256624635957830927811421154992139986999936203631149852372802564314896151749326404428772008250428569338329698161850171265411426708113723558325059062871506712838460986031147060351491506316012532538793354499545667009527573810892048004652452452139688789392912938251888341298122235232861138733903153560967292104241190946350516769769305030762386908399592555043192236069279491224465826684203312081255431851756341234566913972589390601558650830437402045595207689996159597545711808203688318112918947661662115802919578636403430323041610018063696707221249826383715263388850307418469423973486747009233945036220901518185766942733836846126816638158345048782728241251279820310193223512959111029884002230571688216854282257873218631744450950552327428952538149545262779889824399028513132208638633070602135522752076661567872472325125674291268881849101416382703647451428232847993332157180794015036365361645888146355749366150209085457189187232786399585879941680370348141105404742298452497895369287193974496140445677301271403589665822911096832952021181343571136957607816318342755770560406569920261633966403484121679869542684843686908354373688437968683525723666121485947946747887572716360800696442816474113593466106089204179554677145374582437962664618883018628687510079511252556002241788346284019750863992283906513572325918053464080643521532154825074820239077990779007069588034029619562190416747359712884084324521598678178890186409451480686781733176824920276835002477523486093586963733155424491897575495851549527034538337694314953057164019215026670773910997443279760005290641511584707193226351271670439775141076552632736166117611394934325673743882365518318561208941552931629125136799711574578916741023587251428998946963182411650554404206416336487418656105333038545773960190949602850096208569085230228708894874577523512558281973392961263921656163963369388411763476388625952406901518273413037068643383550282962237729195901788599392876651086599849223994259145259240479384380657803498058719062529007339428316229997756899857712116922758683071707472935574499244978419788171338468471751125303860911589289400806637202920429489919870263415951660888975434827304297451362325052693482001524843171229078467910537913138115458626612024970730899515114301915281613929239329351501049859225274564107846818112938339161308943153205117651716380468462296193882444293370484368530096898812778973178284912798550245246063411918482638261694029245273291646707331594675213428158755273882438357960245064051015888918541801139771619743221405037797285669481455810653320008904215997597975907391512026214020012010134707536774227636477580918167507850485197065326391091171451763751237612739498468510009055480025096015985581769370179656781151306565952590101977398335185042637681982306448413722177895665290302796223004198526079143104070007874540548221582347389579e-4951L))
| return 0;
| else
| return 1;
| }
|
| #else // SIZEOF_LONG_DOUBLE != 12
|
| int
| main() {
| return 1;
| }
|
| #endif // SIZEOF_LONG_DOUBLE != 12
|
configure:12551: xlC -o conftest -g -O2 conftest.cpp >&5
configure:12555: $? = 0
configure:12561: ./conftest
configure:12565: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| /* end confdefs.h. */
|
| #include <limits>
| #ifdef HAVE_STDINT_H
| #ifndef __STDC_LIMIT_MACROS
| #define __STDC_LIMIT_MACROS 1
| #endif
| #include <stdint.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| #include <inttypes.h>
| #endif
|
| #if SIZEOF_LONG_DOUBLE == 16
|
| #if defined(__sparc__) && defined(__arch64__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
|
| // Work around http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37661
| int
| main() {
| return 1;
| }
|
| #else // !defined(__sparc__) || !defined(__arch64__) ...
|
| long double
| convert(uint64_t msp, uint64_t lsp) {
| union {
| long double value;
| struct {
| #ifdef WORDS_BIGENDIAN
| uint64_t msp;
| uint64_t lsp;
| #else
| uint64_t lsp;
| uint64_t msp;
| #endif
| } parts;
| } u;
|
| u.parts.msp = msp;
| u.parts.lsp = lsp;
| return u.value;
| }
|
| int
| main() {
| if (std::numeric_limits<long double>::is_iec559
| && (convert(0xaaacccaaacccaaacULL, 0xccaaacccaaacccaaULL)
| == -8.55855653885100434741341853993902633367349104766375354667159377718342093894815477326286823233135691805519944470138219932524951165689852082013017904043605683486724317550972746307400400204571080045247416605879743573136814766221652651396476675668866980798618379071105211750397249729982891787041148520384572930274879267722158826932337019191713973025403784448443813348692062209940856126724493492803365972504505177354875652033856070760087261648660638833868952644144747756799606849182265604546917705495630867683634260396102823982577953799017062698102242357552179655099799114234932578035799185560231199083485854936098752376968393647581458407558794412029383325763638562788717260040049064497131924995762524305159587498016677454321953274959044696323291625045478494472581264819229447771276640446297211105522340278216491094195598543872903469867733674572559977106495016037365144714092305087690135013719347274733034998868445412589677425060095799279101903473205374412225289846468374532481297065712317082077938035156602646698351182648104255704218634101302925067087078955133405900007044267209898310644310904503791609310204530573463263951434586894153990739119187567218316060343579381319744970284036645819031296341711196622764674251739340075981861518157380656135644972541894187627902651874054588734732906342927804126694032667794810086817870907476586539935233288396561987441453006798066121939082312783518917156845604116991071351557087417820814737448930366014934139649936714605919733198611573267554373841805458030152706709963798138766665437195696286204333504023648063774567253657433115103351104190986192714072985487851579415615609526545777708652951405409847708647802254957197551148967040887700676749608935220270768342493900689974647088468653016844028721111482484905641458435567969469008688175230469940968306817582881926746422674891155765989419578280531847369896579997902056370886853884911608932917273377526774091310024267948445090595150848945937264274298230316059283748541372546998570685254364147022857127106166375807928861080771495427281772909457414476961102929683460150380091022216902985688084496718499522925736236100966839490544989265028487132166444183820209811985298620037327410566483546092567386575203772065259924817078378553423445114795887961447486917127608105936488957460696218995227900239169698156532097505472359601263421630872600694896078087993492528322817946497772710008837719609909497752428441503174822795185219988589528998338631725113908025553153842511443825016809012668839505492083731555461826355018782953670089090573806418379608917728933789667567839232807208925449602517595541397929042673972541764273293287457694772131268012143158809453627483947788463130353101911401667613659585055576869155534998835800762122080588150495103765874874613454517177121048246498282285280904742153700877576028449241385429235777250684782328183787286276152331338688335510090441008799792147837436640030059474106105829612076012626498555138419516242851436828131901668517305064107076254421670883938440896580435257206350630093337919967881954501164988008085285088049681541452106188312639266136685237513628484410146475880276899689323468288129178652504797093820419402611691354199968499448738482587415636727937353639264845197813295922091561637504736126720760129127710879063043647425297778439069116811334073539456451043564046959839163407469915211595468718792531664679340442279513006653831781499155674396529973036072198720572542914738630057353297633085013244779323578115668031532144051510758240504037804690564298890171218568053886450388507561335540224075309922339483204122333658701871584147135738144358394867585372134490396264937274938848938884293776466212293402264641368524174512841804801230279990820989956713963566987970818315606031084417487965298373510594915942429581446481759482857537804431542098380533075194397625795605337047384493682506827547173206735463795863376044170821429161475172513429888642402089329334654087406739184258619435041737233405001461505889892578125e-1644L
| && convert(0xcccaaacccaaacccaULL, 0xaacccaaacccaaaccULL)
| == -124514581107511552210796456934966803687304842980295573828954497922493752983397188814711304411560018580965744046315133789985274208017368151964100284400784216106649187287727268989948309893335776137201236307422254490384994342132786695251856340822607539332337741185911979986209464222776112117543477310592395735321641016191765613924234896253051931334188353106422231052895112533426462965071195000083346118845388851222468275853899619767858364593491745895616655921022591572983370616010095670881627966440183912948095715866505356803258659518882310562527709556367822539262111581385341941163873435919341717170180065638145777392282815973491833042960716493005101610346003273833563515742996380936304245423639950200211170835546053201980835724318930743625600269679260909350277600256315069013053332133830043213033329696436217829598890872375814523266366034383531514035947792389939922899745714167418517458817088636450662300503353562047987996978943856662174717195437379600755109302771921946748859230686543872.0L
| && convert(0x0000000000000000ULL, 0x0000000000000001ULL)
| == 6.475175119438025110924438958227646552499569338034681009689884389197039540124119371017671491276649940255878141476848119676587219886382542046685110071972617983042792710751334934416734625638471740239448526505553990391455556252171148068070822034688256982476272828789103028357337561348031062386564592639826226991907907867663262065711211583064657196068308332845234453069760526489447660964579313751403402631804350039948870075255648713368066117879403155766713303467434937062409411685215137607333139422843835051668983567167196802642952353504079714347103860537782893700215521168667711042950610021881513627986429461700433339201935397498825184335385514892844339930852967838448682125502304114122153045946465463084764110174478737044335312389661483639210553943411476544786261397875064191451226767614625892790369961415069606980007080502788648919975916801878222002252381723047230971876570995428821219281596547633023538783137183646396952831530551068683419596735374086746290525867996216905323365319885172609956827625511036332478353228947631880050684559150608318986521540136061273771493390412784756552103897518527764158778759333880714882279633323826397312375406927039446525306447838514371503654987855172306307584155459826707095909617752526800401326990828721633726770440915439092677906646798573524199116648264206920451160133635071361773812121716528178148240720783226736549623736135274990309138143183248371959875978805027500928693808073336955752759088442865600075199888998323880643549670055505421362435108572732087322982027187772459231228989472372951864321099261878781084330252988333921362998963303722431059741968763452406953835015120533773385289904710843628402700274702870474073825248828889984994284607604847211794221210729913159829014217168004461049532662696542913183628157199561641949923936629368992856621383084545327636972265542355341749855663020004887316835216156767223053799811067258913808469994232607858854524064432145775922144535701236468985705212977045479489515690009388923625580685788707605877343857669170894656797423368490329407251160393356048820607085089069025413584269816739747211239513550414383117508826763143512862006497058041145296097892917999935577053234252698691933792724753682184537682835562829938630004838384363944243137622864918257474256280127291116965050600178120477720784742184205376195975831677721764740044536624645764471381571452381830125398765152083287483110279394697855915713981939970684599199594863007230624076786139617554631450734995190081932187616814234632738778224433256463738346435274905710925581106061273840975592931761266799265587765468946764337085192369358316298457450008809428586921504743730873895710474614480003727146162349858333291516552162545370312200390841588309480973274631646273597390249477746657131891196482398670118797910098918899689482196956660638225731960693542763964302308999692957091061300183648329785182793301407267200046383043005236759977387601407769110383295729918654520937785586390633157020347632812108728638589813282569529576769367173324764085285705308312954957401558247168739931446569422818723482471097374362105279278558570746278168331596903799527959001674856155564619821407044799720020620642233246057848236476047540762849788325435630592420194490443539428990899488655890183886788650518595542180257939200539645041808387760238189562428351774632440622618056913137499820021924733173668036806485733443567039613866037176155955253827548473360440517049422696075501183292573063250613021167503858561082238374439193413231472608072888733326512853287806773389073299297372760244397355791502004654458118728037510329034120643030182346716011974996719598934277635297762958837247389366909763367493682299430362668996193935405226221180280462691353912282455701759810037116439968883639596108926413528826200502511551071661541071241892319070812994269518086385295992381025957172992399312141414210235547707008555590049509294048331178258885645254295737834927590332773105843826797756540039810295021699037788228205072146738094320261980823252096852875670591366194556595549470362090317233349128160475626293246538430039226463877253517855062981890058712415866578727694362877805078594115939049922697215689139042884475829798201399221843339843144334329750976265054375898637087619406776357862341599539585772173362569929723217313856218610739079911693928395573354107695207924389443047735986097057117102761647398583746704066222192489628491579241861512228457942727677656217068060304063431859444999092873095546808035894071193872676924207893595051334067870866978585241063298399448801664979503576258730853137762656715932674584878408765074348715350808211160488037567370082449596914044378631384351574514574407266268601518418121140639017772950755439822352142605465639756330937185434812776437455170052704254873689525989445652781559474644227537684964321625946200647347726100468875445797592291192363724641100602571723960104389727561487616213893880158699261565353860394268412519478250755882121502350855777548987354957187611364644347783460623918569790357712078708030071729862147204119062003145783057657964335620490686654777775857772417230654005669380137272188650104502859563282535642734533430567287319498304528915876638370296607209654727246810120749147011579846007686876872348978767610197018167444101532656500699586407674404325249380187066956228877621206281130141035339929259895087216809976356039304176324615051223863642132987493989282096132023719628675179659793099441124234181354583082636306115430335248256636595542753063577946177399294336318459611754831189657065079679934928129113295189411660749306226747061753316760480290760846421347557553607185254462514991634789163215592554565288625021429064594217444034435094635489801294636044217141894128608560200837942901104014713783039046587228833888032709513732700101667002833885010142407620233438106861087062055906874872893491133678484259720820886397724438939944326449942516696628683510030426237257765426269532595248183289611602373952305073827029425838481007443361481172033664199893614932623554378101313353925699162767581809444174957293532641034112367163940472496454826645496608268491435975330754792022473413254641635309131365360013914909519963236046952897089347016136738984133133790874101143168691022141918967797877476450100585067348766183224990814253610763592974731784263832853675045343246533254966131311531411068478710429786791811404658680805588105768518292098129259164151153126615341498379324353953450723874092401152015787628879390603785057522375088322779364007018433582543673090990833352296302290390165336647355242365982903670648563727239283547241202029021901993493453231407543942533374303128855544718854681133818703717309615999563617026069360208156393214924333856037726771259857931298487909006782987195926835910537279213582905667384935745871483880724959685377284455451325009389359115356341859747548302075715614439876712304113995679250907454883895302396632381653230532032695481751231940062856024456656381220713413431325444483757534262449339675147214243079144598658808202548926312120596697863356554722348114194969409174072455372221354826189882023922524876054935905929454258925505387898039528329076689551108932342856243697999637938228068665595345855978215420274558562368590236467711884770512666328306756286559348574636272916414332349992225277379071952095234443041820054854970323931404077610323730988914889188356127533914074856107086479831584739755622106834971368997334246432264012757261628954213626177797127289818357558926591911175376134554737367672941224416966599144520688033032388494464597481600684233179969688713377153969107014820586500187890028419759966629125896903859724482018551567368459339437282027473163713630554370146518281068049701849575089743432349308849281456182745027011845653626290780738299181305772482001250991761047543344790454625943156085044661103576512523366161351099640751135385148305913987889008698009234370941891346098306437937661227172386506980636903743541285235605780167216008920828610842066522096589500420940606405692664109905063234866117077516308694175709123219476283230290207497555159467149979347020209673500496651023554475005053991295374430728524771212435107382664318842703197811901075027036703041419315229156263279708865064004473392401710817533040210152757966691416471836361498546249180866049039738294265863864925406135752428537159880132061042828090772733103561437021070938835520484987564784902357826645006185384847299711513042558913116550679842981785737713725790045128094411676264858573201529073678073396387519268373798582548263868592119666097381189255247190641352195443081432945981901223716745712543744847146503012460085216148335807619624528396069010370871981642712755932969484501155184487454597846375782598809708096893645439856478634508146859065978179351007580744928974114529788215226484601824974140107352758776378993800008479463640459773788106039221647527915619638375897279653946867057366337834721265500081035695372958187077367633848426351345959537644131255393886949828040966112768013745671476622221973172299021322723830684345054818157484501760113734299662298242039459694484074671808880126261963999301400833575366587220239180443885948634911432672454909578479586976064598126633177835011824812040440090529736915436564330317784343260941419199007994565556336195654994767768391641843167291242587882400091208124348669996343070061026732554587428779976439512259161737036335847682346728539549778493388870528102969822923976454022477322075204905420377823800876540724560782242540043358494305758648390071388556142954991440895026034342297754624387472732697423260211014731729196139172514053952591428247887383243344755389104496037975360677224765591211970382212225942797592005272680787386239303946689423293709148965999400795905073756697025967564396661027489606337872152854151887574400979150870295978066773059913103141338094206140446153595784659696116999451265627049162745281492831846033865707908304944975732574637090102130752860241496159897720566523711477673910492376257245019657271734451417565932034846341070093018262777507790026122302775680179025723685230883459924631462602175535978001836273235741164283034661871238537285831967107455175175353583907073921428e-4966L
| && convert(0x8000000000000000ULL, 0x0000000000000001ULL)
| == -6.475175119438025110924438958227646552499569338034681009689884389197039540124119371017671491276649940255878141476848119676587219886382542046685110071972617983042792710751334934416734625638471740239448526505553990391455556252171148068070822034688256982476272828789103028357337561348031062386564592639826226991907907867663262065711211583064657196068308332845234453069760526489447660964579313751403402631804350039948870075255648713368066117879403155766713303467434937062409411685215137607333139422843835051668983567167196802642952353504079714347103860537782893700215521168667711042950610021881513627986429461700433339201935397498825184335385514892844339930852967838448682125502304114122153045946465463084764110174478737044335312389661483639210553943411476544786261397875064191451226767614625892790369961415069606980007080502788648919975916801878222002252381723047230971876570995428821219281596547633023538783137183646396952831530551068683419596735374086746290525867996216905323365319885172609956827625511036332478353228947631880050684559150608318986521540136061273771493390412784756552103897518527764158778759333880714882279633323826397312375406927039446525306447838514371503654987855172306307584155459826707095909617752526800401326990828721633726770440915439092677906646798573524199116648264206920451160133635071361773812121716528178148240720783226736549623736135274990309138143183248371959875978805027500928693808073336955752759088442865600075199888998323880643549670055505421362435108572732087322982027187772459231228989472372951864321099261878781084330252988333921362998963303722431059741968763452406953835015120533773385289904710843628402700274702870474073825248828889984994284607604847211794221210729913159829014217168004461049532662696542913183628157199561641949923936629368992856621383084545327636972265542355341749855663020004887316835216156767223053799811067258913808469994232607858854524064432145775922144535701236468985705212977045479489515690009388923625580685788707605877343857669170894656797423368490329407251160393356048820607085089069025413584269816739747211239513550414383117508826763143512862006497058041145296097892917999935577053234252698691933792724753682184537682835562829938630004838384363944243137622864918257474256280127291116965050600178120477720784742184205376195975831677721764740044536624645764471381571452381830125398765152083287483110279394697855915713981939970684599199594863007230624076786139617554631450734995190081932187616814234632738778224433256463738346435274905710925581106061273840975592931761266799265587765468946764337085192369358316298457450008809428586921504743730873895710474614480003727146162349858333291516552162545370312200390841588309480973274631646273597390249477746657131891196482398670118797910098918899689482196956660638225731960693542763964302308999692957091061300183648329785182793301407267200046383043005236759977387601407769110383295729918654520937785586390633157020347632812108728638589813282569529576769367173324764085285705308312954957401558247168739931446569422818723482471097374362105279278558570746278168331596903799527959001674856155564619821407044799720020620642233246057848236476047540762849788325435630592420194490443539428990899488655890183886788650518595542180257939200539645041808387760238189562428351774632440622618056913137499820021924733173668036806485733443567039613866037176155955253827548473360440517049422696075501183292573063250613021167503858561082238374439193413231472608072888733326512853287806773389073299297372760244397355791502004654458118728037510329034120643030182346716011974996719598934277635297762958837247389366909763367493682299430362668996193935405226221180280462691353912282455701759810037116439968883639596108926413528826200502511551071661541071241892319070812994269518086385295992381025957172992399312141414210235547707008555590049509294048331178258885645254295737834927590332773105843826797756540039810295021699037788228205072146738094320261980823252096852875670591366194556595549470362090317233349128160475626293246538430039226463877253517855062981890058712415866578727694362877805078594115939049922697215689139042884475829798201399221843339843144334329750976265054375898637087619406776357862341599539585772173362569929723217313856218610739079911693928395573354107695207924389443047735986097057117102761647398583746704066222192489628491579241861512228457942727677656217068060304063431859444999092873095546808035894071193872676924207893595051334067870866978585241063298399448801664979503576258730853137762656715932674584878408765074348715350808211160488037567370082449596914044378631384351574514574407266268601518418121140639017772950755439822352142605465639756330937185434812776437455170052704254873689525989445652781559474644227537684964321625946200647347726100468875445797592291192363724641100602571723960104389727561487616213893880158699261565353860394268412519478250755882121502350855777548987354957187611364644347783460623918569790357712078708030071729862147204119062003145783057657964335620490686654777775857772417230654005669380137272188650104502859563282535642734533430567287319498304528915876638370296607209654727246810120749147011579846007686876872348978767610197018167444101532656500699586407674404325249380187066956228877621206281130141035339929259895087216809976356039304176324615051223863642132987493989282096132023719628675179659793099441124234181354583082636306115430335248256636595542753063577946177399294336318459611754831189657065079679934928129113295189411660749306226747061753316760480290760846421347557553607185254462514991634789163215592554565288625021429064594217444034435094635489801294636044217141894128608560200837942901104014713783039046587228833888032709513732700101667002833885010142407620233438106861087062055906874872893491133678484259720820886397724438939944326449942516696628683510030426237257765426269532595248183289611602373952305073827029425838481007443361481172033664199893614932623554378101313353925699162767581809444174957293532641034112367163940472496454826645496608268491435975330754792022473413254641635309131365360013914909519963236046952897089347016136738984133133790874101143168691022141918967797877476450100585067348766183224990814253610763592974731784263832853675045343246533254966131311531411068478710429786791811404658680805588105768518292098129259164151153126615341498379324353953450723874092401152015787628879390603785057522375088322779364007018433582543673090990833352296302290390165336647355242365982903670648563727239283547241202029021901993493453231407543942533374303128855544718854681133818703717309615999563617026069360208156393214924333856037726771259857931298487909006782987195926835910537279213582905667384935745871483880724959685377284455451325009389359115356341859747548302075715614439876712304113995679250907454883895302396632381653230532032695481751231940062856024456656381220713413431325444483757534262449339675147214243079144598658808202548926312120596697863356554722348114194969409174072455372221354826189882023922524876054935905929454258925505387898039528329076689551108932342856243697999637938228068665595345855978215420274558562368590236467711884770512666328306756286559348574636272916414332349992225277379071952095234443041820054854970323931404077610323730988914889188356127533914074856107086479831584739755622106834971368997334246432264012757261628954213626177797127289818357558926591911175376134554737367672941224416966599144520688033032388494464597481600684233179969688713377153969107014820586500187890028419759966629125896903859724482018551567368459339437282027473163713630554370146518281068049701849575089743432349308849281456182745027011845653626290780738299181305772482001250991761047543344790454625943156085044661103576512523366161351099640751135385148305913987889008698009234370941891346098306437937661227172386506980636903743541285235605780167216008920828610842066522096589500420940606405692664109905063234866117077516308694175709123219476283230290207497555159467149979347020209673500496651023554475005053991295374430728524771212435107382664318842703197811901075027036703041419315229156263279708865064004473392401710817533040210152757966691416471836361498546249180866049039738294265863864925406135752428537159880132061042828090772733103561437021070938835520484987564784902357826645006185384847299711513042558913116550679842981785737713725790045128094411676264858573201529073678073396387519268373798582548263868592119666097381189255247190641352195443081432945981901223716745712543744847146503012460085216148335807619624528396069010370871981642712755932969484501155184487454597846375782598809708096893645439856478634508146859065978179351007580744928974114529788215226484601824974140107352758776378993800008479463640459773788106039221647527915619638375897279653946867057366337834721265500081035695372958187077367633848426351345959537644131255393886949828040966112768013745671476622221973172299021322723830684345054818157484501760113734299662298242039459694484074671808880126261963999301400833575366587220239180443885948634911432672454909578479586976064598126633177835011824812040440090529736915436564330317784343260941419199007994565556336195654994767768391641843167291242587882400091208124348669996343070061026732554587428779976439512259161737036335847682346728539549778493388870528102969822923976454022477322075204905420377823800876540724560782242540043358494305758648390071388556142954991440895026034342297754624387472732697423260211014731729196139172514053952591428247887383243344755389104496037975360677224765591211970382212225942797592005272680787386239303946689423293709148965999400795905073756697025967564396661027489606337872152854151887574400979150870295978066773059913103141338094206140446153595784659696116999451265627049162745281492831846033865707908304944975732574637090102130752860241496159897720566523711477673910492376257245019657271734451417565932034846341070093018262777507790026122302775680179025723685230883459924631462602175535978001836273235741164283034661871238537285831967107455175175353583907073921428e-4966L))
| return 0;
| else
| return 1;
| }
|
| #endif // !defined(__sparc__) || !defined(__arch64__) ...
|
| #else // SIZEOF_LONG_DOUBLE != 16
|
| int
| main() {
| return 1;
| }
|
| #endif // SIZEOF_LONG_DOUBLE != 16
|
configure:12665: xlC -o conftest -g -O2 conftest.cpp >&5
configure:12669: $? = 0
configure:12675: ./conftest
configure:12679: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| /* end confdefs.h. */
|
| #include <limits>
| #ifdef HAVE_STDINT_H
| #ifndef __STDC_LIMIT_MACROS
| #define __STDC_LIMIT_MACROS 1
| #endif
| #include <stdint.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| #include <inttypes.h>
| #endif
|
| #if SIZEOF_LONG_DOUBLE == 16
|
| long double
| convert(uint64_t msp, uint64_t lsp) {
| union {
| long double value;
| struct {
| #ifdef WORDS_BIGENDIAN
| uint64_t msp;
| uint64_t lsp;
| #else
| uint64_t lsp;
| uint64_t msp;
| #endif
| } parts;
| } u;
|
| u.parts.msp = msp;
| u.parts.lsp = lsp;
| return u.value;
| }
|
| int
| main() {
| if (std::numeric_limits<long double>::is_iec559
| && (convert(0xaaacccaaacccaaacULL, 0xccaaacccaaacccaaULL)
| == -7.6048540943660203383375998875878002021755137452856942966991187375790618225432711954682137529456970686263412309600617913197560145993931792374946076061175594550915924955313391528566777352996816141138550473090399783817652516896553304678788796532976847530386107750759127004897950996937530751872097675156395937218234460013748219954603465088115161828048215763754331575034447236689765045674584188927116128770082933362914567237187017530082528540058002631800274192146485961758366625476271676375489358478966148719270989233284454992652229565352739884432045036085427546783826745250197623257802129011015273728848161395367551745780868250488191368846207890422268873532651627591649389757751752362072212699309947970918940313250863861141479770240104635553035870698789854752554391365757900620463269938427975381635241159694500569550818398323639621243086116154792038064941523448921284117826015673798399008555604372098051095571652170081985843614541956756469168604624857938653843172027861680499952062356914208628014745759010068414302636374017506453133466034362025545080555878082849488386388633197121003201192243150535143329731394874806398663589117246866205872431804204733617792317769570293754056793574570217834482046448788177551912250351735294891953434051815332631157674735614138641122106756749236824504094008852401427746414294902929999820878756040223246586814590339767277305131757114819123212897500810087015748205562614251410818122967399030151040544000563841334553718469935435435467196184665715776274355094471974036803615388313095637066824428688301387559074204015990782977635088047810891072724763113879034313256582868462323549141603475107584159170279311985555035822254439699354641467841523895459190280971487264907972306090449968125859834702627544039374770757804202780369083049631377117943503836158566134919890165392965694050010089785271180956974707841066789578714463804030217977213138932711313311673101336981407798868338574571646697479192174043005729926344062133712267722538847635563454980776602355539986984320762864338177037919835721981686778834558429264194379257521818498431326991615024245632036376472844033831041082865649867453234086495085785897620758602105639344460383483879837994732204331335249564434458633345708439547881275060781028856140511029543559841701048277393119691261302356763314623124427357421753631218361407626116820986377721964654181839884670481278855478057996766639496909094607181503284084821580817995489740980323820218685313435967428474842973086612053963343516426226771094376179468881265734324847319127862733279299033951360912038720313525324094079916937921290391173035983474894312808532257620563284126400481460163180987618432784215807933623038747129658746767737999870125917269554155887740155308886259497202672935871853706835670467770080598813171256855182510726902033818328368569915805303784312301890212694874227119220544172084552511408717615136830401766455214293141216171050374325461714383991698910564587610624980490526840861990674615172112493813749497898151186927777122955666180439323595468816129418014664347852590958362752922841159054568358354108159485566264221008508127941168192513144760720303715640604755054290633421601734103622748053919536319416025380484868142967373186019970714662893713233834399238357795019603619284595839414945178963942707310299674873908104634979966232181071013259653467885733418936194081202149071958107062125873498848807502257018093517304220495114497635240876547262237411350327960679115197531609627900227913193653254580253539005743563270152329126178570329413401577715075363838562221558204219798925982825556469998988615897432425107152113543617151738802778259560442930074253918797315241708532198010528564246933829811859278710445896556638416265987381678070434371355795025956293319362293063591248665429733880825207421011852020394068840244110140622151494488609575671090387230241296949998536132398625008053543954239573998167556201366323875845409929752349853515625e-1644L
| && convert(0xcccaaacccaaacccaULL, 0xaacccaaacccaaaccULL)
| == -99658331877181425640389193712445288804009112642407197633229907048864350192381814628233384153539524368748305269642704450459572458913058829202094408933558533552137589226430537671503754737153845553845646099179512540696038707395491223325946106007770844660381340028079827237033670900446083793353682761885084154898636897779677124010119288945740273072415898996441722571487815052387317025675191665761918119006431828756780493604546658949166486641354783002536071366287780290680620995991797712341457334946893188786269086688063732222194404683551757689083590842400866213237312413463207537587813396338061744078437770542720749055069473347142994267706326342325536219464867910547533482061181116137767384001927599515332824741827726661184966512254203502805790565338206862173475388342339711722457620964017690492860707751327158273522191943184085888284707357024653025991470473697475045491586713324994056478341556198451786713470909185879382607340766256394396819602885198511409676789226542867632933493115191296.0L
| && convert(0x0000000000000000ULL, 0x0000000000000001ULL)
| == 3.645199531882474602528405933619419816399050815693563343720980487028371688633397736809560708625827205197247347347203531101966985632622032169973508075589809005483822581177931678569225263805633559756621562565983410728940319793553527268591240799954172811015518538383046054768715422449295305859718268214262622067532355460844068079259753739688226338971902813354664211957293812000216762672292032277433639030845605529795518855299212255321171163487629138462930035513852750160313284578587346566858083349053123705193988703983308587839946322501468602459466376586870456423634710242397194658860357568067134477982764219736292817751295560536845761267846647908517463250923736039512722781415953366096399444403402117053488448021977763604437908687623249034116909294550532283554604255016471048510990155249694820376175072774521597924829264164672829379224834378522148847524461653340453140898534938901079999466084995792940867082225167898092626332284133633537230365710606672711016101696986908545526816093446785575823545286456670464909287063062587561930219192839574686079732400741932670792586584247903252601714502511652018733705556477669856403061671860988301022089008752404238293812121415758527179547281628232710885994458574715033852877595426024800791719981955344151916599003503828822200355665967958771090937688409231050763744882094456320484272716122798149836361660589595209083576887254232532955229749892640550762959438241278496193819382077545905461172547961340469817691165676094261320725727312607482937653140421619686103059529199421431937449566099337396063075218302243845475341677972462038126626903408167086517545386382155008956065955410392914952623927880847159533184535486666480480563407531428385329300522477684217050951264747454635754866214784941542315111038630684391425212439304190584122374222972284606537485052464648655369719099026760518287560996997210778473066980129427427439517032390964791367678221749630975419713438139162678878555999177528450882748046538588177447270306738234898502976902853001364550405227287093940058325788585457368654991956265863050083472087623066020903378919489920975190829421602010382039477772083400661519154972695436582305021910908576692048173534958894170976763084807837402813849227540942073315401115262334876815962087441302256558438912500607230205782013083674113023497612445214795170983848687988348203289441256908755565216081815151205638893112562415329084456934095146184469290901166110634875590164835606941629407489774379792739804674764243483912084691871769225446506284310565309190872477286255925383528545036360550854226919571246361133225904820301916588317084377712259367894846411294822587075835486985645510829880528578782698412556249274522235061092454342386202327120407827540333914613192189174315884136688019435966273663470431440443032136411775605030601436837063972690330417475187330200911967500496761618122614796452937124070398703890868915527051490465736745397764941094879479649438162576614346948652085308024696358256756585794568493319042053882843808180358787110774418075478801186519577416271896383169835708225636584654568643702618602433548938163720732772538345454513065011540675765510656970500413537205370067924880209217363407323673368448004904408413977741706965494247040799786451861822188473571257556819433284087486023676249467869483631380473856486239547015603318322612783652068699798539400406637311682731115340677841660240710431551140370410375585572939303084073843540702120551963050514959945741359169911676575478403279380112020347348292538150798320452794842427526501796852911863108178276638472320237870082862271763396195139513712303136194366021540830531456910584048372546025177765140460207112923151923176402146752868221966889915381596481253160696822260723194259521813054303457222367967929268763072892355278854714278243863110783067060124459039315528176840304931522813148745824350892130595015198002557204332483215551447097512510076223364801202888087635650654634946887232727623906459076670227108634162319210357007273369354657187569046394884895083794103531835959613994575377897775525461977464747518162975010091463561925032742645594645800581600698347817023194379921397347681150492687237349021564206463096138703201250277757980410772647014391579144424375252519766764670458008515297647624144814453496069685127439800629552075692648608681506879044376428977463175175205181547958459515159074701285838493694034007662410100183533141516684185460758175066481561018901133031951042099053297118837448984443230856642737606478787880285299903521855025612413471034466624171559209077538498475106811294029060334271803320566493935024621719717684804443351866946690525266060758332190531807232565501890293754259590947433140384335366973398816899253698302119916142891631005349335372158005779944529176735887193980409288474621694590303098552382376969442365186023130985507823617670051191889015351479659778676132449671642015059540438237303922903056079068344635440276772565425944329927654906262952475555750912023879424636021462043321631428365675851865654901693474343411406220907550090045689588323936814675126103464401223728058185048320475251266882875299120582253090033177883674432343812734123922042926554908548231473285349572210962289889800994026533629321464700552029391517293055196218065667251276237490129206098414338903210942488902792253924667941082273267563528653863343443486495762400409978995985052082310730277076965242846278402568285187365588876653245423047205943478612931964211293489374119565751486787204884502307512372923973119191125614068756094526892783321688030310900558025683455451898487401139315290743477461921025987905332236299398859448938742087487316288730711068752763449392366897236258997091176996253284306687635454361862179407191652155243650619571720232128624130785404930566805029233271375546253313287446285812219961565022654510373870581648214791139170870970509074158721967633425471550515801498191107216277620692347014234913527385812164834475002007099402122991439542783981984927181300669603290190495106195784248531299740262706106798338573523977365240941293695214188675632715447081372252551022981921251125675131839210074132286029621443262127145872022404314258219255606415280218445074654034790115075558513374422753617188198385931164810182817002794172279803028202086567081267453349341345496389239379776494419022301042067986600501045466950004057134726934147691678031986698845370299987067384407310337433828116514830745374490760171672152978595040351405572526523026051215093709900567873568385242574546385008567738263951532676549294356417565797771595638496719149577804216291892125541055147173723744991756669672459021375111288754125372918394417976243093028214703329386031799313949535161343892720409046065009958980978947997662545514664194262097665297242612367968766000629174655887090824363583653843658980277566031286429628476318572915045823895805826010132712977834418613468288832988547377174550796802573148684253294172285056777826927377158058647145403557721233512002495437339413998842782599710186215723437958154275340509811072349041046483806284608873394275718878590418692809288333423522781240698974441829879303794241455852776713321354870647251094720675572322788447908778778892116234131617608416732280987493141331884927860259324392781255786150891859203497212615916404999097067778739914857961305884934678762043515521190581898256624635957830927811421154992139986999936203631149852372802564314896151749326404428772008250428569338329698161850171265411426708113723558325059062871506712838460986031147060351491506316012532538793354499545667009527573810892048004652452452139688789392912938251888341298122235232861138733903153560967292104241190946350516769769305030762386908399592555043192236069279491224465826684203312081255431851756341234566913972589390601558650830437402045595207689996159597545711808203688318112918947661662115802919578636403430323041610018063696707221249826383715263388850307418469423973486747009233945036220901518185766942733836846126816638158345048782728241251279820310193223512959111029884002230571688216854282257873218631744450950552327428952538149545262779889824399028513132208638633070602135522752076661567872472325125674291268881849101416382703647451428232847993332157180794015036365361645888146355749366150209085457189187232786399585879941680370348141105404742298452497895369287193974496140445677301271403589665822911096832952021181343571136957607816318342755770560406569920261633966403484121679869542684843686908354373688437968683525723666121485947946747887572716360800696442816474113593466106089204179554677145374582437962664618883018628687510079511252556002241788346284019750863992283906513572325918053464080643521532154825074820239077990779007069588034029619562190416747359712884084324521598678178890186409451480686781733176824920276835002477523486093586963733155424491897575495851549527034538337694314953057164019215026670773910997443279760005290641511584707193226351271670439775141076552632736166117611394934325673743882365518318561208941552931629125136799711574578916741023587251428998946963182411650554404206416336487418656105333038545773960190949602850096208569085230228708894874577523512558281973392961263921656163963369388411763476388625952406901518273413037068643383550282962237729195901788599392876651086599849223994259145259240479384380657803498058719062529007339428316229997756899857712116922758683071707472935574499244978419788171338468471751125303860911589289400806637202920429489919870263415951660888975434827304297451362325052693482001524843171229078467910537913138115458626612024970730899515114301915281613929239329351501049859225274564107846818112938339161308943153205117651716380468462296193882444293370484368530096898812778973178284912798550245246063411918482638261694029245273291646707331594675213428158755273882438357960245064051015888918541801139771619743221405037797285669481455810653320008904215997597975907391512026214020012010134707536774227636477580918167507850485197065326391091171451763751237612739498468510009055480025096015985581769370179656781151306565952590101977398335185042637681982306448413722177895665290302796223004198526079143104070007874540548221582347389579e-4951L
| && convert(0x8000000000000000ULL, 0x0000000000000001ULL)
| == 3.645199531882474602528405933619419816399050815693563343720980487028371688633397736809560708625827205197247347347203531101966985632622032169973508075589809005483822581177931678569225263805633559756621562565983410728940319793553527268591240799954172811015518538383046054768715422449295305859718268214262622067532355460844068079259753739688226338971902813354664211957293812000216762672292032277433639030845605529795518855299212255321171163487629138462930035513852750160313284578587346566858083349053123705193988703983308587839946322501468602459466376586870456423634710242397194658860357568067134477982764219736292817751295560536845761267846647908517463250923736039512722781415953366096399444403402117053488448021977763604437908687623249034116909294550532283554604255016471048510990155249694820376175072774521597924829264164672829379224834378522148847524461653340453140898534938901079999466084995792940867082225167898092626332284133633537230365710606672711016101696986908545526816093446785575823545286456670464909287063062587561930219192839574686079732400741932670792586584247903252601714502511652018733705556477669856403061671860988301022089008752404238293812121415758527179547281628232710885994458574715033852877595426024800791719981955344151916599003503828822200355665967958771090937688409231050763744882094456320484272716122798149836361660589595209083576887254232532955229749892640550762959438241278496193819382077545905461172547961340469817691165676094261320725727312607482937653140421619686103059529199421431937449566099337396063075218302243845475341677972462038126626903408167086517545386382155008956065955410392914952623927880847159533184535486666480480563407531428385329300522477684217050951264747454635754866214784941542315111038630684391425212439304190584122374222972284606537485052464648655369719099026760518287560996997210778473066980129427427439517032390964791367678221749630975419713438139162678878555999177528450882748046538588177447270306738234898502976902853001364550405227287093940058325788585457368654991956265863050083472087623066020903378919489920975190829421602010382039477772083400661519154972695436582305021910908576692048173534958894170976763084807837402813849227540942073315401115262334876815962087441302256558438912500607230205782013083674113023497612445214795170983848687988348203289441256908755565216081815151205638893112562415329084456934095146184469290901166110634875590164835606941629407489774379792739804674764243483912084691871769225446506284310565309190872477286255925383528545036360550854226919571246361133225904820301916588317084377712259367894846411294822587075835486985645510829880528578782698412556249274522235061092454342386202327120407827540333914613192189174315884136688019435966273663470431440443032136411775605030601436837063972690330417475187330200911967500496761618122614796452937124070398703890868915527051490465736745397764941094879479649438162576614346948652085308024696358256756585794568493319042053882843808180358787110774418075478801186519577416271896383169835708225636584654568643702618602433548938163720732772538345454513065011540675765510656970500413537205370067924880209217363407323673368448004904408413977741706965494247040799786451861822188473571257556819433284087486023676249467869483631380473856486239547015603318322612783652068699798539400406637311682731115340677841660240710431551140370410375585572939303084073843540702120551963050514959945741359169911676575478403279380112020347348292538150798320452794842427526501796852911863108178276638472320237870082862271763396195139513712303136194366021540830531456910584048372546025177765140460207112923151923176402146752868221966889915381596481253160696822260723194259521813054303457222367967929268763072892355278854714278243863110783067060124459039315528176840304931522813148745824350892130595015198002557204332483215551447097512510076223364801202888087635650654634946887232727623906459076670227108634162319210357007273369354657187569046394884895083794103531835959613994575377897775525461977464747518162975010091463561925032742645594645800581600698347817023194379921397347681150492687237349021564206463096138703201250277757980410772647014391579144424375252519766764670458008515297647624144814453496069685127439800629552075692648608681506879044376428977463175175205181547958459515159074701285838493694034007662410100183533141516684185460758175066481561018901133031951042099053297118837448984443230856642737606478787880285299903521855025612413471034466624171559209077538498475106811294029060334271803320566493935024621719717684804443351866946690525266060758332190531807232565501890293754259590947433140384335366973398816899253698302119916142891631005349335372158005779944529176735887193980409288474621694590303098552382376969442365186023130985507823617670051191889015351479659778676132449671642015059540438237303922903056079068344635440276772565425944329927654906262952475555750912023879424636021462043321631428365675851865654901693474343411406220907550090045689588323936814675126103464401223728058185048320475251266882875299120582253090033177883674432343812734123922042926554908548231473285349572210962289889800994026533629321464700552029391517293055196218065667251276237490129206098414338903210942488902792253924667941082273267563528653863343443486495762400409978995985052082310730277076965242846278402568285187365588876653245423047205943478612931964211293489374119565751486787204884502307512372923973119191125614068756094526892783321688030310900558025683455451898487401139315290743477461921025987905332236299398859448938742087487316288730711068752763449392366897236258997091176996253284306687635454361862179407191652155243650619571720232128624130785404930566805029233271375546253313287446285812219961565022654510373870581648214791139170870970509074158721967633425471550515801498191107216277620692347014234913527385812164834475002007099402122991439542783981984927181300669603290190495106195784248531299740262706106798338573523977365240941293695214188675632715447081372252551022981921251125675131839210074132286029621443262127145872022404314258219255606415280218445074654034790115075558513374422753617188198385931164810182817002794172279803028202086567081267453349341345496389239379776494419022301042067986600501045466950004057134726934147691678031986698845370299987067384407310337433828116514830745374490760171672152978595040351405572526523026051215093709900567873568385242574546385008567738263951532676549294356417565797771595638496719149577804216291892125541055147173723744991756669672459021375111288754125372918394417976243093028214703329386031799313949535161343892720409046065009958980978947997662545514664194262097665297242612367968766000629174655887090824363583653843658980277566031286429628476318572915045823895805826010132712977834418613468288832988547377174550796802573148684253294172285056777826927377158058647145403557721233512002495437339413998842782599710186215723437958154275340509811072349041046483806284608873394275718878590418692809288333423522781240698974441829879303794241455852776713321354870647251094720675572322788447908778778892116234131617608416732280987493141331884927860259324392781255786150891859203497212615916404999097067778739914857961305884934678762043515521190581898256624635957830927811421154992139986999936203631149852372802564314896151749326404428772008250428569338329698161850171265411426708113723558325059062871506712838460986031147060351491506316012532538793354499545667009527573810892048004652452452139688789392912938251888341298122235232861138733903153560967292104241190946350516769769305030762386908399592555043192236069279491224465826684203312081255431851756341234566913972589390601558650830437402045595207689996159597545711808203688318112918947661662115802919578636403430323041610018063696707221249826383715263388850307418469423973486747009233945036220901518185766942733836846126816638158345048782728241251279820310193223512959111029884002230571688216854282257873218631744450950552327428952538149545262779889824399028513132208638633070602135522752076661567872472325125674291268881849101416382703647451428232847993332157180794015036365361645888146355749366150209085457189187232786399585879941680370348141105404742298452497895369287193974496140445677301271403589665822911096832952021181343571136957607816318342755770560406569920261633966403484121679869542684843686908354373688437968683525723666121485947946747887572716360800696442816474113593466106089204179554677145374582437962664618883018628687510079511252556002241788346284019750863992283906513572325918053464080643521532154825074820239077990779007069588034029619562190416747359712884084324521598678178890186409451480686781733176824920276835002477523486093586963733155424491897575495851549527034538337694314953057164019215026670773910997443279760005290641511584707193226351271670439775141076552632736166117611394934325673743882365518318561208941552931629125136799711574578916741023587251428998946963182411650554404206416336487418656105333038545773960190949602850096208569085230228708894874577523512558281973392961263921656163963369388411763476388625952406901518273413037068643383550282962237729195901788599392876651086599849223994259145259240479384380657803498058719062529007339428316229997756899857712116922758683071707472935574499244978419788171338468471751125303860911589289400806637202920429489919870263415951660888975434827304297451362325052693482001524843171229078467910537913138115458626612024970730899515114301915281613929239329351501049859225274564107846818112938339161308943153205117651716380468462296193882444293370484368530096898812778973178284912798550245246063411918482638261694029245273291646707331594675213428158755273882438357960245064051015888918541801139771619743221405037797285669481455810653320008904215997597975907391512026214020012010134707536774227636477580918167507850485197065326391091171451763751237612739498468510009055480025096015985581769370179656781151306565952590101977398335185042637681982306448413722177895665290302796223004198526079143104070007874540548221582347389579e-4951L))
| return 0;
| else
| return 1;
| }
|
| #else // SIZEOF_LONG_DOUBLE != 16
|
| int
| main() {
| return 1;
| }
|
| #endif // SIZEOF_LONG_DOUBLE != 16
|
configure:12779: xlC -o conftest -g -O2 conftest.cpp >&5
configure:12783: $? = 0
configure:12789: ./conftest
configure:12793: $? = 0
configure:12816: result: IEEE754 Double Precision
configure:12830: checking whether C++ provides exact output for long doubles
configure:13058: xlC -o conftest -g -O2 conftest.cpp >&5
configure:13062: $? = 0
configure:13068: ./conftest
configure:13072: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| /* end confdefs.h. */
|
| #include <limits>
| #ifdef HAVE_STDINT_H
| #ifndef __STDC_LIMIT_MACROS
| #define __STDC_LIMIT_MACROS 1
| #endif
| #include <stdint.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| #include <inttypes.h>
| #endif
| #include <sstream>
|
| /* Unique (nonzero) code for the IEEE 754 Single Precision
| floating point format. */
| # define PPL_FLOAT_IEEE754_SINGLE 1
|
| /* Unique (nonzero) code for the IEEE 754 Double Precision
| floating point format. */
| # define PPL_FLOAT_IEEE754_DOUBLE 2
|
| /* Unique (nonzero) code for the IEEE 754 Quad Precision
| floating point format. */
| # define PPL_FLOAT_IEEE754_QUAD 3
|
| /* Unique (nonzero) code for the Intel Double-Extended
| floating point format. */
| # define PPL_FLOAT_INTEL_DOUBLE_EXTENDED 4
|
| bool
| check(long double value, const char* text) {
| std::ostringstream ss;
| ss.precision(10000);
| ss << value;
| return ss.str() == text;
| }
|
| #if SIZEOF_LONG_DOUBLE == 12
|
| long double
| convert(uint32_t msp, uint64_t lsp) {
| union {
| long double value;
| struct {
| #ifdef WORDS_BIGENDIAN
| uint32_t msp;
| uint64_t lsp;
| #else
| uint64_t lsp;
| uint32_t msp;
| #endif
| } parts;
| } u;
|
| u.parts.msp = msp;
| u.parts.lsp = lsp;
| return u.value;
| }
|
| #if PPL_CXX_LONG_DOUBLE_BINARY_FORMAT == PPL_FLOAT_INTEL_DOUBLE_EXTENDED
|
| int
| main() {
| if (check(convert(0xaaacccaaUL, 0xacccaaacccaaacccULL),
| "-23475151196235330448360987288488448023604990597437922665537894499317141030270831473500040521309097782521743811281100731620612303910141158923283064807755815684643856544564541670181998003713114595098650350075763370916908460284838902787487703020001649220669684278577319085319204471093693972621987808779314674903648668236688723332999785552894845325917244897920804830290985291535343986477508649100409893486651507134071296739623686984014433965803259868867855465109457220731656260670349710137932272802677796915669809481885196101414678015638835049035133835457854893845093496950772367562664955830097293678125205138879788670490610650322134182370990336443894886171520732434535881085387893610114822547025980969387956199048733969351859470324032549906964255557877860343871346618951696178837035563054101786829980983909935265617095747543882856776297861197958453847978446679149969948882161264279705948735019353220550905117946051015070744207453853343171175921378515361160726195198161165083475968")
| && check(convert(0xcccaaaccUL, 0xcaaacccaaacccaaaULL),
| "-3.234349908433673569788362433758236701401379200386310478070230491201716094576208088733092209352711081763530973139439402754721006217889031902309566905344106766697050593355851405189694125966100801537593811320493850579152938679705465870788684523518541806158791408378718596936132854683425581754205242594614192465876640102628432246897674583649745467641139234207139584810101868772915312454075582265240687184279243861217351667059920878236164506473261797703393981510799228030778152399657445848839855361831637014754038570644257393307922665529947406582062857348101442206039278033447012163028384634753160589791458287895963629514043345016273218385584012204321293761500625038828699451659598873739820939586314044735551522599884065690704853850058509917597610804664086074437219778400030370474948166770867639885264893441594112815147445129222900623635467542926999246959939000796968650036727515644358583656635086409945418378371210848857160579105176395869221692977516017583375976424496977231821652434877830409470264872173686708172667000681514442371517343085468923465834742925914605731609765839631967460042791316319023971980691582832232860491668014341598553021017317450989919240909832141247027104138677882497144506317212033031539627613710631490195651235049780490963461514410018833968072513381369320107740021476622121320911875995678620145217379068502893509758814753434218746970000807381369855297087472398985134583394635298304301976743682254755898799853471470973139487587740504614698965906370516694512439128548402418825952236144896863935402725154209604537541130862513767786738372717442238281296070010302255703329785136750848608510805269562580550421695335686256291415407706167513127610045830074144232174636354465520547408627155363076530824695464544496846799567213412195115628936631295933321590908845288558910694118404555858629368018552451467994715743285452343185080572139353967831950470208768524113647528966442712608411306460439403733081312454377815407740431356862292588345515142587184008493066353603658341268923669196617183622259532802077159684815974630350730226266887950469523895272137382682818583664766982004756872470359454855421231861600855405622250180301557001727658100463825721179482988287599820459238518127671242515104954727268296043840120459189992322364113432317376499876615018647681005294400890426164141474245830847447887800872845238979407896829797297990804023745291564182356173092302630416583955274584512411637160723327887646112927503049935866004964114798241035087343318592736488780742013424329479787548324846879335440582948017481856461250014099199025874264395426269044157577172368261822794071985989844785134561848837459343219269316428175168803982908920457749528709425299296467325603578851955843550406474402944350694486492967809731047663564513772408591390180588458110788180950470244902062953534590109356800048878919144043979000989724521292698054747484439706733411566872999353418986588749568995482953622089499726327807058708520455805869817259837526415584189633013162307753166636151833127563746069733440228640737257520299330767346391011026088684503955941755171481192133779119344715318224728775697330484860348152872987113995597980243907204928634355356748752501217143216601222634344211757170284222785899530754663487291354339744025299042982320199789070467212765859078265587040664859899997109073649635056953085131587344086263213972132295294758682559609365238437544701417284297826732242650999654640698637095193178119502815643930373741504018967640638120546136857104880094633373762586018322104925768619990210092851075031033451925224377383389610824173203445111896055901190132142204139463967556738295382942065540228560332044410017389129348710403201272349054427064370609913529996988445571571382916349536222256815467149849706750571813156961918737343978667568453623162377198802996342528197935118265696537928993634621119483415202847968129550048667353312481509419740177690982818603515625e-1634")
| && check(convert(0x00000000UL, 0x0000000000000001ULL),
| "3.645199531882474602528405933619419816399050815693563343720980487028371688633397736809560708625827205197247347347203531101966985632622032169973508075589809005483822581177931678569225263805633559756621562565983410728940319793553527268591240799954172811015518538383046054768715422449295305859718268214262622067532355460844068079259753739688226338971902813354664211957293812000216762672292032277433639030845605529795518855299212255321171163487629138462930035513852750160313284578587346566858083349053123705193988703983308587839946322501468602459466376586870456423634710242397194658860357568067134477982764219736292817751295560536845761267846647908517463250923736039512722781415953366096399444403402117053488448021977763604437908687623249034116909294550532283554604255016471048510990155249694820376175072774521597924829264164672829379224834378522148847524461653340453140898534938901079999466084995792940867082225167898092626332284133633537230365710606672711016101696986908545526816093446785575823545286456670464909287063062587561930219192839574686079732400741932670792586584247903252601714502511652018733705556477669856403061671860988301022089008752404238293812121415758527179547281628232710885994458574715033852877595426024800791719981955344151916599003503828822200355665967958771090937688409231050763744882094456320484272716122798149836361660589595209083576887254232532955229749892640550762959438241278496193819382077545905461172547961340469817691165676094261320725727312607482937653140421619686103059529199421431937449566099337396063075218302243845475341677972462038126626903408167086517545386382155008956065955410392914952623927880847159533184535486666480480563407531428385329300522477684217050951264747454635754866214784941542315111038630684391425212439304190584122374222972284606537485052464648655369719099026760518287560996997210778473066980129427427439517032390964791367678221749630975419713438139162678878555999177528450882748046538588177447270306738234898502976902853001364550405227287093940058325788585457368654991956265863050083472087623066020903378919489920975190829421602010382039477772083400661519154972695436582305021910908576692048173534958894170976763084807837402813849227540942073315401115262334876815962087441302256558438912500607230205782013083674113023497612445214795170983848687988348203289441256908755565216081815151205638893112562415329084456934095146184469290901166110634875590164835606941629407489774379792739804674764243483912084691871769225446506284310565309190872477286255925383528545036360550854226919571246361133225904820301916588317084377712259367894846411294822587075835486985645510829880528578782698412556249274522235061092454342386202327120407827540333914613192189174315884136688019435966273663470431440443032136411775605030601436837063972690330417475187330200911967500496761618122614796452937124070398703890868915527051490465736745397764941094879479649438162576614346948652085308024696358256756585794568493319042053882843808180358787110774418075478801186519577416271896383169835708225636584654568643702618602433548938163720732772538345454513065011540675765510656970500413537205370067924880209217363407323673368448004904408413977741706965494247040799786451861822188473571257556819433284087486023676249467869483631380473856486239547015603318322612783652068699798539400406637311682731115340677841660240710431551140370410375585572939303084073843540702120551963050514959945741359169911676575478403279380112020347348292538150798320452794842427526501796852911863108178276638472320237870082862271763396195139513712303136194366021540830531456910584048372546025177765140460207112923151923176402146752868221966889915381596481253160696822260723194259521813054303457222367967929268763072892355278854714278243863110783067060124459039315528176840304931522813148745824350892130595015198002557204332483215551447097512510076223364801202888087635650654634946887232727623906459076670227108634162319210357007273369354657187569046394884895083794103531835959613994575377897775525461977464747518162975010091463561925032742645594645800581600698347817023194379921397347681150492687237349021564206463096138703201250277757980410772647014391579144424375252519766764670458008515297647624144814453496069685127439800629552075692648608681506879044376428977463175175205181547958459515159074701285838493694034007662410100183533141516684185460758175066481561018901133031951042099053297118837448984443230856642737606478787880285299903521855025612413471034466624171559209077538498475106811294029060334271803320566493935024621719717684804443351866946690525266060758332190531807232565501890293754259590947433140384335366973398816899253698302119916142891631005349335372158005779944529176735887193980409288474621694590303098552382376969442365186023130985507823617670051191889015351479659778676132449671642015059540438237303922903056079068344635440276772565425944329927654906262952475555750912023879424636021462043321631428365675851865654901693474343411406220907550090045689588323936814675126103464401223728058185048320475251266882875299120582253090033177883674432343812734123922042926554908548231473285349572210962289889800994026533629321464700552029391517293055196218065667251276237490129206098414338903210942488902792253924667941082273267563528653863343443486495762400409978995985052082310730277076965242846278402568285187365588876653245423047205943478612931964211293489374119565751486787204884502307512372923973119191125614068756094526892783321688030310900558025683455451898487401139315290743477461921025987905332236299398859448938742087487316288730711068752763449392366897236258997091176996253284306687635454361862179407191652155243650619571720232128624130785404930566805029233271375546253313287446285812219961565022654510373870581648214791139170870970509074158721967633425471550515801498191107216277620692347014234913527385812164834475002007099402122991439542783981984927181300669603290190495106195784248531299740262706106798338573523977365240941293695214188675632715447081372252551022981921251125675131839210074132286029621443262127145872022404314258219255606415280218445074654034790115075558513374422753617188198385931164810182817002794172279803028202086567081267453349341345496389239379776494419022301042067986600501045466950004057134726934147691678031986698845370299987067384407310337433828116514830745374490760171672152978595040351405572526523026051215093709900567873568385242574546385008567738263951532676549294356417565797771595638496719149577804216291892125541055147173723744991756669672459021375111288754125372918394417976243093028214703329386031799313949535161343892720409046065009958980978947997662545514664194262097665297242612367968766000629174655887090824363583653843658980277566031286429628476318572915045823895805826010132712977834418613468288832988547377174550796802573148684253294172285056777826927377158058647145403557721233512002495437339413998842782599710186215723437958154275340509811072349041046483806284608873394275718878590418692809288333423522781240698974441829879303794241455852776713321354870647251094720675572322788447908778778892116234131617608416732280987493141331884927860259324392781255786150891859203497212615916404999097067778739914857961305884934678762043515521190581898256624635957830927811421154992139986999936203631149852372802564314896151749326404428772008250428569338329698161850171265411426708113723558325059062871506712838460986031147060351491506316012532538793354499545667009527573810892048004652452452139688789392912938251888341298122235232861138733903153560967292104241190946350516769769305030762386908399592555043192236069279491224465826684203312081255431851756341234566913972589390601558650830437402045595207689996159597545711808203688318112918947661662115802919578636403430323041610018063696707221249826383715263388850307418469423973486747009233945036220901518185766942733836846126816638158345048782728241251279820310193223512959111029884002230571688216854282257873218631744450950552327428952538149545262779889824399028513132208638633070602135522752076661567872472325125674291268881849101416382703647451428232847993332157180794015036365361645888146355749366150209085457189187232786399585879941680370348141105404742298452497895369287193974496140445677301271403589665822911096832952021181343571136957607816318342755770560406569920261633966403484121679869542684843686908354373688437968683525723666121485947946747887572716360800696442816474113593466106089204179554677145374582437962664618883018628687510079511252556002241788346284019750863992283906513572325918053464080643521532154825074820239077990779007069588034029619562190416747359712884084324521598678178890186409451480686781733176824920276835002477523486093586963733155424491897575495851549527034538337694314953057164019215026670773910997443279760005290641511584707193226351271670439775141076552632736166117611394934325673743882365518318561208941552931629125136799711574578916741023587251428998946963182411650554404206416336487418656105333038545773960190949602850096208569085230228708894874577523512558281973392961263921656163963369388411763476388625952406901518273413037068643383550282962237729195901788599392876651086599849223994259145259240479384380657803498058719062529007339428316229997756899857712116922758683071707472935574499244978419788171338468471751125303860911589289400806637202920429489919870263415951660888975434827304297451362325052693482001524843171229078467910537913138115458626612024970730899515114301915281613929239329351501049859225274564107846818112938339161308943153205117651716380468462296193882444293370484368530096898812778973178284912798550245246063411918482638261694029245273291646707331594675213428158755273882438357960245064051015888918541801139771619743221405037797285669481455810653320008904215997597975907391512026214020012010134707536774227636477580918167507850485197065326391091171451763751237612739498468510009055480025096015985581769370179656781151306565952590101977398335185042637681982306448413722177895665290302796223004198526079143104070007874540548221582347389579e-4951")
| && check(convert(0x80000000UL, 0x0000000000000001ULL),
| "3.645199531882474602528405933619419816399050815693563343720980487028371688633397736809560708625827205197247347347203531101966985632622032169973508075589809005483822581177931678569225263805633559756621562565983410728940319793553527268591240799954172811015518538383046054768715422449295305859718268214262622067532355460844068079259753739688226338971902813354664211957293812000216762672292032277433639030845605529795518855299212255321171163487629138462930035513852750160313284578587346566858083349053123705193988703983308587839946322501468602459466376586870456423634710242397194658860357568067134477982764219736292817751295560536845761267846647908517463250923736039512722781415953366096399444403402117053488448021977763604437908687623249034116909294550532283554604255016471048510990155249694820376175072774521597924829264164672829379224834378522148847524461653340453140898534938901079999466084995792940867082225167898092626332284133633537230365710606672711016101696986908545526816093446785575823545286456670464909287063062587561930219192839574686079732400741932670792586584247903252601714502511652018733705556477669856403061671860988301022089008752404238293812121415758527179547281628232710885994458574715033852877595426024800791719981955344151916599003503828822200355665967958771090937688409231050763744882094456320484272716122798149836361660589595209083576887254232532955229749892640550762959438241278496193819382077545905461172547961340469817691165676094261320725727312607482937653140421619686103059529199421431937449566099337396063075218302243845475341677972462038126626903408167086517545386382155008956065955410392914952623927880847159533184535486666480480563407531428385329300522477684217050951264747454635754866214784941542315111038630684391425212439304190584122374222972284606537485052464648655369719099026760518287560996997210778473066980129427427439517032390964791367678221749630975419713438139162678878555999177528450882748046538588177447270306738234898502976902853001364550405227287093940058325788585457368654991956265863050083472087623066020903378919489920975190829421602010382039477772083400661519154972695436582305021910908576692048173534958894170976763084807837402813849227540942073315401115262334876815962087441302256558438912500607230205782013083674113023497612445214795170983848687988348203289441256908755565216081815151205638893112562415329084456934095146184469290901166110634875590164835606941629407489774379792739804674764243483912084691871769225446506284310565309190872477286255925383528545036360550854226919571246361133225904820301916588317084377712259367894846411294822587075835486985645510829880528578782698412556249274522235061092454342386202327120407827540333914613192189174315884136688019435966273663470431440443032136411775605030601436837063972690330417475187330200911967500496761618122614796452937124070398703890868915527051490465736745397764941094879479649438162576614346948652085308024696358256756585794568493319042053882843808180358787110774418075478801186519577416271896383169835708225636584654568643702618602433548938163720732772538345454513065011540675765510656970500413537205370067924880209217363407323673368448004904408413977741706965494247040799786451861822188473571257556819433284087486023676249467869483631380473856486239547015603318322612783652068699798539400406637311682731115340677841660240710431551140370410375585572939303084073843540702120551963050514959945741359169911676575478403279380112020347348292538150798320452794842427526501796852911863108178276638472320237870082862271763396195139513712303136194366021540830531456910584048372546025177765140460207112923151923176402146752868221966889915381596481253160696822260723194259521813054303457222367967929268763072892355278854714278243863110783067060124459039315528176840304931522813148745824350892130595015198002557204332483215551447097512510076223364801202888087635650654634946887232727623906459076670227108634162319210357007273369354657187569046394884895083794103531835959613994575377897775525461977464747518162975010091463561925032742645594645800581600698347817023194379921397347681150492687237349021564206463096138703201250277757980410772647014391579144424375252519766764670458008515297647624144814453496069685127439800629552075692648608681506879044376428977463175175205181547958459515159074701285838493694034007662410100183533141516684185460758175066481561018901133031951042099053297118837448984443230856642737606478787880285299903521855025612413471034466624171559209077538498475106811294029060334271803320566493935024621719717684804443351866946690525266060758332190531807232565501890293754259590947433140384335366973398816899253698302119916142891631005349335372158005779944529176735887193980409288474621694590303098552382376969442365186023130985507823617670051191889015351479659778676132449671642015059540438237303922903056079068344635440276772565425944329927654906262952475555750912023879424636021462043321631428365675851865654901693474343411406220907550090045689588323936814675126103464401223728058185048320475251266882875299120582253090033177883674432343812734123922042926554908548231473285349572210962289889800994026533629321464700552029391517293055196218065667251276237490129206098414338903210942488902792253924667941082273267563528653863343443486495762400409978995985052082310730277076965242846278402568285187365588876653245423047205943478612931964211293489374119565751486787204884502307512372923973119191125614068756094526892783321688030310900558025683455451898487401139315290743477461921025987905332236299398859448938742087487316288730711068752763449392366897236258997091176996253284306687635454361862179407191652155243650619571720232128624130785404930566805029233271375546253313287446285812219961565022654510373870581648214791139170870970509074158721967633425471550515801498191107216277620692347014234913527385812164834475002007099402122991439542783981984927181300669603290190495106195784248531299740262706106798338573523977365240941293695214188675632715447081372252551022981921251125675131839210074132286029621443262127145872022404314258219255606415280218445074654034790115075558513374422753617188198385931164810182817002794172279803028202086567081267453349341345496389239379776494419022301042067986600501045466950004057134726934147691678031986698845370299987067384407310337433828116514830745374490760171672152978595040351405572526523026051215093709900567873568385242574546385008567738263951532676549294356417565797771595638496719149577804216291892125541055147173723744991756669672459021375111288754125372918394417976243093028214703329386031799313949535161343892720409046065009958980978947997662545514664194262097665297242612367968766000629174655887090824363583653843658980277566031286429628476318572915045823895805826010132712977834418613468288832988547377174550796802573148684253294172285056777826927377158058647145403557721233512002495437339413998842782599710186215723437958154275340509811072349041046483806284608873394275718878590418692809288333423522781240698974441829879303794241455852776713321354870647251094720675572322788447908778778892116234131617608416732280987493141331884927860259324392781255786150891859203497212615916404999097067778739914857961305884934678762043515521190581898256624635957830927811421154992139986999936203631149852372802564314896151749326404428772008250428569338329698161850171265411426708113723558325059062871506712838460986031147060351491506316012532538793354499545667009527573810892048004652452452139688789392912938251888341298122235232861138733903153560967292104241190946350516769769305030762386908399592555043192236069279491224465826684203312081255431851756341234566913972589390601558650830437402045595207689996159597545711808203688318112918947661662115802919578636403430323041610018063696707221249826383715263388850307418469423973486747009233945036220901518185766942733836846126816638158345048782728241251279820310193223512959111029884002230571688216854282257873218631744450950552327428952538149545262779889824399028513132208638633070602135522752076661567872472325125674291268881849101416382703647451428232847993332157180794015036365361645888146355749366150209085457189187232786399585879941680370348141105404742298452497895369287193974496140445677301271403589665822911096832952021181343571136957607816318342755770560406569920261633966403484121679869542684843686908354373688437968683525723666121485947946747887572716360800696442816474113593466106089204179554677145374582437962664618883018628687510079511252556002241788346284019750863992283906513572325918053464080643521532154825074820239077990779007069588034029619562190416747359712884084324521598678178890186409451480686781733176824920276835002477523486093586963733155424491897575495851549527034538337694314953057164019215026670773910997443279760005290641511584707193226351271670439775141076552632736166117611394934325673743882365518318561208941552931629125136799711574578916741023587251428998946963182411650554404206416336487418656105333038545773960190949602850096208569085230228708894874577523512558281973392961263921656163963369388411763476388625952406901518273413037068643383550282962237729195901788599392876651086599849223994259145259240479384380657803498058719062529007339428316229997756899857712116922758683071707472935574499244978419788171338468471751125303860911589289400806637202920429489919870263415951660888975434827304297451362325052693482001524843171229078467910537913138115458626612024970730899515114301915281613929239329351501049859225274564107846818112938339161308943153205117651716380468462296193882444293370484368530096898812778973178284912798550245246063411918482638261694029245273291646707331594675213428158755273882438357960245064051015888918541801139771619743221405037797285669481455810653320008904215997597975907391512026214020012010134707536774227636477580918167507850485197065326391091171451763751237612739498468510009055480025096015985581769370179656781151306565952590101977398335185042637681982306448413722177895665290302796223004198526079143104070007874540548221582347389579e-4951"))
| return 0;
| else
| return 1;
| }
|
| #else // PPL_CXX_LONG_DOUBLE_BINARY_FORMAT != FLOAT_INTEL_DOUBLE_EXTENDED
|
| int
| main() {
| return 1;
| }
|
| #endif // PPL_CXX_LONG_DOUBLE_BINARY_FORMAT != FLOAT_INTEL_DOUBLE_EXTENDED
|
| #elif SIZEOF_LONG_DOUBLE == 16
|
| long double
| convert(uint64_t msp, uint64_t lsp) {
| union {
| long double value;
| struct {
| #ifdef WORDS_BIGENDIAN
| uint64_t msp;
| uint64_t lsp;
| #else
| uint64_t lsp;
| uint64_t msp;
| #endif
| } parts;
| } u;
|
| u.parts.msp = msp;
| u.parts.lsp = lsp;
| return u.value;
| }
|
| #if PPL_CXX_LONG_DOUBLE_BINARY_FORMAT == PPL_FLOAT_IEEE754_QUAD
|
| int
| main() {
| if (check(convert(0xaaacccaaacccaaacULL, 0xccaaacccaaacccaaULL),
| "-8.55855653885100434741341853993902633367349104766375354667159377718342093894815477326286823233135691805519944470138219932524951165689852082013017904043605683486724317550972746307400400204571080045247416605879743573136814766221652651396476675668866980798618379071105211750397249729982891787041148520384572930274879267722158826932337019191713973025403784448443813348692062209940856126724493492803365972504505177354875652033856070760087261648660638833868952644144747756799606849182265604546917705495630867683634260396102823982577953799017062698102242357552179655099799114234932578035799185560231199083485854936098752376968393647581458407558794412029383325763638562788717260040049064497131924995762524305159587498016677454321953274959044696323291625045478494472581264819229447771276640446297211105522340278216491094195598543872903469867733674572559977106495016037365144714092305087690135013719347274733034998868445412589677425060095799279101903473205374412225289846468374532481297065712317082077938035156602646698351182648104255704218634101302925067087078955133405900007044267209898310644310904503791609310204530573463263951434586894153990739119187567218316060343579381319744970284036645819031296341711196622764674251739340075981861518157380656135644972541894187627902651874054588734732906342927804126694032667794810086817870907476586539935233288396561987441453006798066121939082312783518917156845604116991071351557087417820814737448930366014934139649936714605919733198611573267554373841805458030152706709963798138766665437195696286204333504023648063774567253657433115103351104190986192714072985487851579415615609526545777708652951405409847708647802254957197551148967040887700676749608935220270768342493900689974647088468653016844028721111482484905641458435567969469008688175230469940968306817582881926746422674891155765989419578280531847369896579997902056370886853884911608932917273377526774091310024267948445090595150848945937264274298230316059283748541372546998570685254364147022857127106166375807928861080771495427281772909457414476961102929683460150380091022216902985688084496718499522925736236100966839490544989265028487132166444183820209811985298620037327410566483546092567386575203772065259924817078378553423445114795887961447486917127608105936488957460696218995227900239169698156532097505472359601263421630872600694896078087993492528322817946497772710008837719609909497752428441503174822795185219988589528998338631725113908025553153842511443825016809012668839505492083731555461826355018782953670089090573806418379608917728933789667567839232807208925449602517595541397929042673972541764273293287457694772131268012143158809453627483947788463130353101911401667613659585055576869155534998835800762122080588150495103765874874613454517177121048246498282285280904742153700877576028449241385429235777250684782328183787286276152331338688335510090441008799792147837436640030059474106105829612076012626498555138419516242851436828131901668517305064107076254421670883938440896580435257206350630093337919967881954501164988008085285088049681541452106188312639266136685237513628484410146475880276899689323468288129178652504797093820419402611691354199968499448738482587415636727937353639264845197813295922091561637504736126720760129127710879063043647425297778439069116811334073539456451043564046959839163407469915211595468718792531664679340442279513006653831781499155674396529973036072198720572542914738630057353297633085013244779323578115668031532144051510758240504037804690564298890171218568053886450388507561335540224075309922339483204122333658701871584147135738144358394867585372134490396264937274938848938884293776466212293402264641368524174512841804801230279990820989956713963566987970818315606031084417487965298373510594915942429581446481759482857537804431542098380533075194397625795605337047384493682506827547173206735463795863376044170821429161475172513429888642402089329334654087406739184258619435041737233405001461505889892578125e-1644")
| && check(convert(0xcccaaacccaaacccaULL, 0xaacccaaacccaaaccULL),
| "-124514581107511552210796456934966803687304842980295573828954497922493752983397188814711304411560018580965744046315133789985274208017368151964100284400784216106649187287727268989948309893335776137201236307422254490384994342132786695251856340822607539332337741185911979986209464222776112117543477310592395735321641016191765613924234896253051931334188353106422231052895112533426462965071195000083346118845388851222468275853899619767858364593491745895616655921022591572983370616010095670881627966440183912948095715866505356803258659518882310562527709556367822539262111581385341941163873435919341717170180065638145777392282815973491833042960716493005101610346003273833563515742996380936304245423639950200211170835546053201980835724318930743625600269679260909350277600256315069013053332133830043213033329696436217829598890872375814523266366034383531514035947792389939922899745714167418517458817088636450662300503353562047987996978943856662174717195437379600755109302771921946748859230686543872")
| && check(convert(0x0000000000000000ULL, 0x0000000000000001ULL),
| "6.475175119438025110924438958227646552499569338034681009689884389197039540124119371017671491276649940255878141476848119676587219886382542046685110071972617983042792710751334934416734625638471740239448526505553990391455556252171148068070822034688256982476272828789103028357337561348031062386564592639826226991907907867663262065711211583064657196068308332845234453069760526489447660964579313751403402631804350039948870075255648713368066117879403155766713303467434937062409411685215137607333139422843835051668983567167196802642952353504079714347103860537782893700215521168667711042950610021881513627986429461700433339201935397498825184335385514892844339930852967838448682125502304114122153045946465463084764110174478737044335312389661483639210553943411476544786261397875064191451226767614625892790369961415069606980007080502788648919975916801878222002252381723047230971876570995428821219281596547633023538783137183646396952831530551068683419596735374086746290525867996216905323365319885172609956827625511036332478353228947631880050684559150608318986521540136061273771493390412784756552103897518527764158778759333880714882279633323826397312375406927039446525306447838514371503654987855172306307584155459826707095909617752526800401326990828721633726770440915439092677906646798573524199116648264206920451160133635071361773812121716528178148240720783226736549623736135274990309138143183248371959875978805027500928693808073336955752759088442865600075199888998323880643549670055505421362435108572732087322982027187772459231228989472372951864321099261878781084330252988333921362998963303722431059741968763452406953835015120533773385289904710843628402700274702870474073825248828889984994284607604847211794221210729913159829014217168004461049532662696542913183628157199561641949923936629368992856621383084545327636972265542355341749855663020004887316835216156767223053799811067258913808469994232607858854524064432145775922144535701236468985705212977045479489515690009388923625580685788707605877343857669170894656797423368490329407251160393356048820607085089069025413584269816739747211239513550414383117508826763143512862006497058041145296097892917999935577053234252698691933792724753682184537682835562829938630004838384363944243137622864918257474256280127291116965050600178120477720784742184205376195975831677721764740044536624645764471381571452381830125398765152083287483110279394697855915713981939970684599199594863007230624076786139617554631450734995190081932187616814234632738778224433256463738346435274905710925581106061273840975592931761266799265587765468946764337085192369358316298457450008809428586921504743730873895710474614480003727146162349858333291516552162545370312200390841588309480973274631646273597390249477746657131891196482398670118797910098918899689482196956660638225731960693542763964302308999692957091061300183648329785182793301407267200046383043005236759977387601407769110383295729918654520937785586390633157020347632812108728638589813282569529576769367173324764085285705308312954957401558247168739931446569422818723482471097374362105279278558570746278168331596903799527959001674856155564619821407044799720020620642233246057848236476047540762849788325435630592420194490443539428990899488655890183886788650518595542180257939200539645041808387760238189562428351774632440622618056913137499820021924733173668036806485733443567039613866037176155955253827548473360440517049422696075501183292573063250613021167503858561082238374439193413231472608072888733326512853287806773389073299297372760244397355791502004654458118728037510329034120643030182346716011974996719598934277635297762958837247389366909763367493682299430362668996193935405226221180280462691353912282455701759810037116439968883639596108926413528826200502511551071661541071241892319070812994269518086385295992381025957172992399312141414210235547707008555590049509294048331178258885645254295737834927590332773105843826797756540039810295021699037788228205072146738094320261980823252096852875670591366194556595549470362090317233349128160475626293246538430039226463877253517855062981890058712415866578727694362877805078594115939049922697215689139042884475829798201399221843339843144334329750976265054375898637087619406776357862341599539585772173362569929723217313856218610739079911693928395573354107695207924389443047735986097057117102761647398583746704066222192489628491579241861512228457942727677656217068060304063431859444999092873095546808035894071193872676924207893595051334067870866978585241063298399448801664979503576258730853137762656715932674584878408765074348715350808211160488037567370082449596914044378631384351574514574407266268601518418121140639017772950755439822352142605465639756330937185434812776437455170052704254873689525989445652781559474644227537684964321625946200647347726100468875445797592291192363724641100602571723960104389727561487616213893880158699261565353860394268412519478250755882121502350855777548987354957187611364644347783460623918569790357712078708030071729862147204119062003145783057657964335620490686654777775857772417230654005669380137272188650104502859563282535642734533430567287319498304528915876638370296607209654727246810120749147011579846007686876872348978767610197018167444101532656500699586407674404325249380187066956228877621206281130141035339929259895087216809976356039304176324615051223863642132987493989282096132023719628675179659793099441124234181354583082636306115430335248256636595542753063577946177399294336318459611754831189657065079679934928129113295189411660749306226747061753316760480290760846421347557553607185254462514991634789163215592554565288625021429064594217444034435094635489801294636044217141894128608560200837942901104014713783039046587228833888032709513732700101667002833885010142407620233438106861087062055906874872893491133678484259720820886397724438939944326449942516696628683510030426237257765426269532595248183289611602373952305073827029425838481007443361481172033664199893614932623554378101313353925699162767581809444174957293532641034112367163940472496454826645496608268491435975330754792022473413254641635309131365360013914909519963236046952897089347016136738984133133790874101143168691022141918967797877476450100585067348766183224990814253610763592974731784263832853675045343246533254966131311531411068478710429786791811404658680805588105768518292098129259164151153126615341498379324353953450723874092401152015787628879390603785057522375088322779364007018433582543673090990833352296302290390165336647355242365982903670648563727239283547241202029021901993493453231407543942533374303128855544718854681133818703717309615999563617026069360208156393214924333856037726771259857931298487909006782987195926835910537279213582905667384935745871483880724959685377284455451325009389359115356341859747548302075715614439876712304113995679250907454883895302396632381653230532032695481751231940062856024456656381220713413431325444483757534262449339675147214243079144598658808202548926312120596697863356554722348114194969409174072455372221354826189882023922524876054935905929454258925505387898039528329076689551108932342856243697999637938228068665595345855978215420274558562368590236467711884770512666328306756286559348574636272916414332349992225277379071952095234443041820054854970323931404077610323730988914889188356127533914074856107086479831584739755622106834971368997334246432264012757261628954213626177797127289818357558926591911175376134554737367672941224416966599144520688033032388494464597481600684233179969688713377153969107014820586500187890028419759966629125896903859724482018551567368459339437282027473163713630554370146518281068049701849575089743432349308849281456182745027011845653626290780738299181305772482001250991761047543344790454625943156085044661103576512523366161351099640751135385148305913987889008698009234370941891346098306437937661227172386506980636903743541285235605780167216008920828610842066522096589500420940606405692664109905063234866117077516308694175709123219476283230290207497555159467149979347020209673500496651023554475005053991295374430728524771212435107382664318842703197811901075027036703041419315229156263279708865064004473392401710817533040210152757966691416471836361498546249180866049039738294265863864925406135752428537159880132061042828090772733103561437021070938835520484987564784902357826645006185384847299711513042558913116550679842981785737713725790045128094411676264858573201529073678073396387519268373798582548263868592119666097381189255247190641352195443081432945981901223716745712543744847146503012460085216148335807619624528396069010370871981642712755932969484501155184487454597846375782598809708096893645439856478634508146859065978179351007580744928974114529788215226484601824974140107352758776378993800008479463640459773788106039221647527915619638375897279653946867057366337834721265500081035695372958187077367633848426351345959537644131255393886949828040966112768013745671476622221973172299021322723830684345054818157484501760113734299662298242039459694484074671808880126261963999301400833575366587220239180443885948634911432672454909578479586976064598126633177835011824812040440090529736915436564330317784343260941419199007994565556336195654994767768391641843167291242587882400091208124348669996343070061026732554587428779976439512259161737036335847682346728539549778493388870528102969822923976454022477322075204905420377823800876540724560782242540043358494305758648390071388556142954991440895026034342297754624387472732697423260211014731729196139172514053952591428247887383243344755389104496037975360677224765591211970382212225942797592005272680787386239303946689423293709148965999400795905073756697025967564396661027489606337872152854151887574400979150870295978066773059913103141338094206140446153595784659696116999451265627049162745281492831846033865707908304944975732574637090102130752860241496159897720566523711477673910492376257245019657271734451417565932034846341070093018262777507790026122302775680179025723685230883459924631462602175535978001836273235741164283034661871238537285831967107455175175353583907073921428e-4966")
| && check(convert(0x8000000000000000ULL, 0x0000000000000001ULL),
| "-6.475175119438025110924438958227646552499569338034681009689884389197039540124119371017671491276649940255878141476848119676587219886382542046685110071972617983042792710751334934416734625638471740239448526505553990391455556252171148068070822034688256982476272828789103028357337561348031062386564592639826226991907907867663262065711211583064657196068308332845234453069760526489447660964579313751403402631804350039948870075255648713368066117879403155766713303467434937062409411685215137607333139422843835051668983567167196802642952353504079714347103860537782893700215521168667711042950610021881513627986429461700433339201935397498825184335385514892844339930852967838448682125502304114122153045946465463084764110174478737044335312389661483639210553943411476544786261397875064191451226767614625892790369961415069606980007080502788648919975916801878222002252381723047230971876570995428821219281596547633023538783137183646396952831530551068683419596735374086746290525867996216905323365319885172609956827625511036332478353228947631880050684559150608318986521540136061273771493390412784756552103897518527764158778759333880714882279633323826397312375406927039446525306447838514371503654987855172306307584155459826707095909617752526800401326990828721633726770440915439092677906646798573524199116648264206920451160133635071361773812121716528178148240720783226736549623736135274990309138143183248371959875978805027500928693808073336955752759088442865600075199888998323880643549670055505421362435108572732087322982027187772459231228989472372951864321099261878781084330252988333921362998963303722431059741968763452406953835015120533773385289904710843628402700274702870474073825248828889984994284607604847211794221210729913159829014217168004461049532662696542913183628157199561641949923936629368992856621383084545327636972265542355341749855663020004887316835216156767223053799811067258913808469994232607858854524064432145775922144535701236468985705212977045479489515690009388923625580685788707605877343857669170894656797423368490329407251160393356048820607085089069025413584269816739747211239513550414383117508826763143512862006497058041145296097892917999935577053234252698691933792724753682184537682835562829938630004838384363944243137622864918257474256280127291116965050600178120477720784742184205376195975831677721764740044536624645764471381571452381830125398765152083287483110279394697855915713981939970684599199594863007230624076786139617554631450734995190081932187616814234632738778224433256463738346435274905710925581106061273840975592931761266799265587765468946764337085192369358316298457450008809428586921504743730873895710474614480003727146162349858333291516552162545370312200390841588309480973274631646273597390249477746657131891196482398670118797910098918899689482196956660638225731960693542763964302308999692957091061300183648329785182793301407267200046383043005236759977387601407769110383295729918654520937785586390633157020347632812108728638589813282569529576769367173324764085285705308312954957401558247168739931446569422818723482471097374362105279278558570746278168331596903799527959001674856155564619821407044799720020620642233246057848236476047540762849788325435630592420194490443539428990899488655890183886788650518595542180257939200539645041808387760238189562428351774632440622618056913137499820021924733173668036806485733443567039613866037176155955253827548473360440517049422696075501183292573063250613021167503858561082238374439193413231472608072888733326512853287806773389073299297372760244397355791502004654458118728037510329034120643030182346716011974996719598934277635297762958837247389366909763367493682299430362668996193935405226221180280462691353912282455701759810037116439968883639596108926413528826200502511551071661541071241892319070812994269518086385295992381025957172992399312141414210235547707008555590049509294048331178258885645254295737834927590332773105843826797756540039810295021699037788228205072146738094320261980823252096852875670591366194556595549470362090317233349128160475626293246538430039226463877253517855062981890058712415866578727694362877805078594115939049922697215689139042884475829798201399221843339843144334329750976265054375898637087619406776357862341599539585772173362569929723217313856218610739079911693928395573354107695207924389443047735986097057117102761647398583746704066222192489628491579241861512228457942727677656217068060304063431859444999092873095546808035894071193872676924207893595051334067870866978585241063298399448801664979503576258730853137762656715932674584878408765074348715350808211160488037567370082449596914044378631384351574514574407266268601518418121140639017772950755439822352142605465639756330937185434812776437455170052704254873689525989445652781559474644227537684964321625946200647347726100468875445797592291192363724641100602571723960104389727561487616213893880158699261565353860394268412519478250755882121502350855777548987354957187611364644347783460623918569790357712078708030071729862147204119062003145783057657964335620490686654777775857772417230654005669380137272188650104502859563282535642734533430567287319498304528915876638370296607209654727246810120749147011579846007686876872348978767610197018167444101532656500699586407674404325249380187066956228877621206281130141035339929259895087216809976356039304176324615051223863642132987493989282096132023719628675179659793099441124234181354583082636306115430335248256636595542753063577946177399294336318459611754831189657065079679934928129113295189411660749306226747061753316760480290760846421347557553607185254462514991634789163215592554565288625021429064594217444034435094635489801294636044217141894128608560200837942901104014713783039046587228833888032709513732700101667002833885010142407620233438106861087062055906874872893491133678484259720820886397724438939944326449942516696628683510030426237257765426269532595248183289611602373952305073827029425838481007443361481172033664199893614932623554378101313353925699162767581809444174957293532641034112367163940472496454826645496608268491435975330754792022473413254641635309131365360013914909519963236046952897089347016136738984133133790874101143168691022141918967797877476450100585067348766183224990814253610763592974731784263832853675045343246533254966131311531411068478710429786791811404658680805588105768518292098129259164151153126615341498379324353953450723874092401152015787628879390603785057522375088322779364007018433582543673090990833352296302290390165336647355242365982903670648563727239283547241202029021901993493453231407543942533374303128855544718854681133818703717309615999563617026069360208156393214924333856037726771259857931298487909006782987195926835910537279213582905667384935745871483880724959685377284455451325009389359115356341859747548302075715614439876712304113995679250907454883895302396632381653230532032695481751231940062856024456656381220713413431325444483757534262449339675147214243079144598658808202548926312120596697863356554722348114194969409174072455372221354826189882023922524876054935905929454258925505387898039528329076689551108932342856243697999637938228068665595345855978215420274558562368590236467711884770512666328306756286559348574636272916414332349992225277379071952095234443041820054854970323931404077610323730988914889188356127533914074856107086479831584739755622106834971368997334246432264012757261628954213626177797127289818357558926591911175376134554737367672941224416966599144520688033032388494464597481600684233179969688713377153969107014820586500187890028419759966629125896903859724482018551567368459339437282027473163713630554370146518281068049701849575089743432349308849281456182745027011845653626290780738299181305772482001250991761047543344790454625943156085044661103576512523366161351099640751135385148305913987889008698009234370941891346098306437937661227172386506980636903743541285235605780167216008920828610842066522096589500420940606405692664109905063234866117077516308694175709123219476283230290207497555159467149979347020209673500496651023554475005053991295374430728524771212435107382664318842703197811901075027036703041419315229156263279708865064004473392401710817533040210152757966691416471836361498546249180866049039738294265863864925406135752428537159880132061042828090772733103561437021070938835520484987564784902357826645006185384847299711513042558913116550679842981785737713725790045128094411676264858573201529073678073396387519268373798582548263868592119666097381189255247190641352195443081432945981901223716745712543744847146503012460085216148335807619624528396069010370871981642712755932969484501155184487454597846375782598809708096893645439856478634508146859065978179351007580744928974114529788215226484601824974140107352758776378993800008479463640459773788106039221647527915619638375897279653946867057366337834721265500081035695372958187077367633848426351345959537644131255393886949828040966112768013745671476622221973172299021322723830684345054818157484501760113734299662298242039459694484074671808880126261963999301400833575366587220239180443885948634911432672454909578479586976064598126633177835011824812040440090529736915436564330317784343260941419199007994565556336195654994767768391641843167291242587882400091208124348669996343070061026732554587428779976439512259161737036335847682346728539549778493388870528102969822923976454022477322075204905420377823800876540724560782242540043358494305758648390071388556142954991440895026034342297754624387472732697423260211014731729196139172514053952591428247887383243344755389104496037975360677224765591211970382212225942797592005272680787386239303946689423293709148965999400795905073756697025967564396661027489606337872152854151887574400979150870295978066773059913103141338094206140446153595784659696116999451265627049162745281492831846033865707908304944975732574637090102130752860241496159897720566523711477673910492376257245019657271734451417565932034846341070093018262777507790026122302775680179025723685230883459924631462602175535978001836273235741164283034661871238537285831967107455175175353583907073921428e-4966"))
| return 0;
| else
| return 1;
| }
|
| #elif PPL_CXX_LONG_DOUBLE_BINARY_FORMAT == PPL_FLOAT_INTEL_DOUBLE_EXTENDED
|
| int
| main() {
| if (check(convert(0xaaacccaaacccaaacULL, 0xccaaacccaaacccaaULL),
| "-7.6048540943660203383375998875878002021755137452856942966991187375790618225432711954682137529456970686263412309600617913197560145993931792374946076061175594550915924955313391528566777352996816141138550473090399783817652516896553304678788796532976847530386107750759127004897950996937530751872097675156395937218234460013748219954603465088115161828048215763754331575034447236689765045674584188927116128770082933362914567237187017530082528540058002631800274192146485961758366625476271676375489358478966148719270989233284454992652229565352739884432045036085427546783826745250197623257802129011015273728848161395367551745780868250488191368846207890422268873532651627591649389757751752362072212699309947970918940313250863861141479770240104635553035870698789854752554391365757900620463269938427975381635241159694500569550818398323639621243086116154792038064941523448921284117826015673798399008555604372098051095571652170081985843614541956756469168604624857938653843172027861680499952062356914208628014745759010068414302636374017506453133466034362025545080555878082849488386388633197121003201192243150535143329731394874806398663589117246866205872431804204733617792317769570293754056793574570217834482046448788177551912250351735294891953434051815332631157674735614138641122106756749236824504094008852401427746414294902929999820878756040223246586814590339767277305131757114819123212897500810087015748205562614251410818122967399030151040544000563841334553718469935435435467196184665715776274355094471974036803615388313095637066824428688301387559074204015990782977635088047810891072724763113879034313256582868462323549141603475107584159170279311985555035822254439699354641467841523895459190280971487264907972306090449968125859834702627544039374770757804202780369083049631377117943503836158566134919890165392965694050010089785271180956974707841066789578714463804030217977213138932711313311673101336981407798868338574571646697479192174043005729926344062133712267722538847635563454980776602355539986984320762864338177037919835721981686778834558429264194379257521818498431326991615024245632036376472844033831041082865649867453234086495085785897620758602105639344460383483879837994732204331335249564434458633345708439547881275060781028856140511029543559841701048277393119691261302356763314623124427357421753631218361407626116820986377721964654181839884670481278855478057996766639496909094607181503284084821580817995489740980323820218685313435967428474842973086612053963343516426226771094376179468881265734324847319127862733279299033951360912038720313525324094079916937921290391173035983474894312808532257620563284126400481460163180987618432784215807933623038747129658746767737999870125917269554155887740155308886259497202672935871853706835670467770080598813171256855182510726902033818328368569915805303784312301890212694874227119220544172084552511408717615136830401766455214293141216171050374325461714383991698910564587610624980490526840861990674615172112493813749497898151186927777122955666180439323595468816129418014664347852590958362752922841159054568358354108159485566264221008508127941168192513144760720303715640604755054290633421601734103622748053919536319416025380484868142967373186019970714662893713233834399238357795019603619284595839414945178963942707310299674873908104634979966232181071013259653467885733418936194081202149071958107062125873498848807502257018093517304220495114497635240876547262237411350327960679115197531609627900227913193653254580253539005743563270152329126178570329413401577715075363838562221558204219798925982825556469998988615897432425107152113543617151738802778259560442930074253918797315241708532198010528564246933829811859278710445896556638416265987381678070434371355795025956293319362293063591248665429733880825207421011852020394068840244110140622151494488609575671090387230241296949998536132398625008053543954239573998167556201366323875845409929752349853515625e-1644")
| && check(convert(0xcccaaacccaaacccaULL, 0xaacccaaacccaaaccULL),
| "-99658331877181425640389193712445288804009112642407197633229907048864350192381814628233384153539524368748305269642704450459572458913058829202094408933558533552137589226430537671503754737153845553845646099179512540696038707395491223325946106007770844660381340028079827237033670900446083793353682761885084154898636897779677124010119288945740273072415898996441722571487815052387317025675191665761918119006431828756780493604546658949166486641354783002536071366287780290680620995991797712341457334946893188786269086688063732222194404683551757689083590842400866213237312413463207537587813396338061744078437770542720749055069473347142994267706326342325536219464867910547533482061181116137767384001927599515332824741827726661184966512254203502805790565338206862173475388342339711722457620964017690492860707751327158273522191943184085888284707357024653025991470473697475045491586713324994056478341556198451786713470909185879382607340766256394396819602885198511409676789226542867632933493115191296")
| && check(convert(0x0000000000000000ULL, 0x0000000000000001ULL),
| "3.645199531882474602528405933619419816399050815693563343720980487028371688633397736809560708625827205197247347347203531101966985632622032169973508075589809005483822581177931678569225263805633559756621562565983410728940319793553527268591240799954172811015518538383046054768715422449295305859718268214262622067532355460844068079259753739688226338971902813354664211957293812000216762672292032277433639030845605529795518855299212255321171163487629138462930035513852750160313284578587346566858083349053123705193988703983308587839946322501468602459466376586870456423634710242397194658860357568067134477982764219736292817751295560536845761267846647908517463250923736039512722781415953366096399444403402117053488448021977763604437908687623249034116909294550532283554604255016471048510990155249694820376175072774521597924829264164672829379224834378522148847524461653340453140898534938901079999466084995792940867082225167898092626332284133633537230365710606672711016101696986908545526816093446785575823545286456670464909287063062587561930219192839574686079732400741932670792586584247903252601714502511652018733705556477669856403061671860988301022089008752404238293812121415758527179547281628232710885994458574715033852877595426024800791719981955344151916599003503828822200355665967958771090937688409231050763744882094456320484272716122798149836361660589595209083576887254232532955229749892640550762959438241278496193819382077545905461172547961340469817691165676094261320725727312607482937653140421619686103059529199421431937449566099337396063075218302243845475341677972462038126626903408167086517545386382155008956065955410392914952623927880847159533184535486666480480563407531428385329300522477684217050951264747454635754866214784941542315111038630684391425212439304190584122374222972284606537485052464648655369719099026760518287560996997210778473066980129427427439517032390964791367678221749630975419713438139162678878555999177528450882748046538588177447270306738234898502976902853001364550405227287093940058325788585457368654991956265863050083472087623066020903378919489920975190829421602010382039477772083400661519154972695436582305021910908576692048173534958894170976763084807837402813849227540942073315401115262334876815962087441302256558438912500607230205782013083674113023497612445214795170983848687988348203289441256908755565216081815151205638893112562415329084456934095146184469290901166110634875590164835606941629407489774379792739804674764243483912084691871769225446506284310565309190872477286255925383528545036360550854226919571246361133225904820301916588317084377712259367894846411294822587075835486985645510829880528578782698412556249274522235061092454342386202327120407827540333914613192189174315884136688019435966273663470431440443032136411775605030601436837063972690330417475187330200911967500496761618122614796452937124070398703890868915527051490465736745397764941094879479649438162576614346948652085308024696358256756585794568493319042053882843808180358787110774418075478801186519577416271896383169835708225636584654568643702618602433548938163720732772538345454513065011540675765510656970500413537205370067924880209217363407323673368448004904408413977741706965494247040799786451861822188473571257556819433284087486023676249467869483631380473856486239547015603318322612783652068699798539400406637311682731115340677841660240710431551140370410375585572939303084073843540702120551963050514959945741359169911676575478403279380112020347348292538150798320452794842427526501796852911863108178276638472320237870082862271763396195139513712303136194366021540830531456910584048372546025177765140460207112923151923176402146752868221966889915381596481253160696822260723194259521813054303457222367967929268763072892355278854714278243863110783067060124459039315528176840304931522813148745824350892130595015198002557204332483215551447097512510076223364801202888087635650654634946887232727623906459076670227108634162319210357007273369354657187569046394884895083794103531835959613994575377897775525461977464747518162975010091463561925032742645594645800581600698347817023194379921397347681150492687237349021564206463096138703201250277757980410772647014391579144424375252519766764670458008515297647624144814453496069685127439800629552075692648608681506879044376428977463175175205181547958459515159074701285838493694034007662410100183533141516684185460758175066481561018901133031951042099053297118837448984443230856642737606478787880285299903521855025612413471034466624171559209077538498475106811294029060334271803320566493935024621719717684804443351866946690525266060758332190531807232565501890293754259590947433140384335366973398816899253698302119916142891631005349335372158005779944529176735887193980409288474621694590303098552382376969442365186023130985507823617670051191889015351479659778676132449671642015059540438237303922903056079068344635440276772565425944329927654906262952475555750912023879424636021462043321631428365675851865654901693474343411406220907550090045689588323936814675126103464401223728058185048320475251266882875299120582253090033177883674432343812734123922042926554908548231473285349572210962289889800994026533629321464700552029391517293055196218065667251276237490129206098414338903210942488902792253924667941082273267563528653863343443486495762400409978995985052082310730277076965242846278402568285187365588876653245423047205943478612931964211293489374119565751486787204884502307512372923973119191125614068756094526892783321688030310900558025683455451898487401139315290743477461921025987905332236299398859448938742087487316288730711068752763449392366897236258997091176996253284306687635454361862179407191652155243650619571720232128624130785404930566805029233271375546253313287446285812219961565022654510373870581648214791139170870970509074158721967633425471550515801498191107216277620692347014234913527385812164834475002007099402122991439542783981984927181300669603290190495106195784248531299740262706106798338573523977365240941293695214188675632715447081372252551022981921251125675131839210074132286029621443262127145872022404314258219255606415280218445074654034790115075558513374422753617188198385931164810182817002794172279803028202086567081267453349341345496389239379776494419022301042067986600501045466950004057134726934147691678031986698845370299987067384407310337433828116514830745374490760171672152978595040351405572526523026051215093709900567873568385242574546385008567738263951532676549294356417565797771595638496719149577804216291892125541055147173723744991756669672459021375111288754125372918394417976243093028214703329386031799313949535161343892720409046065009958980978947997662545514664194262097665297242612367968766000629174655887090824363583653843658980277566031286429628476318572915045823895805826010132712977834418613468288832988547377174550796802573148684253294172285056777826927377158058647145403557721233512002495437339413998842782599710186215723437958154275340509811072349041046483806284608873394275718878590418692809288333423522781240698974441829879303794241455852776713321354870647251094720675572322788447908778778892116234131617608416732280987493141331884927860259324392781255786150891859203497212615916404999097067778739914857961305884934678762043515521190581898256624635957830927811421154992139986999936203631149852372802564314896151749326404428772008250428569338329698161850171265411426708113723558325059062871506712838460986031147060351491506316012532538793354499545667009527573810892048004652452452139688789392912938251888341298122235232861138733903153560967292104241190946350516769769305030762386908399592555043192236069279491224465826684203312081255431851756341234566913972589390601558650830437402045595207689996159597545711808203688318112918947661662115802919578636403430323041610018063696707221249826383715263388850307418469423973486747009233945036220901518185766942733836846126816638158345048782728241251279820310193223512959111029884002230571688216854282257873218631744450950552327428952538149545262779889824399028513132208638633070602135522752076661567872472325125674291268881849101416382703647451428232847993332157180794015036365361645888146355749366150209085457189187232786399585879941680370348141105404742298452497895369287193974496140445677301271403589665822911096832952021181343571136957607816318342755770560406569920261633966403484121679869542684843686908354373688437968683525723666121485947946747887572716360800696442816474113593466106089204179554677145374582437962664618883018628687510079511252556002241788346284019750863992283906513572325918053464080643521532154825074820239077990779007069588034029619562190416747359712884084324521598678178890186409451480686781733176824920276835002477523486093586963733155424491897575495851549527034538337694314953057164019215026670773910997443279760005290641511584707193226351271670439775141076552632736166117611394934325673743882365518318561208941552931629125136799711574578916741023587251428998946963182411650554404206416336487418656105333038545773960190949602850096208569085230228708894874577523512558281973392961263921656163963369388411763476388625952406901518273413037068643383550282962237729195901788599392876651086599849223994259145259240479384380657803498058719062529007339428316229997756899857712116922758683071707472935574499244978419788171338468471751125303860911589289400806637202920429489919870263415951660888975434827304297451362325052693482001524843171229078467910537913138115458626612024970730899515114301915281613929239329351501049859225274564107846818112938339161308943153205117651716380468462296193882444293370484368530096898812778973178284912798550245246063411918482638261694029245273291646707331594675213428158755273882438357960245064051015888918541801139771619743221405037797285669481455810653320008904215997597975907391512026214020012010134707536774227636477580918167507850485197065326391091171451763751237612739498468510009055480025096015985581769370179656781151306565952590101977398335185042637681982306448413722177895665290302796223004198526079143104070007874540548221582347389579e-4951")
| && check(convert(0x8000000000000000ULL, 0x0000000000000001ULL),
| "3.645199531882474602528405933619419816399050815693563343720980487028371688633397736809560708625827205197247347347203531101966985632622032169973508075589809005483822581177931678569225263805633559756621562565983410728940319793553527268591240799954172811015518538383046054768715422449295305859718268214262622067532355460844068079259753739688226338971902813354664211957293812000216762672292032277433639030845605529795518855299212255321171163487629138462930035513852750160313284578587346566858083349053123705193988703983308587839946322501468602459466376586870456423634710242397194658860357568067134477982764219736292817751295560536845761267846647908517463250923736039512722781415953366096399444403402117053488448021977763604437908687623249034116909294550532283554604255016471048510990155249694820376175072774521597924829264164672829379224834378522148847524461653340453140898534938901079999466084995792940867082225167898092626332284133633537230365710606672711016101696986908545526816093446785575823545286456670464909287063062587561930219192839574686079732400741932670792586584247903252601714502511652018733705556477669856403061671860988301022089008752404238293812121415758527179547281628232710885994458574715033852877595426024800791719981955344151916599003503828822200355665967958771090937688409231050763744882094456320484272716122798149836361660589595209083576887254232532955229749892640550762959438241278496193819382077545905461172547961340469817691165676094261320725727312607482937653140421619686103059529199421431937449566099337396063075218302243845475341677972462038126626903408167086517545386382155008956065955410392914952623927880847159533184535486666480480563407531428385329300522477684217050951264747454635754866214784941542315111038630684391425212439304190584122374222972284606537485052464648655369719099026760518287560996997210778473066980129427427439517032390964791367678221749630975419713438139162678878555999177528450882748046538588177447270306738234898502976902853001364550405227287093940058325788585457368654991956265863050083472087623066020903378919489920975190829421602010382039477772083400661519154972695436582305021910908576692048173534958894170976763084807837402813849227540942073315401115262334876815962087441302256558438912500607230205782013083674113023497612445214795170983848687988348203289441256908755565216081815151205638893112562415329084456934095146184469290901166110634875590164835606941629407489774379792739804674764243483912084691871769225446506284310565309190872477286255925383528545036360550854226919571246361133225904820301916588317084377712259367894846411294822587075835486985645510829880528578782698412556249274522235061092454342386202327120407827540333914613192189174315884136688019435966273663470431440443032136411775605030601436837063972690330417475187330200911967500496761618122614796452937124070398703890868915527051490465736745397764941094879479649438162576614346948652085308024696358256756585794568493319042053882843808180358787110774418075478801186519577416271896383169835708225636584654568643702618602433548938163720732772538345454513065011540675765510656970500413537205370067924880209217363407323673368448004904408413977741706965494247040799786451861822188473571257556819433284087486023676249467869483631380473856486239547015603318322612783652068699798539400406637311682731115340677841660240710431551140370410375585572939303084073843540702120551963050514959945741359169911676575478403279380112020347348292538150798320452794842427526501796852911863108178276638472320237870082862271763396195139513712303136194366021540830531456910584048372546025177765140460207112923151923176402146752868221966889915381596481253160696822260723194259521813054303457222367967929268763072892355278854714278243863110783067060124459039315528176840304931522813148745824350892130595015198002557204332483215551447097512510076223364801202888087635650654634946887232727623906459076670227108634162319210357007273369354657187569046394884895083794103531835959613994575377897775525461977464747518162975010091463561925032742645594645800581600698347817023194379921397347681150492687237349021564206463096138703201250277757980410772647014391579144424375252519766764670458008515297647624144814453496069685127439800629552075692648608681506879044376428977463175175205181547958459515159074701285838493694034007662410100183533141516684185460758175066481561018901133031951042099053297118837448984443230856642737606478787880285299903521855025612413471034466624171559209077538498475106811294029060334271803320566493935024621719717684804443351866946690525266060758332190531807232565501890293754259590947433140384335366973398816899253698302119916142891631005349335372158005779944529176735887193980409288474621694590303098552382376969442365186023130985507823617670051191889015351479659778676132449671642015059540438237303922903056079068344635440276772565425944329927654906262952475555750912023879424636021462043321631428365675851865654901693474343411406220907550090045689588323936814675126103464401223728058185048320475251266882875299120582253090033177883674432343812734123922042926554908548231473285349572210962289889800994026533629321464700552029391517293055196218065667251276237490129206098414338903210942488902792253924667941082273267563528653863343443486495762400409978995985052082310730277076965242846278402568285187365588876653245423047205943478612931964211293489374119565751486787204884502307512372923973119191125614068756094526892783321688030310900558025683455451898487401139315290743477461921025987905332236299398859448938742087487316288730711068752763449392366897236258997091176996253284306687635454361862179407191652155243650619571720232128624130785404930566805029233271375546253313287446285812219961565022654510373870581648214791139170870970509074158721967633425471550515801498191107216277620692347014234913527385812164834475002007099402122991439542783981984927181300669603290190495106195784248531299740262706106798338573523977365240941293695214188675632715447081372252551022981921251125675131839210074132286029621443262127145872022404314258219255606415280218445074654034790115075558513374422753617188198385931164810182817002794172279803028202086567081267453349341345496389239379776494419022301042067986600501045466950004057134726934147691678031986698845370299987067384407310337433828116514830745374490760171672152978595040351405572526523026051215093709900567873568385242574546385008567738263951532676549294356417565797771595638496719149577804216291892125541055147173723744991756669672459021375111288754125372918394417976243093028214703329386031799313949535161343892720409046065009958980978947997662545514664194262097665297242612367968766000629174655887090824363583653843658980277566031286429628476318572915045823895805826010132712977834418613468288832988547377174550796802573148684253294172285056777826927377158058647145403557721233512002495437339413998842782599710186215723437958154275340509811072349041046483806284608873394275718878590418692809288333423522781240698974441829879303794241455852776713321354870647251094720675572322788447908778778892116234131617608416732280987493141331884927860259324392781255786150891859203497212615916404999097067778739914857961305884934678762043515521190581898256624635957830927811421154992139986999936203631149852372802564314896151749326404428772008250428569338329698161850171265411426708113723558325059062871506712838460986031147060351491506316012532538793354499545667009527573810892048004652452452139688789392912938251888341298122235232861138733903153560967292104241190946350516769769305030762386908399592555043192236069279491224465826684203312081255431851756341234566913972589390601558650830437402045595207689996159597545711808203688318112918947661662115802919578636403430323041610018063696707221249826383715263388850307418469423973486747009233945036220901518185766942733836846126816638158345048782728241251279820310193223512959111029884002230571688216854282257873218631744450950552327428952538149545262779889824399028513132208638633070602135522752076661567872472325125674291268881849101416382703647451428232847993332157180794015036365361645888146355749366150209085457189187232786399585879941680370348141105404742298452497895369287193974496140445677301271403589665822911096832952021181343571136957607816318342755770560406569920261633966403484121679869542684843686908354373688437968683525723666121485947946747887572716360800696442816474113593466106089204179554677145374582437962664618883018628687510079511252556002241788346284019750863992283906513572325918053464080643521532154825074820239077990779007069588034029619562190416747359712884084324521598678178890186409451480686781733176824920276835002477523486093586963733155424491897575495851549527034538337694314953057164019215026670773910997443279760005290641511584707193226351271670439775141076552632736166117611394934325673743882365518318561208941552931629125136799711574578916741023587251428998946963182411650554404206416336487418656105333038545773960190949602850096208569085230228708894874577523512558281973392961263921656163963369388411763476388625952406901518273413037068643383550282962237729195901788599392876651086599849223994259145259240479384380657803498058719062529007339428316229997756899857712116922758683071707472935574499244978419788171338468471751125303860911589289400806637202920429489919870263415951660888975434827304297451362325052693482001524843171229078467910537913138115458626612024970730899515114301915281613929239329351501049859225274564107846818112938339161308943153205117651716380468462296193882444293370484368530096898812778973178284912798550245246063411918482638261694029245273291646707331594675213428158755273882438357960245064051015888918541801139771619743221405037797285669481455810653320008904215997597975907391512026214020012010134707536774227636477580918167507850485197065326391091171451763751237612739498468510009055480025096015985581769370179656781151306565952590101977398335185042637681982306448413722177895665290302796223004198526079143104070007874540548221582347389579e-4951"))
| return 0;
| else
| return 1;
| }
|
| #else // PPL_CXX_LONG_DOUBLE_BINARY_FORMAT != FLOAT_INTEL_DOUBLE_EXTENDED
|
| int
| main() {
| return 1;
| }
|
| #endif // PPL_CXX_LONG_DOUBLE_BINARY_FORMAT != FLOAT_INTEL_DOUBLE_EXTENDED
|
| #elif SIZEOF_LONG_DOUBLE == 8
|
| double
| convert(uint32_t msp, uint32_t lsp) {
| union {
| long double value;
| struct {
| #ifdef WORDS_BIGENDIAN
| uint32_t msp;
| uint32_t lsp;
| #else
| uint32_t lsp;
| uint32_t msp;
| #endif
| } parts;
| } u;
|
| u.parts.msp = msp;
| u.parts.lsp = lsp;
| return u.value;
| }
|
| #if PPL_CXX_LONG_DOUBLE_BINARY_FORMAT == PPL_FLOAT_IEEE754_DOUBLE
|
| int
| main() {
| if (check(convert(0xaaacccaaUL, 0xacccaaacUL),
| "-4.018242396032647085467373664662028399901175154542925376476863248797653889888945947404163925979898721593782464256360719269163883854613473748830842329884157359816532025640075051481726120707111709993717456369512975427023957197464411926714771905463723621065863511603311053477227687835693359375e-103")
| && check(convert(0xcccaaaccUL, 0xcaaacccaUL),
| "-85705035845709846787631445265530356117787053916987832397725696")
| && check(convert(0x00000000UL, 0x00000001UL),
| "4.940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625e-324")
| && check(convert(0x80000000UL, 0x00000001UL),
| "-4.940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625e-324"))
| return 0;
| else
| return 1;
| }
|
| #else // PPL_CXX_LONG_DOUBLE_BINARY_FORMAT != FLOAT_IEEE754_DOUBLE
|
| int
| main() {
| return 1;
| }
|
| #endif // PPL_CXX_LONG_DOUBLE_BINARY_FORMAT != FLOAT_IEEE754_DOUBLE
|
| #else // SIZEOF_LONG_DOUBLE != 8
|
| int
| main() {
| return 1;
| }
|
| #endif // SIZEOF_LONG_DOUBLE != 8
|
configure:13083: result: no
configure:13162: checking whether the C++ compiler supports flexible arrays
configure:13307: xlC -o conftest -g -O2 conftest.cpp >&5
configure:13311: $? = 0
configure:13317: ./conftest
configure:13321: $? = 0
configure:13323: result: yes
configure:13375: checking whether the IEEE inexact flag is supported in C++
configure:13477: xlC -o conftest -g -O2 conftest.cpp >&5
configure:13481: $? = 0
configure:13487: ./conftest
configure:13491: $? = 0
configure:13493: result: yes
configure:13546: checking if the compiler has the remainder bug
configure:13585: xlC -o conftest -g -O2 conftest.cpp >&5
configure:13589: $? = 0
configure:13595: ./conftest
configure:13599: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| /* end confdefs.h. */
|
| #include <climits>
|
| int minus_one(int n) {
| return (n+1)*(n-1)-n*n;
| }
|
| int p(int x, int y) {
| int z = x % y;
| return z;
| }
|
| int main(int argc, char** argv) {
| if (p(INT_MIN, minus_one(argc)) != 0)
| return 1;
| else
| return 0;
| }
|
configure:13610: result: yes
configure:13653: checking whether the C++ compiler supports __attribute__ ((weak))
configure:13676: xlC -c -g -O2 conftest.cpp >&5
configure:13683: $? = 0
configure:13688: result: yes
configure:13739: checking for fenv.h
configure:13746: result: yes
configure:13739: checking for ieeefp.h
configure:13746: result: no
configure:13750: checking getopt.h usability
configure:13767: xlC -c -g -O2 conftest.cpp >&5
"conftest.cpp", line 89.10: 1540-0836 (S) The #include file <getopt.h> is not found.
configure:13774: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <getopt.h>
configure:13788: result: no
configure:13792: checking getopt.h presence
configure:13807: xlC -E conftest.cpp
"conftest.cpp", line 56.10: 1540-0836 (S) The #include file <getopt.h> is not found.
configure:13814: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| /* end confdefs.h. */
| #include <getopt.h>
configure:13828: result: no
configure:13861: checking for getopt.h
configure:13870: result: no
configure:13750: checking signal.h usability
configure:13767: xlC -c -g -O2 conftest.cpp >&5
configure:13774: $? = 0
configure:13788: result: yes
configure:13792: checking signal.h presence
configure:13807: xlC -E conftest.cpp
configure:13814: $? = 0
configure:13828: result: yes
configure:13861: checking for signal.h
configure:13870: result: yes
configure:13739: checking for string.h
configure:13746: result: yes
configure:13739: checking for strings.h
configure:13746: result: yes
configure:13750: checking sys/resource.h usability
configure:13767: xlC -c -g -O2 conftest.cpp >&5
configure:13774: $? = 0
configure:13788: result: yes
configure:13792: checking sys/resource.h presence
configure:13807: xlC -E conftest.cpp
configure:13814: $? = 0
configure:13828: result: yes
configure:13861: checking for sys/resource.h
configure:13870: result: yes
configure:13750: checking sys/time.h usability
configure:13767: xlC -c -g -O2 conftest.cpp >&5
configure:13774: $? = 0
configure:13788: result: yes
configure:13792: checking sys/time.h presence
configure:13807: xlC -E conftest.cpp
configure:13814: $? = 0
configure:13828: result: yes
configure:13861: checking for sys/time.h
configure:13870: result: yes
configure:13739: checking for sys/types.h
configure:13746: result: yes
configure:13739: checking for unistd.h
configure:13746: result: yes
configure:13887: checking whether ffs is declared
configure:13923: xlC -c -g -O2 conftest.cpp >&5
configure:13930: $? = 0
configure:13945: result: yes
configure:13963: checking whether getenv is declared
configure:13993: xlC -c -g -O2 conftest.cpp >&5
configure:14000: $? = 0
configure:14015: result: yes
configure:14031: checking whether strtof is declared
configure:14061: xlC -c -g -O2 conftest.cpp >&5
configure:14068: $? = 0
configure:14083: result: yes
configure:14099: checking whether strtod is declared
configure:14129: xlC -c -g -O2 conftest.cpp >&5
configure:14136: $? = 0
configure:14151: result: yes
configure:14167: checking whether strtold is declared
configure:14197: xlC -c -g -O2 conftest.cpp >&5
configure:14204: $? = 0
configure:14219: result: yes
configure:14235: checking whether strtoll is declared
configure:14265: xlC -c -g -O2 conftest.cpp >&5
configure:14272: $? = 0
configure:14287: result: yes
configure:14303: checking whether strtoull is declared
configure:14333: xlC -c -g -O2 conftest.cpp >&5
configure:14340: $? = 0
configure:14355: result: yes
configure:14373: checking whether fma is declared
configure:14403: xlC -c -g -O2 conftest.cpp >&5
configure:14410: $? = 0
configure:14425: result: yes
configure:14441: checking whether fmaf is declared
configure:14471: xlC -c -g -O2 conftest.cpp >&5
configure:14478: $? = 0
configure:14493: result: yes
configure:14509: checking whether fmal is declared
configure:14539: xlC -c -g -O2 conftest.cpp >&5
configure:14546: $? = 0
configure:14561: result: yes
configure:14577: checking whether rintf is declared
configure:14607: xlC -c -g -O2 conftest.cpp >&5
configure:14614: $? = 0
configure:14629: result: yes
configure:14645: checking whether rintl is declared
configure:14675: xlC -c -g -O2 conftest.cpp >&5
configure:14682: $? = 0
configure:14697: result: yes
configure:14717: checking for int_fast16_t
configure:14745: xlC -c -g -O2 conftest.cpp >&5
configure:14752: $? = 0
configure:14779: xlC -c -g -O2 conftest.cpp >&5
"conftest.cpp", line 111.27: 1540-0063 (S) The text ")" is unexpected.
configure:14786: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| if (sizeof ((int_fast16_t)))
| return 0;
| ;
| return 0;
| }
configure:14809: result: yes
configure:14819: checking for int_fast32_t
configure:14847: xlC -c -g -O2 conftest.cpp >&5
configure:14854: $? = 0
configure:14881: xlC -c -g -O2 conftest.cpp >&5
"conftest.cpp", line 112.27: 1540-0063 (S) The text ")" is unexpected.
configure:14888: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| if (sizeof ((int_fast32_t)))
| return 0;
| ;
| return 0;
| }
configure:14911: result: yes
configure:14921: checking for int_fast64_t
configure:14949: xlC -c -g -O2 conftest.cpp >&5
configure:14956: $? = 0
configure:14983: xlC -c -g -O2 conftest.cpp >&5
"conftest.cpp", line 113.27: 1540-0063 (S) The text ")" is unexpected.
configure:14990: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| if (sizeof ((int_fast64_t)))
| return 0;
| ;
| return 0;
| }
configure:15013: result: yes
configure:15023: checking for uint_fast16_t
configure:15051: xlC -c -g -O2 conftest.cpp >&5
configure:15058: $? = 0
configure:15085: xlC -c -g -O2 conftest.cpp >&5
"conftest.cpp", line 114.28: 1540-0063 (S) The text ")" is unexpected.
configure:15092: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| if (sizeof ((uint_fast16_t)))
| return 0;
| ;
| return 0;
| }
configure:15115: result: yes
configure:15125: checking for uint_fast32_t
configure:15153: xlC -c -g -O2 conftest.cpp >&5
configure:15160: $? = 0
configure:15187: xlC -c -g -O2 conftest.cpp >&5
"conftest.cpp", line 115.28: 1540-0063 (S) The text ")" is unexpected.
configure:15194: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| if (sizeof ((uint_fast32_t)))
| return 0;
| ;
| return 0;
| }
configure:15217: result: yes
configure:15227: checking for uint_fast64_t
configure:15255: xlC -c -g -O2 conftest.cpp >&5
configure:15262: $? = 0
configure:15289: xlC -c -g -O2 conftest.cpp >&5
"conftest.cpp", line 116.28: 1540-0063 (S) The text ")" is unexpected.
configure:15296: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| if (sizeof ((uint_fast64_t)))
| return 0;
| ;
| return 0;
| }
configure:15319: result: yes
configure:15409: checking for non-GNU ld
configure:15440: result: /usr/bin/ld
configure:15449: checking if the linker (/usr/bin/ld) is GNU ld
configure:15462: result: no
configure:15469: checking for shared library run path origin
configure:15482: result: done
configure:15513: checking how to link with libgmp
configure:15902: result: /contrib/gmp-4.3.1//lib/libgmp.a
configure:15942: checking how to link with libgmpxx
configure:16331: result: /contrib/gmp-4.3.1//lib/libgmpxx.a /contrib/gmp-4.3.1//lib/libgmp.a
configure:16375: checking for the GMP library version 4.1.3 or above
configure:16495: xlC -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp /contrib/gmp-4.3.1//lib/libgmpxx.a /contrib/gmp-4.3.1//lib/libgmp.a >&5
configure:16499: $? = 0
configure:16505: ./conftest
configure:16509: $? = 0
configure:16511: result: yes
configure:16539: checking size of mp_limb_t
configure:16850: xlC -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp /contrib/gmp-4.3.1//lib/libgmpxx.a /contrib/gmp-4.3.1//lib/libgmp.a >&5
configure:16854: $? = 0
configure:16860: ./conftest
configure:16864: $? = 0
configure:16890: result: 8
configure:16901: checking whether GMP has been compiled with support for exceptions
configure:16951: xlC -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp /contrib/gmp-4.3.1//lib/libgmpxx.a /contrib/gmp-4.3.1//lib/libgmp.a >&5
configure:16955: $? = 0
configure:16961: ./conftest
configure:16965: $? = 0
configure:16967: result: yes
configure:17041: checking for __mpz_struct._mp_alloc
configure:17070: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:17077: $? = 0
configure:17136: result: yes
configure:17148: checking for __mpz_struct._mp_size
configure:17177: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:17184: $? = 0
configure:17243: result: yes
configure:17255: checking for __mpz_struct._mp_d
configure:17284: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:17291: $? = 0
configure:17350: result: yes
configure:17387: checking for setitimer
configure:17443: xlC -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:17450: $? = 0
configure:17472: result: yes
configure:17488: checking whether to build the Parma Watchdog Library
configure:17520: result: yes
configure:17546: checking whether to build the ppl_lcdd program
configure:17555: result: yes
configure:17579: checking whether to build the ppl_lpsol program
configure:17588: result: yes
configure:17620: checking which interfaces are enabled
configure:17682: result: cxx c ocaml java
configure:17808: checking for javac
configure:17826: found /usr/java5//bin/javac
configure:17838: result: /usr/java5//bin/javac
configure:17854: checking whether /usr/java5//bin/javac supports enums
configure:17880: /usr/java5//bin/javac Test.java
configure:17883: $? = 0
configure:17895: result: yes
configure:17950: checking for java
configure:17968: found /usr/java5//bin/java
configure:17980: result: /usr/java5//bin/java
configure:17998: checking for uudecode
configure:18014: found /usr/bin/uudecode
configure:18025: result: yes
configure:18034: checking if uudecode can decode base 64 file
configure:18061: result: yes
configure:18212: checking if /usr/java5//bin/java works
configure:18249: /usr/java5//bin/java Test
configure:18252: $? = 0
configure:18265: result: yes
configure:18321: checking for jar
configure:18339: found /usr/java5//bin/jar
configure:18351: result: /usr/java5//bin/jar
configure:18416: checking for javah
configure:18434: found /usr/java5//bin/javah
configure:18446: result: /usr/java5//bin/javah
configure:18469: xlC -E -I/contrib/gmp-4.3.1//include conftest.cpp
"conftest.cpp", line 1.10: 1540-0836 (S) The #include file <jni.h> is not found.
configure:18476: $? = 1
configure: failed program was:
| #include <jni.h>
configure:18501: xlC -E -I/contrib/gmp-4.3.1//include -I/usr/java5//include -I/usr/java5//include/aix conftest.cpp
configure:18508: $? = 0
configure:18538: checking whether jlong can contain data pointers
configure:18568: xlC -o conftest -g -O2 -I/contrib/gmp-4.3.1//include -I/usr/java5//include -I/usr/java5//include/aix conftest.cpp >&5
configure:18572: $? = 0
configure:18578: ./conftest
configure:18582: $? = 0
configure:18585: result: yes
configure:18648: checking for ocamlc
configure:18678: result: no
configure:18705: checking for ocamlopt
configure:18735: result: no
configure:20219: checking for GNU M4 that supports accurate traces
configure:20261: result: /usr/local/bin//m4
configure:20264: checking how m4 supports trace files
configure:20274: result: --debugfile
configure:20359: checking which instantiations are enabled
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20425: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -I. conftest.cpp >&5
configure:20432: $? = 0
configure:20480: result: Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@BD_Shape<mpq_class>@Octagonal_Shape<mpz_class>@Octagonal_Shape<mpq_class>@Constraints_Product<C_Polyhedron,Grid>@Pointset_Powerset<C_Polyhedron>@Pointset_Powerset<NNC_Polyhedron>
configure:20486: checking whether tests should be run under Valgrind
configure:20544: result: no
configure:20564: checking whether `make check' does a thorough or quick check
configure:20577: result: quick
configure:20621: checking for a sed that does not truncate output
configure:20687: result: /usr/bin/sed
configure:20768: checking for non-GNU ld
configure:20802: result: /usr/bin/ld
configure:20811: checking if the linker (/usr/bin/ld) is GNU ld
configure:20826: result: no
configure:20838: checking for BSD- or MS-compatible name lister (nm)
configure:20887: result: /usr/bin/nm -B
configure:21005: checking the name lister (/usr/bin/nm -B) interface
configure:21012: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:21015: /usr/bin/nm -B "conftest.o"
configure:21018: output
0 d some_variable
8 D some_variable
configure:21025: result: BSD nm
configure:21028: checking whether ln -s works
configure:21032: result: yes
configure:21040: checking the maximum length of command line arguments
configure:21160: result: 307200
configure:21177: checking whether the shell understands some XSI constructs
configure:21187: result: yes
configure:21191: checking whether the shell understands "+="
configure:21197: result: no
configure:21232: checking for /usr/bin/ld option to reload object files
configure:21239: result: -r
configure:21308: checking for objdump
configure:21338: result: no
configure:21367: checking how to recognize dependent libraries
configure:21563: result: pass_all
configure:21623: checking for ar
configure:21639: found /usr/bin/ar
configure:21650: result: ar
configure:21728: checking for strip
configure:21744: found /usr/bin/strip
configure:21755: result: strip
configure:21827: checking for ranlib
configure:21843: found /usr/bin/ranlib
configure:21854: result: ranlib
configure:21944: checking command to parse /usr/bin/nm -B output from xlc object
configure:22062: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:22065: $? = 0
configure:22069: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([BCDT][BCDT]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm
configure:22072: $? = 0
configure:22126: xlC -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp conftstm.o >&5
configure:22129: $? = 0
configure:22167: result: ok
configure:23032: checking for dlfcn.h
configure:23053: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:23060: $? = 0
configure:23077: result: yes
configure:23204: checking for C++ compiler version
configure:23212: xlC --version >&5
xlC: 1501-216 (W) command option --version is not recognized - passed to ld
xlc(1) IBM (2007) xlc(1)
NAME
xlc, xlc++, xlC, cc, c89, c99, xlCcore, xlc++core and
related commands - invoke the IBM XL C/C++ compiler.
SYNTAX
<invocation-command> [ <option> | <inputfile> ] ...
DESCRIPTION
The invocation commands compile C and C++ source files.
The commands and their recommended uses are described
below.
Invocations Usage (supported standards)
_________________________________________________________
xlc, xlc_r, xlc_r4, Compile C source files.
xlc_r7, xlc128, xlc128_r, (ANSI C89, ISO C99,
xlc128_r4, xlc128_r7 IBM language extensions)
xlc++, xlc++_r, xlc++_r4, Compile C++ source files.
xlc++_r7, xlc++128,
xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC, xlC_r,
xlC_r4, xlC_r7, xlC128,
xlC128_r, xlC128_r4,
xlC128_r7
cc, cc_r, cc_r4, cc_r7, Compile legacy code that
cc128, cc128_r, cc128_r4, does not conform to Standard
cc128_r7 C. (pre-ANSI C)
c89, c89_r, c89_r4, Compile C source files with
c89_r7, c89_128, c89_128_r, strict conformance to the
c89_128_r4, c89_128_r7 C89 standard. (ANSI C89)
c99, c99_r, c99_r4, Compile C source files with
c99_r7, c99_128, c99_128_r, strict conformance to the
c99_128_r4, c99_128_r7 C99 standard. (ISO 99)
xlc++core, xlc++core_r, Compile C++ source files
xlc++core_r7, xlc++core128, but the compiler will
xlc++core128_r, link only to the core of
xlc++core128_r7, xlCcore, the runtime library.
xlCcore_r, xlCcore_r7,
xlC128core, xlC128core_r,
xlC128core_r7
gxlc Accepts GNU C options, maps
them to their equivalent XL
C option, then invokes xlc.
gxlc++, gxlC Accepts GNU C/C++ options, maps
them to their equivalent XL
C++ option,then invokes xlc++.
The main difference between these commands is that they use different
default options (which are set in the configuration file
/etc/vac.cfg.XX, where XX represents the AIX version).
See the Compiler Reference for more information on these invocation
commands.
All invocations with a suffix of _r allow for thread-safe
compilation. Use these commands to create threaded
applications or to link programs that use multi-threading.
These commands also process assembler source files and
object files. The compiler calls the link editor to
produce a single executable or shared library, unless you
specify the compiler options that prevent object files
from being linked.
The input file may have any of the following suffixes:
.C, .cpp, .cxx, C++ source file
.cc, .cp, .c++
.c C source file
.i Preprocessed C or C++ source file
.a Archive file
.o Object file for ld command
.s Assembler source file
.S Assembler source file that
needs preprocessing
.so Shared object file
OPTIONS
Compiler options are categorized by their functions and
may be used to set the compiler behavior. Options can be
flag options or keyword options.
Keyword options are specified in one of the following
ways:
-q<option>
-q<option>=<suboption>
-q<option>=<suboption>:<suboption>
Keyword options with no suboptions represent switches that
may be either on or off. -qx turns the switch on, and
-qnox turns the switch off. For example, -qsource tells
the compiler to produce a source listing and -qnosource
tells the compiler not to produce a source listing.
Output control options
-c Instructs the compiler to pass source files to the
compiler only. The compiled source files are not
sent to the linker. This option produces an object
file, file_name.o, for each valid source file.
-C | -C!
Preserves or removes comments in preprocessed
output.
When -C is used with the -E option, comments are
written to standard output; with the -P option,
comments are written to an output file.
When -C! is in effect, comments are removed.
-E Instructs the compiler to preprocess the source
files named in the compiler invocation and creates
an output preprocessed source file.
-G Tells the linkage editor to create a shared object
enabled for runtime linking.
-M Creates an output file that contains information to
be included in a "make" description file. This is
equivalent to specifying -qmakedep without a
suboption.
-qmakedep[=gcc]
Creates an output file that contains targets
suitable for inclusion in a description file for
the make command that describes the dependencies of
the main source file in the compilation.
Specifying 'gcc' changes the format of the
generated dependency file.
Specifying -qmakedep without 'gcc' is equivalent to
specifying -M.
-MF<path>
Specifies the target for the output generated by
the -qmakedep or -M options, where <path> can be a
full directory path or file name. Note that "-MF
<path>" (with a space before the argument) is also
acceptable. This option only has effect when
specified with -qmakedep or -M.
(C)-qmkshrobj, (C++)-qmkshrobj[=<priority>]
Creates a shared object from the generated object
files.
The optional number specifies the priority level
for initialization of all static objects in the
file. <priority> may be any number from -214782623
(highest priority-initialized first) to 214783647
(lowest priority-initialized last). If no priority
is specified, the default priority of 0 is used.
The priority is not used when linking shared
objects (using the xlc command) written in C.
Specifying -qmkshrobj implies -qpic.
See related options, -e <name> and -o <path>.
-o <path>
Specifies an output location for the object,
assembler, or executable files created by the
compiler. When the -o option is used during
compiler invocation, <path> can be the name of
either a file or a directory.
Default: -o a.out
-P Preprocesses the C or C++ source files named in the
compiler invocation and creates an output
preprocessed source file for each input source
file. The preprocessed output file has the same
name as the output file, with a .i suffix.
-S Generates an assembler language file (.s) for each
source file. The resulting .s files can be
assembled to produce object .o files or an
executable file (a.out).
Input control options
-+ (C++) Compiles any file, <file_name.nnn>, as a C++
language file, where <nnn> is any suffix other than
.a, .so, .o, .s, or .S. This option is equivalent
to the -qsourcetype=c++ option and should not be
used together with the -qsourcetype option.
-qcinc=<directory_path> | -qnocinc
(C++) Instructs the compiler to place an extern "C"
{ } wrapper around the contents of an include file,
where <directory_path> is the location of that
include file.
Default: -qnocinc
-I<directory_path>
Specifies an additional search path for include
file names that do not specify an absolute path.
Default:
The following directories are searched, in the
following order, after any paths that are
specified by the -I option:
1) The current directory.
2) The directory where the source file is
located.
3) /usr/include.
-qidirfirst | -qnoidirfirst
Specifies the search order for files included with
the #include "<file_name>" directive. Use
-qidirfirst with the -I option. If -qidirfirst is
specified, the directories specified by the
-I<directory_path> option are searched before the
directory in which the current file resides.
Default: -qnoidirfirst
-qinclude=<file_path>
Specifies additional header files that are included
before the first line of a source file in a
compilation unit and ahead of any headers which may
be specified by an #include statement on the first
line of the source file.
-qsourcetype=<type>
Determines whether to treat all recognized source
files as if they are of the source type specified
by <type> (regardless of file name suffix), or
whether to use the file name suffix to determine
the programming language.
Note that the option only affects files that are
specified on the command line following the option,
but not those that precede the option. The
-qsourcetype option should not be used together
with the -+ option. The suboptions are:
default
The compiler assumes that the programming
language of a source file will be implied by
its file name suffix.
c
The compiler compiles all source files
following this option as if they are C
language source files.
assembler
The compiler compiles all source files
following this option as if they are assembler
language source files.
assembler-with-cpp
The compiler compiles all source files
following this option as if they are assembler
language source files that need preprocessing.
Default: -qsourcetype=default
-qstdinc | -qnostdinc
Specifies whether the standard directories are
searched for files included by the #include
<file_name> and #include "file_name" directives.
The -qnostdinc option excludes the standard include
directories from the search path.
Default: -qstdinc
Language element control options
-qaltivec | -qnoaltivec
Instructs the compiler to support vector data types
and operators and is accepted when the architecture
specified by the -qarch option supports vector
instructions and -qenablevmx is enabled.
Default: -qnoaltivec
-qasm[=<sub>] | -qnoasm[=<sub>]
Controls the interpretation of, and subsequent
generation of code for, asm statements.
In (C), <sub> can only be 'gcc'.
In (C++), <sub> can be:
gcc
Interprets asm statements using GCC syntax.
stdcpp
Interprets asm statements using stdcpp syntax.
Default:
(C++) -qnoasm=stdcpp in compat366 or strict98
modes, and -qasm=gcc otherwise.
(C) -qasm=gcc
-qcpluscmt | -qnocpluscmt
(C) Permits the usage of "//" to introduce a
comment that lasts until the end of the current
source line, as in C++.
Default:
o -qcpluscmt when you invoke the compiler with
xlc, xlc_r, cc, or cc_r, or when -qlanglvl is
set to stdc99 or extc99.
o -qnocpluscmt otherwise.
-D<name>[=[<def>]]
Defines <name> as in the #define directive. <def>
is an optional definition or value assigned to
<name>. Specifying -D<name>= (with no <def>) is
equivalent to #define <name>; specifying
-D<name> is equivalent to #define <name> 1.
-qdbcs | -qnodbcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qmbcs.
Default: -qnodbcs
-qdfp | -qnodfp
Enables compiler support for decimal floating-point
types and literals.
Default: -qnodpf
-qdigraph | -qnodigraph
Allows usage of digraph key combinations or
keywords to represent characters not found on some
keyboards.
Default:
(C) -qdigraph when -qlanglvl is extc89,
extended, extc99 or stdc99, and -qnodigraph
otherwise.
(C++) -qdigraph
-qdollar | -qnodollar
Allows the '$' symbol to be used in the names of
identifiers. When -qdollar is in effect, the dollar
symbol '$' in an identifier is treated as a base
character. If the options -qnodollar and
-qlanglvl=ucs are both enabled, the dollar symbol
is treated as an extended character.
Default: -qnodollar
-qignprag=<option>
Instructs the compiler to ignore certain pragma
statements. The options are:
disjoint
Ignores all #pragma disjoint directives in the
source file.
isolated_call
Ignores all #pragma isolated_call directives
in the source file.
all
Ignores all #pragma isolated_call directives
and #pragma disjoint directives in the source
file.
omp
Ignores all OpenMP parallel processing
directives in the source file.
ibm
(C) Ignores all #pragma ibm snapshot
directives and all IBM SMP directives in the
source file.
-qkeyword=<keyword> | -qnokeyword=<keyword>
Controls whether the specified name is treated as a
keyword or as an identifier whenever it appears in
a program source.
By default, all the built-in keywords defined in
the C and C++ language standards are reserved as
keywords. You cannot add keywords to the language
with this option. However, you can use
-qnokeyword=<keyword> to disable built-in keywords,
and use -qkeyword=<keyword> to reinstate those
keywords.
(C) This option can also be used with the following
C keywords: restrict, typeof, asm and inline.
(C++) This option can be used with all C++ built-in
keywords.
-qlanglvl=<suboptions_list>
Selects the language level and language options for
the compilation. <suboptions_list> is a colon-
separated list of suboptions.
(C) For C language programs, <suboptions_list> is
{classic|extended|saa|saa12|stdc89|stdc99|extc89|extc99}:{ucs|noucs}.
classic
Allows the compilation of non-stdc89 programs,
and conforms closely to the K&R level
preprocessor.
extended
Provides compatibility with the RT compiler
and classic. This language level is based on
C89.
saa
Compilation conforms to the current SAA(R) C
CPI language definition. This is currently SAA
C Level 2.
saal2
Compilation conforms to the SAA C Level 2 CPI
language definition, with some exceptions.
stdc89
Compilation conforms to the ANSI C89 standard,
also known as ISO C90.
stdc99
Compilation conforms to the ISO C99 standard.
extc89
Compilation conforms to the ANSI C89 standard,
and accepts implementation-specific language
extensions.
extc99
Compilation conforms to the ISO C99 standard,
and accepts implementation-specific language
extensions.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in program
source code.
Default:
o -qlanglvl=ucs under language levels stdc99
and extc99.
o -qlanglvl=noucs for all other language
levels.
(C++) The suboptions for C++ language programs are:
compat366
Compilation conforms to some, but not all, IBM
C and C++ Compilers V3.6 features.
extended
Compilation is based on the strict98, with
some differences to accommodate extended
language features.
strict98
Compilation conforms to the ISO C++ standard
for C++ programs.
anonstruct | noanonstruct
This suboption controls whether anonymous
structs and anonymous classes are allowed in
your C++ source. By default, the compiler
allows anonymous structs.
anonunion | noanonunion
This suboption controls what members are
allowed in anonymous unions. When this
suboption is set to anonunion, anonymous
unions can have members of all types that
standard C++ allows in non-anonymous unions.
ansifor | noansifor
This suboption controls whether scope rules
defined in the C++ standard apply to names
declared in for-init statements. By default,
standard C++ rules are used.
ansisinit | noansisinit
This suboption can be used to select between
old (v3.6 or earlier) and current (v5.0 or
later) compiler object compatibility.
c99__func__ | noc99__func__
This suboption instructs the compiler to
recognize the C99 __func__ identifier.
The c99__func__ suboption is enabled by
default when -qlanglvl=extended is enabled. It
can be enabled for any language level by
specifying -qlanglvl=c99__func__, or disabled
by specifying -qlanglvl=noc99__func__.
c99complex | noc99complex
This suboption instructs the compiler to
recognize C99 complex data types and related
keywords. It is set by default for
-qlanglvl=extended.
c99complexheader | noc99complexheader
This suboption instructs the compiler to use
the C99 complex.h header file.
c99compoundliteral | noc99compoundliteral
This suboption instructs the compiler to
support the C99 compound literal feature. It
is set by default for -qlanglvl=extended.
c99hexfloat | noc99hexfloat
This suboption enables support for C99-style
hexadecimal floating constants in C++
applications. It is on by default for
-qlanglvl=extended.
c99vla | noc99vla
When c99vla is enabled, the compiler will
support the use of C99-type variable length
arrays in your C++ applications. It is set by
default for -qlanglvl=extended.
compatzea | nocompatzea
The -qlanglvl=compatzea option is a
compatibility option that lets you continue to
use a zero extent array with dimension of 1.
Default: -qlanglvl=nocompatzea
Specifying -qlanglvl=compatzea has effect only
if -qlanglvl=zeroextarray is also enabled.
dependentbaselookup | nodependentbaselookup
Provides the ability to specify compilation in
conformance with issue 213 of TC1 of the C++
standard.
Default: -qlanglvl=dependentbaselookup
gnu_assert | nognu_assert
Enables or disables support for the following
GNU C system identification assertions:
'#assert', '#unassert', '#cpu', '#machine',
'#system'.
gnu_complex | nognu_complex
This suboption instructs the compiler to
recognize GNU complex data types and related
keywords.
gnu_computedgoto | nognu_computedgoto
Enables support for computed gotos. This
suboption is enabled for -qlanglvl=extended.
gnu_explicitregvar | nognu_explicitregvar
(C) Allows you to control whether the compiler
accepts and ignores the specification of
explicit registers for variables.
gnu_externtemplate | nognu_externtemplate
This suboption enables or disables extern
template instantiations.
Default:
gnu_externtemplate is enabled by default
when compiling to the extended language
level.
gnu_include_next | nognu_include_next
Enables or disables support for the GNU C
#include_next preprocessor directive.
Default:
gnu_include_next is enabled by default for
-qlanglvl=extended.
gnu_labelvalue | nognu_labelvalue
Enables or disables support for labels as
values.
Default:
gnu_labelvalue is enabled by default for
-qlanglvl=extended.
gnu_locallabel | nognu_locallabel
Enables or disables support for locally-
declared labels.
gnu_membernamereuse | nognu_membernamereuse
Enables or disables reusing a template name in
a member list as a typedef.
gnu_suffixij | nognu_suffixij
Enables or disables support for GCC style
complex numbers. If gnu_suffixij is specified,
a complex number can be ended with suffix i/I
or j/J.
Default:
gnu_suffixij is enabled by default for
-qlanglvl=extended.
gnu_varargmacros | nognu_varargmacros
This option is similar to
-qlanglvl=varargmacros. For the list of the
main differences, refer to the Compiler
Reference.
Default:
gnu_varargmacros is set by default for
-qlanglvl=extended.
gnu_warning | nognu_warning
Enables or disables support for the GNU C
#warning preprocessor directive.
illptom | noillptom
This suboption controls what expressions can
be used to form pointers to members. C/C++ can
accept some forms that are in common use, but
do not conform to the C++ standard. The
compiler allows these forms by default.
implicitint | noimplicitint
This suboption controls whether the compiler
will accept missing or partially specified
types as implicitly specifying 'int'. This is
no longer accepted in the standard but may
exist in legacy code.
With the suboption set to noimplicitint, all
types must be fully specified.
With the suboption set to implicitint, a
function declaration at namespace scope or in
a member list will implicitly be declared to
return int.
newexcp | nonewexcp
This suboption determines whether or not the
C++ new operator throws an exception. If the
-qlanglvl=newexcp option is specified, the
standard exception std::bad_alloc is thrown
when the requested memory allocation fails.
This option does not apply to the nothrow
versions of the new operator.
The standard implementation of the new
operators fully support exceptions. For
compatibility with previous versions of
VisualAge C++, these operators return 0 by
default.
offsetnonpod | nooffsetnonpod
This suboption controls whether the offsetof
macro can be applied to classes that are not
data-only.
By default, the compiler allows offsetof to be
used with non-POD classes.
olddigraph | noolddigraph
This option controls whether old-style
digraphs are allowed in your C++ source. It
applies only when -qdigraph is also set.
By default, the compiler supports only the
digraphs specified in the C++ standard.
oldfriend | nooldfriend
This option controls whether friend
declarations that name classes without
elaborated class names are treated as C++
errors.
By default, the compiler lets you declare a
friend class without elaborating the name of
the class with the keyword class.
oldmath | nooldmath
This suboption controls which versions of math
function declarations in <math.h> are included
when you specify math.h as an included or
primary source file.
By default, the new standard math functions
are used. Build with -qlanglvl=nooldmath for
strict compliance with the C++ standard. For
compatibility with modules that were built
with earlier versions of VisualAge C++ and
predecessor products, you may need to build
with -qlanglvl=oldmath.
oldtempacc | nooldtempacc
This suboption controls whether access to a
copy constructor to create a temporary object
is always checked, even if creation of the
temporary object is avoided.
By default, the compiler suppresses the access
checking.
oldtmplalign | nooldtmplalign
Controls whether alignment rules specified for
nested templates are ignored.
When the default, -qlanglvl=nooldtmplalign, is
in effect, these alignment rules are not
ignored.
Specify -qlanglvl=oldtmplalign for
compatibility with VisualAge C++ 4.0 and
predecessor products.
oldtmplspec | nooldtmplspec
This suboption controls whether template
specializations that do not conform to the C++
standard are allowed.
By default, the compiler allows these old
specializations (-qlanglvl=nooldtmplspec).
redefmac | noredefmac
Specifies whether a macro can be redefined
without a prior #undef or undefine()
statement.
trailenum | notrailenum
This suboption controls whether trailing
commas are allowed in enum declarations.
By default, the compiler allows one or more
trailing commas at the end of the enumerator
list.
typedefclass | notypedefclass
This suboption provides backwards
compatibility with previous versions of
VisualAge C++ and predecessor products.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in C++
sources.
Default: -qlanglvl=noucs
varargmacros | novarargmacros
This C99 feature allows the use of a variable
argument list in function-like macros in your
C++ applications.
zeroextarray | nozeroextarray
This suboption controls whether zero-extent
arrays are allowed as the last non-static data
member in a class definition.
By default, the compiler allows arrays with
zero elements.
The default depends on the invocation command used:
Command Default
_____________________________________________
xlC/xlc++ extended
xlc extc99
cc extended
c89 stdc89
c99 stdc99
-qlonglong | -qnolonglong
Allows IBM-style long long integers. This option
cannot be used with -qlanglvl=stdc99 or
-qlanglvl=extc99.
Default:
o -qlonglong when compiling with xlc, xlc++,
xlC or cc.
o -qnolonglong when compiling with c89 or c99.
-qmacpstr | -qnomacpstr
Converts Pascal string literals into null-
terminated strings where the first byte contains
the length of the string.
Default: -qnomacpstr
-qmbcs | -qnombcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qdbcs.
Default: -qnombcs
-qstaticinline | -qnostaticinline
(C++) Controls whether inline functions are treated
as static or extern. Specifying -qnostaticinline
means the inline functions are treated as having
extern linkage.
Default: -qnostaticinline
-qtabsize=<size>
Changes the length of tabs as perceived by the
compiler, where <size> is the number of character
spaces representing a tab in the source program.
Default: -qtabsize=8
-qtrigraph | -qnotrigraph
Allows trigraph key combinations to represent
characters not found on some keyboards.
Default: -qtrigraph
However, if -qlanglvl=classic is enabled or
implied, the trigraphs are not recognized by
default.
-U<name>
Undefines the identifier <name> defined by the
compiler or by the -D<name> option.
-qutf | -qnoutf
Enables recognition of UTF literal syntax.
Default:
o (C) -qnoutf
o (C++) -qutf for all language levels except
-qlanglvl=strict98
o (C++) -qnoutf when -qlanglvl=strict98 is in
effect
Template control options (C++ only)
-qtempinc[=<directory_path>] | -qnotempinc
(C++) Generates separate template include files for
template functions and class declarations, and
places these files in a directory which can be
optionally specified.
Default: -qnotempinc
-qtemplatedepth=<number>
(C++) Specifies the maximum number of recursively
instantiated template specializations that will be
processed by the compiler. <number> can be a value
between 1 and INT_MAX.
Default: -qtemplatedepth=300
-qtemplaterecompile | -qnotemplaterecompile
(C++) Helps manage dependencies between compilation
units that have been compiled using the
-qtemplateregistry compiler option.
Default: -qnotemplaterecompile
-qtemplateregistry[=<filename>] | -qnotemplateregistry
(C++) Maintains records of all templates as they
are encountered in the source and ensures that only
one instantiation of each template is made.
Default: -qnotemplateregistry
-qtempmax=<number>
(C++) Specifies the maximum number of template
include files to be generated by the -qtempinc
option for each header file.
Default: -qtempmax=1
-qtmplinst=<suboption>
(C++) Allows you to manage implicit template
instantiations. <suboption> is one of the
following:
none
Instantiates only the inline functions. If
this is specified, -qtempinc and
-qtemplateregistry are ignored.
noinline
Suppresses all implicit instantiations.
auto
Handles the implicit instantiations according
to the -qtempinc and -qtemplateregistry
options. If both options are off, then
implicit instantiations are always performed.
always
Always perform implicit instantiations. This
will ignore the -qtempinc and
-qtemplateregistry options.
Default: -qtmplinst=auto
-qtmplparse=<option>
(C++) Controls whether parsing and semantic
checking are applied to template definition
implementations or only to template instantiations.
The compiler has the option to produce warning or
error messages. The suboptions are:
no
Does not parse, to reduce the number of errors
issued in code written for previous versions
of the compiler.
warn
Parses template definitions and issues warning
messages for semantic errors.
error
Treats problems in template definitions as
errors, even if the template is not
instantiated.
Default: -qtmplparse=no
Floating-point and integer control options
-qbitfields={signed|unsigned}
Specifies whether bit fields will be signed or
unsigned.
Default: -qbitfields=unsigned
-qchars={signed|unsigned}
Specifies whether the data type char will be signed
or unsigned.
Default: -qchars=unsigned
-qenum=<suboption>
Specifies the amount of storage occupied by
enumerations, where <suboption> can be:
small
Specifies that enumerations occupy the
smallest amount of space (1, 2, 4, or 8 bytes)
that can accurately represent the range of
values in the enumeration. Signage is
unsigned, unless the range of values includes
negative values.
int
Specifies that enumerations occupy 4 bytes and
are represented by int.
intlong
Specifies that enumerations occupy 8 bytes of
storage if the range of values in the
enumeration exceeds the limit for int.
Otherwise, the enumerations occupy 4 bytes of
storage and are represented by int.
1
Specifies that enumerations occupy 1 byte.
Type is signed or unsigned char.
2
Specifies that enumerations occupy 2 bytes.
Type is signed or unsigned short.
4
Specifies that enumerations occupy 4 bytes.
Type is signed or unsigned int.
8
Specifies that enumerations occupy 8 bytes.
Type is signed or unsigned long long in 32-bit
mode, and signed or unsigned long in 64-bit
mode.
Default: -qenum=intlong
-qfloat=<suboptions_list>
Specifies various floating-point suboptions. This
provides different strategies for speeding up or
improving the accuracy of floating-point
calculations. <suboptions_list> is a colon-
separated list of one or more of the following:
dfpemulate | nodfpemulate
Specifies whether decimal floating-point
computations are implemented in hardware
instructions or emulated in software by calls
to library functions.
-qdfp must be enabled for either suboption to
have any effect. nodfpemulate is only valid on
a system that supports decimal floating-point
instructions; that is, on AIX 5.3 and higher,
and with -qarch=pwr6 in effect. dfpemulate is
required for all other -qarch values.
Default: dfpemulate
fenv | nofenv
Specifies whether the code depends on the
hardware environment and whether to suppress
optimizations that could cause unexpected
results due to this dependency.
When nofenv is in effect, the compiler assumes
that the program does not depend on the
hardware environment, and that aggressive
compiler optimizations that change the
sequence of floating-point operations are
allowed to be performed. When fenv is in
effect, such optimizations are suppressed.
Default: nofenv
fltint | nofltint
Speeds up floating-point-to-integer
conversions by using faster inline code that
does not check for overflows. -qfloat=nofltint
checks floating-point-to-integer conversions
for out-of-range values.
Default:
o nofltint at -O2 optimization.
o fltint when -qnostrict or -O3 or higher
optimization level is in effect.
fold | nofold
Specifies that constant floating-point
expressions are to be evaluated at compile
time rather than at run time.
Default: fold
hscmplx | nohscmplx
Speeds up operations involving complex
division and complex absolute value. This
suboption, which provides a subset of the
optimizations of the hsflt suboption, is
preferred for complex calculations.
Default: nohscmplx
hsflt | nohsflt
The hsflt option speeds up calculations by
truncating instead of rounding computed values
to single precision before storing and on
conversions from floating-point to integer.
The nohsflt suboption specifies that single-
precision expressions are rounded after
expression evaluation and that floating-
point-to-integer conversions are to be checked
for out-of-range values.
Default: nohsflt
hssngl | nohssngl
The hssngl option specifies that single-
precision expressions are rounded only when
the results are stored into float memory
locations. The nohssngl option specifies that
single-precision expressions are rounded after
expression evaluation. Using hssngl can
improve runtime performance and is safer than
using -qfloat=hsflt.
Default: nohssngl
maf | nomaf
Makes floating-point calculations faster and
more accurate by using floating-point
multiply-add instructions where appropriate.
Default: maf
nans | nonans
Generates extra instructions to detect
signalling NaN when converting from single-
precision to double-precision at run time. The
option nonans specifies that this conversion
need not be detected.
Default: nonans
relax | norelax
Relaxes the strict IEEE-conformance slightly
for greater speed, typically by removing some
trivial, floating-point arithmetic operations,
such as adds and subtracts involving a zero on
the right.
Default: norelax
rndsngl | norndsngl
Specifies that the result of each single-
precision (float) operation is to be rounded
to single precision. -qfloat=norndsngl
specifies that rounding to single-precision
happens only after full expressions have been
evaluated.
Default: rndsngl
rngchk | norngchk
Specifying norngchk instructs the compiler to
skip range checking, allowing for increased
performance where division and sqrt operations
are performed repeatedly within a loop.
When rngchk is specified, range checking is
performed for input arguments for software
divide and inlined sqrt operations.
When -qstrict is active, the setting of this
option is forced to -qfloat=rngchk. When
-qnostrict is active, the setting of this
option is -qfloat=norngchk unless the
-qfloat=rngchk option is explicitly set by the
user.
Default: rngchk
rrm | norrm
Prevents floating-point optimizations that are
incompatible with runtime rounding to plus and
minus infinity modes.
Default: norrm
rsqrt | norsqrt
Specifies whether a sequence of code that
involves division by the result of a square
root can be replaced by calculating the
reciprocal of the square root and multiplying.
Allowing this replacement produces code that
runs faster. -qfloat=rsqrt has no effect
unless -qignerrno is also specified.
Default:
o norsqrt at -O2 optimization.
o rsqrt when when -qnostrict or -O3 or
higher optimization level is in effect.
single | nosingle
Allows single-precision arithmetic
instructions to be generated for single-
precision floating-point values. All PowerPC
processors support single-precision
instructions; however, if you wish to preserve
the behavior of applications compiled for
earlier architectures, in which all floating-
point arithmetic was performed in double-
precision and then truncated to single-
precision, you can use
-qfloat=nosingle:norndsngl. This suboption
provides computation precision results
compatible with those provided by the
deprecated options
-qarch=com|pwr|pwrx|pwr2|p2sc|601|602|603.
Default: single
spnans | nospnans
Detects signalling NaN on conversion from
single-precision to double-precision.
Default: nospnans
-qldbl128 | -qnoldbl128
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qlongdouble.
Default: -qnoldbl128
-qlongdouble | -qnolongdouble
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qldbl128.
Default: -qnolongdouble
-qlonglit | -qnolonglit
Makes unsuffixed literals into the long type in
64-bit mode.
Default: -qnolonglit
-y<rounding_mode>
Specifies the compile-time rounding mode of
constant floating-point expressions.
For binary floating-point types, <rounding_mode> is
one of the following:
m = round toward minus infinity
n = round to the nearest representable number, ties
to even
p = round toward plus infinity
z = round toward zero
Default: -yn
For decimal floating-point types, <rounding_mode>
is one of the following:
di = round toward infinities (away from zero)
dm = round toward minus infinity
dn = round to the nearest representable number,
ties to even
dna = round to the nearest representable number,
ties away from zero
dnz = round to the nearest representable number,
ties toward zero
dp = round toward plus infinity
dz = round toward zero
Default: -ydn
Object code control options
-q32, -q64
Selects either 32-bit or 64-bit compilation mode.
Use the -q32 and -q64 options, along with the
-qarch and -qtune compiler options, to optimize the
output of the compiler to the architecture on which
that output will be used.
Default: -q32
-qalloca
(C) Substitutes inline code for calls to function
alloca, as if #pragma alloca directives were in the
source code.
-ma (C) Substitutes inline code for calls to function
alloca.
-qeh[={v5|v6}] | -qnoeh
(C++) Controls whether exception handling is
enabled in the module being compiled.
v5
Instructs the compiler to generate exception-
handling code that is compatible with
VisualAge C++ V5.0.
v6
Instructs the compiler to generate new
exception-handling code, compatible with
VisualAge C++ V6.0, that correctly handles
try-catch blocks nested within other catch
blocks.
Default: -qeh=v6
-qexpfile=<file_name>
Saves the exported symbols in the specified file
and is only used together with the -qmkshrobj
compiler option.
Refer to the -qmkshrobj option for more
information.
-qfuncsect[=[no]implicitstaticref] | -qnofuncsect
Places instructions for each function in a separate
object file control section or csect. -qfuncsect
can take the following suboption:
implicitstaticref | noimplicitstaticref
Specifies whether the compiler generates dummy
references to the static area. Specifying
-qfuncsect with no suboption implies
implicitstaticref. Specifying
noimplicitstaticref removes unnecessary
references to the static data area.
Default: -qnofuncsect
-qinlglue | -qnoinlglue
This option inlines glue code that optimizes
external function calls when compiling at -q64 and
-O2 and higher.
Default: -qnoinlglue
-qkeepinlines | -qnokeepinlines
(C++) Instructs the compiler to keep or discard
definitions for unreferenced extern inline
functions. Discarding these definitions can reduce
the size of the object files. The -qkeepinlines
setting keeps the definitions of unreferenced
extern inline functions.
Default: -qnokeepinlines
-qpic[={small|large}] | -qnopic
Generates position-independent code (pic). Specify
-qpic=small if the global offset table must be 64
Kb or smaller, or -qpic=large if it can be larger
than 64 Kb.
Default: -qpic=small
-qppline | -qnoppline
When used in conjunction with the -E or -P options,
enables or disables the generation of #line
directives in the preprocessed output.
Default:
o -qnoppline with -P
o -qppline with -E
-qpriority=<num>
(C++) Specifies the priority level for the
initialization of static objects, where <num> is
the initialization priority level assigned to the
static objects within a file, or the priority level
of a shared or non-shared file or library.
You can specify a priority level from -(2147483647
+ 1) (highest priority) to +2147483647 (lowest
priority).
Default: -qpriority=0
-qproto | -qnoproto
(C) Assumes that all functions are prototyped.
Asserts that procedure call points agree with their
declarations even if the procedure has not been
prototyped. This allows the caller to pass
floating-point arguments in floating-point
registers instead of general-purpose registers.
Default: -qnoproto
-r Produces a relocatable object. This permits the
output file to be produced even though it contains
unresolved symbols.
-qreserved_reg=<registers_list>
Indicates that the specified register(s) cannot be
used during the compilation, except as a stack
pointer, frame pointer or in a different fixed
role. <registers_list> is a colon-separated list of
registers.
-qro | -qnoro
Specifies the storage type for string literals and
puts string literals in read-only storage.
Default:
o -qnoro with cc and its derivatives.
o -qro otherwise.
-qroconst | -qnoroconst
Specifies the storage location for constant values.
Default:
o -qroconst with xlc, xlc++, xlC, c89 and c99
invocations commands.
o -qnoroconst with cc.
-qroptr | -qnoroptr
Specifies the storage location for constant
pointers.
Default: -qnoroptr
-qrtti=<option> | -qnortti
(C++) Generates runtime type identification (RTTI)
information for the typeid and dynamic_cast
operators. The suboptions are:
all
Generates the information needed for the RTTI
typeid and dynamic_cast operators.
type | typeinfo
Generates the information needed for the RTTI
typeid operator only.
dyna | dynamiccast
Generates the information needed for the RTTI
dynamic_cast operator only.
Default: -qnortti
-s Strips the symbol table, line number information,
and relocation information from the output file.
-qsaveopt | -qnosaveopt
Saves the command-line options used for compiling a
source file, the version and level of each compiler
component invoked during compilation, and other
information to the corresponding object file.
This option must be used with the -c option.
Default: -qnosaveopt
-qstatsym | -qnostatsym
Adds user-defined, non-external names that have a
persistent storage class (such as initialized and
uninitialized static variables) to the name list
(the symbol table of objects).
Default: -qnostatsym
-qtbtable=<suboption>
Generates a traceback table that contains
information about each function, including the type
of function as well as stack frame and register
information. The traceback table is placed in the
text segment at the end of its code. Suboptions
include:
none
No traceback table is generated.
small
A traceback table is generated with no name or
parameter information. This is the default
with optimization if -g is not specified.
full
A full traceback table is generated. This is
the default with -qnoopt or -g specified.
Default:
o -qtbtable=full when compiling non-optimized
(without -O) or for debugging (with -g).
o -qtbtable=small otherwise.
-qthreaded | -qnothreaded
Ensures that all optimizations will be thread-safe
for executing in a multi-threaded environment.
Default:
o -qthreaded when compiling invocation
commands ending in "_r" or "_r7".
o -qnothreaded otherwise.
-qtls[=<model>] | -qnotls
Specifies the thread-local storage model to be used
by the application, where <model> can be:
global-dynamic
This model is the most general, and can be
used for all thread-local variables.
local-dynamic
This model provides better performance than
the global-dynamic model, and can be used for
thread-local variables defined in
dynamically-loaded modules.
initial-exec
This model provides better performance than
the global-dynamic or local-dynamic models,
and can be used for thread-local variables
defined in dynamically-loaded modules,
provided that those modules are loaded at the
same time as the executable.
local-exec
This model provides the best performance of
all of the models, but can only be used when
all thread-local variables are defined and
referenced by the main executable.
Default:
o -qtls=unsupported
o -qtls=initial_exec if the -qnopic compiler
option is enabled.
o -qtls=global_dynamic if the -qpic compiler
option is enabled.
-qunique | -qnounique
(C++) Generates unique names for static
constructor/destructor file compilation units.
Default: -qnounique
-qweakexp | -qnoweakexp
When used with the -qmkshrobj or -G options,
includes or excludes global symbols marked as weak
from the export list generated when you create a
shared object.
Default: -qweakexp
-qweaksymbol | -qnoweaksymbol
Instructs the compiler to generate weak symbols.
Default: -qweaksymbol
-qxcall | -qnoxcall
Generates code to treat static functions within a
compilation unit as if they were external
functions.
Default: -qnoxcall
Error checking and debugging options
-# Traces the compilation and generates information on
the progress of the compilation without invoking
the preprocessor, compiler, or linkage editor.
-qcheck[=<suboptions_list>] | -qnocheck
Generates code that performs certain types of
runtime checking. If a violation is encountered, a
runtime exception is raised by sending a SIGTRAP
signal to the process. <suboptions_list> is a
colon-separated list of one or more of the
following:
all
Enables all suboptions.
bounds | nobounds
Performs runtime checking of addresses when
subscripting within an object of known size.
divzero | nodivzero
Performs runtime checking of integer division.
A trap will occur if an attempt is made to
divide by zero.
nullptr | nonullptr
Performs runtime checking of addresses
contained in pointer variables used to
reference storage.
Default: -qnocheck
-qdbxextra | -qnodbxextra
(C) Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for debugging. Use this option with the -g
option to produce additional debugging information
for use with a debugger.
Default: -qnodbxextra
-qdpcl | -qnodpcl
Generates symbols that can be used by tools based
on the Dynamic Probe Class Library (DPCL) to see
the structure of an executable file.
Default: -qnodpcl
-qextchk | -qnoextchk
Generates bind-time type-checking information and
checks for compile-time consistency.
Default: -qnoextchk
-qflttrap[=<suboptions_list>] | -qnoflttrap
Generates instructions to detect and trap runtime
floating-point exceptions. <suboptions_list> is a
colon-separated list of one or more of the
following suboptions:
enable
Enables trapping of the specified exceptions.
imprecise
Only checks for the specified exceptions on
subprogram entry and exit.
inexact
Detects floating-point inexact exceptions.
invalid
Detects floating-point invalid operation
exceptions.
nanq
Generates code to detect and trap NaNQ (Not a
Number Quiet) exceptions handled or generated
by floating-point operations.
overflow
Detects floating-point overflow.
underflow
Detects floating-point underflow.
zerodivide
Detects floating-point division by zero.
Default: -qnoflttrap
-qformat=<options_list> | -qnoformat
Warns of possible problems with string input and
output format specifications. Functions diagnosed
are printf, scanf, strftime, strfmon family
functions and functions marked with format
attributes. <options_list> is a comma-separated
list of one or more of the following suboptions:
all | noall
Turns on all format diagnostic messages.
exarg | noexarg
Warns if excess arguments appear in printf and
scanf style function calls.
nlt | nonlt
Warns if a format string is not a string
literal, unless the format function takes its
format arguments as a va_list.
sec | nosec
Warns of possible security problems in use of
format functions.
y2k | noy2k
Warns of strftime formats that produce a 2-
digit year.
zln | nozln
Warns of zero-length formats.
Default:
o -qnoformat, which is equivalent to
-qformat=noall.
o -qformat=all if -qformat is specified
without any suboptions.
-qfullpath | -qnofullpath
Records the full or absolute path names of source
and include files in object files compiled with
debugging information (when you use the -g option).
Default: -qnofullpath
-g Generates debug information for debugging tools.
-qdbg is the long form of -g.
-g implies the -Q! option.
-qhalt=<sev>
Stops the compiler after the first phase if the
severity level of errors detected equals or exceeds
the specified level, <sev>. The severity levels in
increasing order of severity are:
i = informational messages
w = warning messages
e = error messages (C only)
s = severe error messages
Default: -qhalt=s
-qhaltonmsg=<msgnum_list>
(C++) Stops the compiler after the compilation
phase where it encounters the specified message
number(s), where <msgnum_list> is a comma-separated
list of message numbers.
-qheapdebug | -qnoheapdebug
Enables debug versions of memory management
functions.
Default: -qnoheapdebug
-qinfo[=[<suboption>][<groups_list>]] | -qnoinfo
Produces or suppresses informational messages.
<groups_list> is a colon-separated list. If a
<groups_list> is specified along with a
<suboption>, a colon must separate them. The
suboptions are:
all
Enables all diagnostic messages for all
groups.
noall
Disables all diagnostic messages for all
groups.
private
Lists shared variables that are made private
to a parallel loop.
reduction
Lists variables that are recognized as
reduction variables inside a parallel loop.
<groups_list> turns on or off specific groups of
messages and is a colon-separated list of one or
more of the following:
c99 | noc99
(C) C code that might behave differently
between C89 and C99 language levels
cls | nocls
C++ classes
cmp | nocmp
Possible redundancies in unsigned comparisons
cnd | nocnd
Possible redundancies or problems in
conditional expressions
cns | nocns
Operations involving constants
cnv | nocnv
Conversions
dcl | nodcl
Consistency of declarations
eff | noeff
Statements and pragmas with no effect
enu | noenu
Consistency of enum variables
ext | noext
Unused external definitions
gen | nogen
General diagnostic messages
gnr | nognr
Generation of temporary variables
got | nogot
Use of goto statements
ini | noini
Possible problems with initialization
lan | nolan
Language level effects
obs | noobs
Obsolete features
ord | noord
Unspecified order of evaluation
par | nopar
Unused parameters
por | nopor
Non-portable language constructs
ppc | noppc
Possible problems with using the preprocessor
ppt | noppt
Trace of preprocessor actions
pro | nopro
Missing function prototypes
rea | norea
Code that cannot be reached
ret | noret
Consistency of return statements
trd | notrd
Possible truncation or loss of data or
precision
tru | notru
Variable names truncated by the compiler
trx | notrx
Rounding of hexadecimal floating-point
constants
uni | nouni
Uninitialized variables
upg | noupg
Upgrade issues from one release to the next
release
use | nouse
(C++) Unused auto and static variables
vft | novft
(C++) Generation of virtual function tables in
C++ programs
zea | nozea
Zero-extent arrays
Default:
(C) -qnoinfo
(C++) -qinfo=lan:trx
If -qinfo is specified without a suboption, the
default is -qinfo=all for C and -qinfo=all:noppt
for C++.
-qinitauto=<hex_value> | -qnoinitauto
Initializes each byte or word of storage for
automatic variables to the specified hexadecimal
value <hex_value>. This generates extra code and
should only be used for error determination.
Default: -qnoinitauto
-qkeepparm | -qnokeepparm
Ensures that function parameters are stored on the
stack even if the application is optimized. As a
result, parameters remain in the expected memory
location, providing access to the values of these
incoming parameters to tools such as debuggers.
Default: -qnokeepparm
-qlinedebug | -qnolinedebug
Generates only abbreviated line number and source
file name information for the debugger.
Default: -qnolinedebug
-qmaxerr=<num>[:<sev>] | -qnomaxerr
Instructs the compiler to halt compilation when the
specified number of errors of the specified
severity (by default, the value of -qhalt) or
greater is reached. <num> must be an integer. The
severity levels, <sev>, are:
i = informational
w = warning
e = error (C only)
s = severe error
Default: -qnomaxerr
-qoptdebug | -qnooptdebug
When used with high levels of optimization,
-qoptdebug produces source files containing
optimized pseudocode that can be read by a
debugger.
An output file with a .optdbg extension is created
for each input file compiled with -qoptdebug. You
can use the information contained in this file to
help you understand how your code actually behaves
under optimization.
Default: -qnooptdebug
-qsymtab={unref|static}
(C) Determines what types of information appear in
the symbol table. The suboptions are:
unref
Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for processing by the debugger.
static
Adds user-defined, non-external names that
have a persistent storage class (such as
initialized and uninitialized static
variables) to the name list.
Default:
The default is to not add static variables to
the symbol table.
-qsyntaxonly
(C) Performs syntax checking without generating an
object file.
Default:
By default, source files are compiled and
linked to generate an executable file.
-qwarn64 | -qnowarn64
Enables checking for possible data conversion
problems between 32-bit and 64-bit compiler modes.
Default: -qnowarn64
Listing and messages options
-qattr[=full] | -qnoattr
Produces a compiler listing that includes an
attribute listing for all identifiers. If -qattr is
specified, the listing contains only those
identifiers that are used. If -qattr=full is
specified, the listing contains all names. If
-qnoattr is specified, no listing is produced.
Default: -qnoattr
-qdump_class_hierarchy
(C++) For each class object, this option dumps a
representation of its hierarchy and virtual
function table layout to a file. The file name is
created by appending ".class" to the source file
name.
-qflag=<listing_severity>:<terminal_severity>
Defines the minimum severity level of diagnostic
messages to be written to the listing file and to
the user terminal. <listing_severity> is the
minimum level for the listing file, and
<terminal_severity> is the minimum level for the
terminal. The message severity levels are:
i = informational messages
w = warning messages
e = error, severe error and unrecoverable error
messages (C only)
s = severe error and unrecoverable error messages
(C)
s = severe error messages (C++)
Default: -qflag=i:i
-qlist[={offset|nooffset}] | -qnolist
Produces a compiler listing that includes an object
listing. You can use the object listing to help
understand the performance characteristics of the
generated code and to diagnose execution problems.
offset | nooffset
Changes the offset of the PDEF header from
00000 to the offset of the start of the text
area.
Specifying -qlist without the suboption is
equivalent to list=nooffset.
Default: -qnolist
-qlistopt | -qnolistopt
Produces a compiler listing that displays all the
options that were in effect when the compiler was
invoked.
Default: -qnolistopt
-qphsinfo | -qnophsinfo
Reports the time taken in each compilation phase.
Phase information is sent to standard output. The
output takes the form <number1>/<number2> for each
phase where <number1> represents the CPU time used
by the compiler and <number2> represents the total
of the compiler time and the time that the CPU
spends handling system calls.
Default: -qnophsinfo
-qprint | -qnoprint
Enables or suppresses listings. Specifying
-qnoprint overrides all listing-producing options,
regardless of where they are specified, to suppress
listings.
Default: -qprint
-qreport | -qnoreport
Instructs the compiler to produce transformation
reports that show how program loops are optimized.
The transformation reports are included as part of
the compiler listing. This option requires -qhot or
-qsmp in order to have effect.
When used with -qipa=clonearch, -qreport produces
transformation reports on the procedures that are
cloned for the architectures specified by the
option.
Default: -qnoreport
-qshowinc[=<types_list>] | -qnoshowinc
Used with -qsource to selectively show user header
files (includes using " ") or system header files
(includes using < >) in the program source listing.
<types_list> is a colon-separated list of one or
more of the following types:
usr | nousr
Specifies whether to show user include files.
sys | nosys
Specifies whether to show system include
files.
all
Shows both user and system include files.
Default: -qnoshowinc
-qsource | -qnosource
Produces a compiler listing that includes source
code.
Default: -qnosource
-qsrcmsg | -qnosrcmsg
(C) Adds the corresponding source code lines to the
diagnostic messages in the stderr file.
Default: -qnosrcmsg
-qsuppress=<msg_id> | -qnosuppress=[<msg_id>]
Prevents the specified compiler or driver
informational or warning messages from being
displayed or added to the listings, where <msg_id>
is a colon-separated list of message numbers to
suppress or display.
NOTE: In (C++), -qnosuppress requires that you
supply message number(s), and in (C), -qnosuppress
does not allow you to supply any.
Default: -qnosuppress
-v Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a comma-separated list.
-V Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a space-separated list.
-qversion[=verbose]
Displays the official compiler product name and the
compiler version found on the system.
verbose
Additionally displays information about the
version, release, and level of each compiler
component installed.
-w Suppresses informational, language-level and
warning messages.
Specifying this option is equivalent to specifying
-qflag=e:e in C or -qflag=s:s in C++.
-qxref[=full] | -qnoxref
Specifies whether to produce a compiler listing
that includes a cross-reference listing of all
identifiers. Specifying -qxref will report only
identifiers that are used, -qxref=full reports all
identifiers in the program, and -qnoxref does not
report any identifiers in the program. The
-qnoprint option overrides this option.
Default: -qnoxref
Optimization and tuning options
-qaggrcopy={overlap|nooverlap}
Enables destructive copy operations for structures
and unions.
overlap | nooverlap
Enables or disables optimizations for
structure and union assignments. nooverlap
assumes that the source and destination for
structure and union assignments do not
overlap, allowing the compiler to generate
faster code. overlap inhibits these
optimizations.
Default: -qaggrcopy=nooverlap
-qalias=<suboptions_list>
Specifies the aliasing assertions to be applied to
your compilation unit. <suboptions_list> is a
colon-separated list of the following options:
addrtaken | noaddrtaken
Variables are disjoint from pointers unless
their address is taken.
allptrs | noallptrs
Pointers are never aliased if allptrs is
specified, but may be aliased if noallptrs is
specified. -qalias=allptrs implies
-qalias=typeptr.
ansi | noansi
If ansi is specified, type-based aliasing is
used during optimization, which restricts the
lvalues that can be safely used to access a
data object. This option has no effect unless
you also specify the -O option.
Specifying -qalias=noansi turns off type-based
aliasing completely.
global | noglobal
When global is in effect, type-based aliasing
rules are enabled during IPA link-time
optimization across compilation units. Both
-qipa and -qalias=ansi must be enabled for
-qalias=global to have an effect.
Specifying noglobal disables type-based
aliasing rules across compilation units.
restrict | norestrict
When restrict is in effect, optimizations for
pointers qualified with the restrict keyword
are enabled. Specifying norestrict disables
optimizations for restrict-qualified pointers.
-qalias=restrict is independent from other
-qalias suboptions.
typeptr | notypeptr
Pointers to different types are never aliased
if typeptr is specified, but may be aliased if
notypeptr is specified.
Default:
(C++)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
(C)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
for all invocation commands except cc.
-qalias=noaddrtaken:noallptrs:noansi:global:restrict:notypeptr
for the cc invocation command.
-qarch=<suboption>
Specifies the general processor architecture for
which the code (instructions) should be generated.
In general, the -qarch option allows you to target
a specific architecture for the compilation. For
any given -qarch setting, the compiler defaults to
a specific, matching -qtune setting, which can
provide additional performance improvements. The
suboptions are:
auto
Automatically detects the specific
architecture of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
403
Produces object code containing instructions
that will run on the PowerPC 403 hardware
platform.
604
Produces an object that contains instructions
that run on PowerPC 604 systems.
pwr3
Produces an object that contains instructions
that run on the POWER3 hardware platforms.
pwr4
Produces an object that contains instructions
that run on the POWER4 hardware platforms.
pwr5
Produces an object that contains instructions
that run on the POWER5 hardware platforms.
pwr5x
Produces an object that contains instructions
that run on the POWER5+ hardware platforms.
pwr6
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 architected mode. If you
would like support for decimal floating-point
instructions, be sure to specify this
suboption during compilation.
pwr6e
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 raw mode.
ppc
Produces an object that contains instructions
that run on any of the 32-bit PowerPC hardware
platforms. Using -q64 with ppc upgrades the
architecture to ppc64.
ppc64
Produces object code that will run on any 64-
bit PowerPC hardware platform. When compiled
in 32-bit mode, the resulting object code may
include instructions that are not recognized
or behave differently when run on 32-bit
PowerPC platforms.
ppcgr
In 32-bit mode, produces object code
containing optional graphics instructions for
PowerPC hardware platforms.
In 64-bit mode, produces object code
containing optional graphics instructions that
will run on 64-bit PowerPC platforms, but not
on 32-bit-only platforms. Using -q64 with
ppcgr upgrades the architecture to ppc64gr.
ppc64gr
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics instructions.
ppc64grsq
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics and square root
instructions.
ppc64v
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional vector instructions, such as a
PowerPC 970.
ppc970
Generates instructions specific to PowerPC 970
processors.
rs64a
Produces an object that contains instructions
that run on an RS64I hardware platform.
rs64b
Produces an object that contains instructions
that run on an RS64II hardware platform.
rs64c
Produces an object that contains instructions
that run on an RS64III hardware platform.
Default: -qarch=ppc
-qcache=<suboptions_list>
Describes the cache configuration for a specific
target execution machine, where <suboptions_list>
is a colon-separated list of one or more of the
following suboptions:
assoc=<number>
Specifies the set associativity of the cache,
where <number> is one of the following:
0 Direct-mapped cache
1 Fully associative cache
(number > 1) n-way set associative cache
auto
Automatically detects the specific cache
configuration of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
cost=<cycles>
Specifies the performance penalty, in CPU
cycles, resulting from a cache miss.
level=<level>
Specifies which level of cache is affected,
where level is one of the following::
1 Basic cache
2 Level-2 cache
3 Table Lookaside Buffer (TLB)
If a machine has more than one level of cache,
use a separate -qcache option.
line=<bytes>
Specifies the line size of the cache.
size=<Kbytes>
Specifies the total size of the cache.
type=<cache_type>
The settings apply to the specified type of
cache, where <cache_type> is one of the
following:
C or c = Combined data and instruction
cache
D or d = Data cache
I or i = Instruction cache
Default:
The -qtune setting determines the optimal
default -qcache settings for most typical
compilations. -O4, -O5, or -qipa must be
specified with the -qcache option.
-qcompact | -qnocompact
Reduces code size where possible, at the expense of
execution speed. Code size is reduced by inhibiting
optimizations that replicate or expand code inline.
This option takes effect only if -O2 or higher is
also used.
Default: -qnocompact
-qdataimported[=<variable_names>]
Specifies variables that the compiler can assume
are imported. <variable_names> is a colon-separated
list of variables. Specifying -qdataimported
without <variable_names> instructs the compiler to
assume that all variables are imported. This is
equivalent to specifying -qnotocdata.
(C++) Variable names must be specified using their
mangled names.
-qdatalocal[=<variable_names>]
Specifies variables that the compiler can assume
are local. <variable_names> is a colon-separated
list of variables. Specifying -qdatalocal with no
variables instructs the compiler to assume that all
variables are local. This is equivalent to
specifying -qtocdata.
(C++) Variable names must be specified using their
mangled names.
-qtocdata | -qnotocdata
Marks all data as local.
Default: -qnotocdata (marks all data as imported)
-qdirectstorage | -qnodirectstorage
Informs the compiler that write-through-enabled or
cache-inhibited storage may be referenced.
Default: -qnodirectstorage
-qenablevmx | -qnoenablevmx
Enables the generation of vector instructions for
processors that support them. These instructions
can offer higher performance when used with
algorithmic-intensive tasks such as multimedia
applications.
For -qenablevmx to have effect, the architecture
specified by the -qarch option must support vector
instructions.
If -qnoenablevmx is in effect, -qaltivec,
-qvecnvol, and -qhot=simd cannot be used.
Default: -qnoenablevmx
-qfdpr | -qnofdpr
Collects information about programs for use with
the IBM Feedback Directed Program Restructuring
(FDPR) performance-tuning utility.
Default: -qnofdpr
-qhot[=<suboption>] | -qnohot
Specifies whether or not to perform high-order
transformations during optimization. The suboptions
are:
arraypad[=<number>] | noarraypad
When <number> is specified, the compiler will
pad every array in the code. The pad amount
must be a positive integer value. Otherwise,
the compiler will pad any arrays where it
infers that there may be a benefit.
level={0|1}
Specifies the level of high-order
transformation to perform during compilation.
0
The compiler performs a subset of the
high-order transformations. Some of these
include early distribution, loop
interchange, and loop tiling, as
examples. Optimization level -O3 implies
-qhot=level=0.
1
At level=1, full high-order
transformation is performed.
-qhot=level=1 is equivalent to -qhot and
the compiler options that imply -qhot
also imply -qhot=level=1, unless
-qhot=level=0 is explicitly specified.
simd | nosimd
Converts certain operations in a loop that
apply to successive elements of an array into
a vector instruction. This call calculates
several results at one time, which is faster
than calculating each result sequentially. If
you specify -qhot=nosimd, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with vector
instructions. To enable -qhot=simd, you must
specify an architecture that supports vector
instructions.
vector | novector
When specified with -qnostrict and -qignerrno,
or an optimization level of -O3 or higher
(otherwise -qhot=vector has no effect), the
compiler converts certain operations in a loop
that apply to successive elements of an array
into a call to a routine in the Mathematical
Acceleration Subsystem (MASS) library, part of
the libxlopt.a library.
If you specify -qhot=novector, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with calls
to vector library routines.
Specifying -qhot without suboptions implies
-qhot=nosimd, -qhot=noarraypad, -qhot=vector and
-qhot=level=1. The -qhot option is also implied by
-qsmp, -O4, and -O5.
Default: -qnohot
-qignerrno | -qnoignerrno
Allows the compiler to perform optimizations that
assume errno is not modified by system calls.
Default: -qnoignerrno
-qipa[=<suboptions_list>] | -qnoipa
Turns on or customizes a class of optimizations
known as interprocedural analysis (IPA).
<suboptions_list> is a colon-separated list of the
following suboptions:
clonearch=<arch_name> | noclonearch
Specifies the architectures for which multiple
versions of the same instruction set are
produced, where <arch_name> is a comma-
separated list of architecture names. Use this
suboption if you require optimal performance
on multiple differing machines running the
same copy of your application.
cloneproc=<function_name> |
nocloneproc=<function_name>
Specifies the name of the functions to clone
for the architectures specified by the
clonearch suboption, where <function_name> is
a comma-separated list of function names.
exits=<procedures>
Specifies names of functions which represent
program exits. <procedures> is a comma-
separated list of procedures.
infrequentlabel=<procedures>
Specifies a comma-separated list of user-
defined labels that are likely to be called
infrequently during a program run.
inline[=<suboption>]
Specifying 'inline' with no suboption asserts
that all appropriate procedures will be
inlined. <suboption> can be one of the
following:
auto|noauto
Enables or disables automatic function
inlining by the high-level optimizer.
When -qipa=inline=auto is in effect, the
compiler considers all functions that are
under the maximum size limit (see below)
for inlining. When -qipa=inline=noauto is
in effect, only procedures listed in the
<procedures> suboption are considered for
inlining.
<procedures>
Specifies a comma-separated list of
procedures to attempt to inline.
limit=<num>
Specifies a limit on the size of a
calling function after inlining. This
only takes effect when inline=auto is on.
If you do not specify a value for <num>,
<num> is 8192 by default.
threshold=<num>
Specifies the upper size limit on
procedures to inline. This only takes
effect when inline=auto is on. If you do
not specify a value for <num>, <num> is
1024 by default.
Default: auto
noinline[=<procedures>]
Specifies a comma-separated list of procedures
which are not to be inlined. Specifying
noinline without <procedures>, asserts that no
procedures are to be inlined.
isolated=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and do not
directly refer to any global variable.
level=<level>
Determines the amount of IPA analysis and
optimization performed, where <level> can be
equal to:
0
Performs only minimal interprocedural
analysis and optimization.
1
Turns on inlining, limited alias
analysis, and limited call-site
tailoring.
2
Full interprocedural data flow and alias
analysis.
Default: 1
list[={<file_name>|short|long}]
Specifies an output listing file name during
the link phase. The default name is "a.lst".
Specifying 'long' or 'short' can be used to
request more or less information in the
listing file to determine which listing
sections will be included.
Default: short
lowfreq=<procedures>
Specifies a comma-separated list of procedures
that are likely to be called infrequently
during the course of a typical program run.
malloc16 | nomalloc16
Informs the compiler that the dynamic memory
allocation routines will return 16-byte
aligned memory addresses. The compiler can
then optimize the code based on that
assertion.
Default: -qipa=malloc16
missing={unknown|safe|isolated|pure}
Specifies the default assumption for
procedures not compiled with -qipa.
unknown
Greatly restricts the amount of
interprocedural optimization for calls to
unknown functions.
safe
Functions which do not indirectly call a
visible (not missing) function either
through direct call or function pointer.
isolated
Functions which do not directly reference
global variables accessible to visible
functions.
pure
Functions which are safe and isolated and
which do not indirectly alter storage
accessible to functions.
Default: missing=unknown
object | noobject
Specifies whether to include standard object
code in the object files. Specifying
'noobject' can substantially reduce overall
compile time by not generating object code
during the first IPA phase.
partition={small|medium|large}
Specifies the size of program sections that
are analyzed together. Larger partitions may
produce better analysis but require more
storage.
Default: partition=medium
pure=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that are
"isolated", "safe", and do not modify any data
objects that are visible to the caller.
safe=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that do not call
any other part of the program.
threads[=<suboption>] | nothreads
Runs portions of the IPA optimization process
during pass 2 in parallel threads, which can
speed up the linking process on multi-
processor systems. <suboption> can be one of
the following:
auto | noauto
When auto is in effect, the compiler
selects a number of threads heuristically
based on machine load. When noauto is in
effect, the compiler spawns one thread
per machine processor.
<number>
Instructs the compiler to use a specific
number of threads. <number> can be any
integer value in the range of 1 to 32767.
However, <number> is effectively limited
to the number of processors available on
your system.
Specifying threads with no suboptions implies
threads=auto.
Default: -qipa=threads
unknown=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and that may
update global variables and dummy arguments
and call other parts of the program compiled
with -qipa.
<file_name>
Specifies the name of a file that contains
suboption information in a special format.
Regular expressions are supported when specifying
procedure names for these suboptions:
cloneproc, nocloneproc, exits, inline, noinline,
isolated, lowfreq, pure, safe, unknown.
(C++) In C++ programs, procedure names must be
given in mangled form.
Default:
-qnoipa
-qipa=inline=auto:level=1:missing=unknown:partition=medium:threads=auto
when -O4 is in effect.
-qipa=inline=auto:level=2:missing=unknown:partition=medium:threads=auto
when -O5 is in effect.
-qipa=inline=auto:level=0:missing=unknown:partition=medium:threads=auto
when -qpdf1 or -qpdf2 is in effect.
-qisolated_call=<procedures>
Informs the compiler that specific functions do not
have or rely on side effects, other than those
implied by their parameters. <procedures> is a
colon-separated list of function names.
-qlargepage | -qnolargepage
Indicates that a program, designed to execute in a
large page memory environment, can take advantage
of large 16 MB pages provided on POWER4 and later
systems.
Default: -qnolargepage
-qlibansi | -qnolibansi
Assumes that all functions with the name of an ANSI
C defined library function are, in fact, the
library functions.
Default: -qnolibansi
-qmaxmem=<size>
Limits the amount of memory used by certain
memory-intensive optimizations to <size> kilobytes.
When <size> is -1, the optimizer will use as much
memory as needed.
Default:
o -qmaxmem=8192 when -O2 level optimization is
set.
o -qmaxmem=-1 when -O3 level or greater
optimization is set.
-qminimaltoc | -qnominimaltoc
Avoids Table of Contents (TOC) overflow conditions
by placing TOC entries into a separate data section
for each object file. By default, the compiler will
allocate at least one TOC entry for each unique
non-automatic variable reference in your program.
Default: -qnominimaltoc
-O[<level>]
Optimizes code at a choice of levels during
compilation. This is equivalent to
-qoptimize[=<level>]. <level> can be:
0
Performs only quick local optimizations such
as constant folding and elimination of local
common subexpressions.
2
Performs optimizations that the compiler
developers considered the best combination for
compilation speed and runtime performance. The
optimizations may change from product release
to release.
3
Performs some memory and compile-time
intensive optimizations in addition to those
executed with -O2. The -O3 specific
optimizations have the potential to alter the
semantics of a program. The compiler guards
against these optimizations at -O2 and the
option -qstrict is provided at -O3 to turn off
these aggressive optimizations. Specifying -O3
implies -qhot=level=0.
4
This option is the same as -O3, but also:
o sets the -qarch and -qtune options to the
architecture of the compiling machine.
o sets the -qcache option most appropriate
to the characteristics of the compiling
machine.
5
Equivalent to -O4 -qipa=level=2.
Specifying -O with no <level> is equivalent to
specifying -O2.
Default: -O0
-qoptimize[=<level>] | -qnooptimize
The long form of the -O option. -qoptimize=<level>
is equivalent to -O<level>. See the -O option.
Default: -qnooptimize
-p, -pg, -qprofile={-p|-pg}
Sets up the object files produced by the compiler
for profiling.
-pg is like -p, but it produces more extensive
statistics.
-qpdf1[=pdfname=<file_path] | -qnopdf1
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf1 produces an object that is instrumented to
collect runtime execution information. This is
phase 1 of the profile-directed feedback
optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf1
-qpdf2[=pdfname=<file_path>] | -qnopdf2
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf2 tunes application performance using the data
generated by running a program compiled with
-qpdf1. This is phase 2 of the profile-directed
feedback optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf2
-qprefetch | -qnoprefetch
Enables generation of prefetching instructions such
as dcbt and dcbz in compiled code.
Default: -qprefetch
-qprocimported[=<procedures>] | -qnoprocimported
Specifies functions that the compiler can assume
are imported. Imported functions are dynamically
bound with a shared portion of a library. Code
generated for calls to functions marked as imported
may be larger, but is faster than the default code
sequence generated for functions marked as unknown.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qproclocal[=<procedures>] | -qnoproclocal
Specifies functions that the compiler can assume
are local. Local functions are statically bound
with the functions that call them; smaller, faster
code is generated for calls to such functions.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qprocunknown[=<procedures>] | -qnoprocunknown
Specifies functions that the compiler can assume
are unknown. Unknown functions are resolved to
either statically or dynamically bound objects
during linking. <procedures> is a colon-separated
list of function identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-Q[<suboption>]
(C++) Instructs the compiler to try to inline
functions. Inlining is performed if possible but,
depending on which optimizations are performed,
some functions might not be inlined.
(C) Specifies which specific functions the compiler
should attempt to inline. You must specify at least
an optimization level of -O2 for inlining to take
effect with -Q. To turn on inline expansion for
calls to procedures in different scopes, you must
also use the -qipa=inline.
(C++) In the C++ language, this option can take the
form:
-Q
Compiler inlines all functions that it can.
-Q!
Compiler does not inline any functions.
(C) In the C language, this option can take the
form:
-Q
Attempts to inline all appropriate functions
with 20 executable source statements or fewer,
subject to the setting of any of the
suboptions to the -Q option. If -Q is
specified last, all functions are inlined.
-Q!
Does not inline any functions. If -Q! is
specified last, no functions are inlined.
-Q-<names>
Does not inline functions listed in <names>,
where <names> is a colon-separated list. All
other appropriate functions are inlined. The
option implies -Q.
-Q+<names>
Attempts to inline the functions listed in
<names>, where <names> is a colon-separated
list. All other appropriate functions are
inlined.
-Q=<threshold>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <threshold> for
the function to be inlined.
Default: -Q!
-qinline[<suboption>] | -qnoinline
Specifies whether to attempt to inline functions
instead of generating calls to a function.
(C++) In C++, you cannot specify any suboptions.
-qinline specifies that all appropriate functions
should be inlined, and -qnoinline specifies that no
functions should be inlined.
(C) In C, this option can take the following forms:
-qinline
The compiler attempts to inline all
appropriate functions with 20 executable
source statements or fewer, subject to any
other settings of the suboptions to the
-qinline option.
-qinline+<procedures>
Attempts to inline the functions listed in
<procedures> and any other appropriate
functions, where <procedures> is a colon-
separated list.
-qinline-<procedures>
Specifies that functions listed in
<procedures> do not get inlined, where
<procedures> is a colon-separated list.
-qnoinline
Does not inline any functions.
-qinline=threshold=<num>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <num> for the
function to be inlined. <num> must be a
positive integer.
Default:
The default is to treat inline specifications
as a hint to the compiler, and the result
depends on other options that you select. If
you specify the -g option (to generate debug
information), inlining may be affected.
-qshowpdf | -qnoshowpdf
Used with -qpdf1 and a minimum optimization level
of -O2 to add additional call and block count
profiling information to an executable.
Default: -qnoshowpdf
-qsmallstack | -qnosmallstack
Reduces the size of the stack frame. This option is
only valid when used together with IPA (-qipa, -O4,
-O5 compiler options).
Default: -qnosmallstack
-qsmp[=<suboptions_list>] | -qnosmp
Enables parallelization of program code.
<suboptions_list> is a colon-separated list of one
or more of the following suboptions:
auto | noauto
Enables automatic parallelization and
optimization. If noauto is specified,
automatic parallelization of program code is
disabled; only program code explicitly
parallelized with OpenMP directives is
optimized.
Default: auto
nested_par | nonested_par
If nested_par is specified, prescriptive
nested parallel constructs are parallelized by
the compiler.
Default: nonested_par
omp | noomp
Enables strict OpenMP compliance. Only OpenMP
parallelization pragmas are recognized.
Default: noomp
opt | noopt
Enables automatic parallelization but disables
optimization of parallelized program code. If
noopt is specified, optimization of
parallelized program code is disabled.
Default: opt
rec_locks | norec_locks
Specifies whether to use recursive locks.
Default: norec_locks
schedule=<type>
Specifies what kinds of scheduling algorithms
and chunking are used for loops to which no
other scheduling algorithm has been explicitly
assigned in the source code. <type> can be:
o affinity[=<num>]
o dynamic[=<num>]
o guided[=<num>]
o runtime
o static[=<num>],
where <num> is the number of loop iterations.
Default: schedule=runtime
stackcheck | nostackcheck
Causes the compiler to check for stack
overflow by slave threads at run time, and
issue a warning if the remaining stack size is
less than the number of bytes specified by the
stackcheck option of the XLSMPOPTS environment
variable. This suboption is intended for
debugging purposes, and only takes effect when
XLSMPOPTS=stackcheck is also set.
Default: nostackcheck
threshold[=<num>]
When -qsmp=auto is in effect, controls the
amount of automatic loop parallelization that
occurs. The value of <num> represents the
lower limit allowed for parallelization of a
loop, based on the level of "work" present in
a loop.
Default:
<num> must be a positive integer of 0 or
greater. If you specify threshold with no
suboption, the program uses a default value
of 100.
Specifying -qsmp without suboptions is equivalent
to
-qsmp=auto:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100
or
-qsmp=opt:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100.
Default: -qnosmp
-qspeculateabsolutes | -qnospeculateabsolutes
Works with the -qtocmerge -bl:file for non-IPA
links and with the -bl:file for IPA links to
disable speculation at absolute addresses.
The bl:file is necessary for the compiler to know
which addresses are absolutes.
Default: -qspeculateabsolutes
-qstrict | -qnostrict
Turns off aggressive optimizations which have the
potential to alter the semantics of your program.
-qstrict sets -qfloat=nofltint:norsqrt. -qnostrict
sets -qfloat=rsqrt. This option is only valid with
-O2 or higher optimization levels.
Default:
o -qnostrict at -O3 or higher.
o -qstrict otherwise.
-qstrict_induction | -qnostrict_induction
Turns off loop induction variable optimizations
that have the potential to alter the semantics of
your program.
Default:
o -qnostrict_induction at -O2 or higher.
o -qstrict_induction otherwise.
-qtocmerge | -qnotocmerge
Enables TOC merging to reduce TOC pointer loads and
improves the scheduling of external loads. Reads
from the file specified in -bImportfile linker
option and merges the address information to access
ranges of external addresses using a single table
of contents entry.
Default: -qnotocmerge
-qtune=<suboption>
Specifies the architecture system for which the
executable program is optimized.
<suboption> must be one of the following:
403
Generates object code optimized for all the
PowerPC 403 processors.
604
Generates object code optimized for all the
PowerPC 604 processors.
auto
Generates object code optimized for the
hardware platform on which the program is
compiled.
balanced
Optimizations are tuned across a selected
range of recent hardware.
ppc970
Generates instructions specific to PowerPC 970
hardware platforms.
pwr3
Generates object code optimized for the POWER3
hardware platforms.
pwr4
Generates object code optimized for the POWER4
hardware platforms.
pwr5
Generates object code optimized for the POWER5
hardware platforms.
pwr6
Generates object code optimized for the POWER6
hardware platforms.
rs64a
Generates object code optimized for the RS64I
processor.
rs64b
Generates object code optimized for the RS64II
processor.
rs64c
Generates object code optimized for the
RS64III processor.
Default:
-qtune=balanced when the default -qarch
setting is in effect. Otherwise, the default
depends on the effective -qarch setting.
-qunroll[=<suboption>] | -qnounroll
Unrolls inner loops in the program. This can help
improve program performance. The suboptions are:
auto
Instructs the compiler to perform basic loop
unrolling.
yes
Instructs the compiler to search for more
opportunities for loop unrolling than that
performed with auto. In general, this
suboption is more likely to increase compile
time or program size than auto processing, but
it may also improve your application's
performance.
no
Instructs the compiler to not unroll loops.
Default: -qunroll=auto
If -qunroll is specified with no suboptions, the
compiler assumes -qunroll=yes. -qnounroll is
equivalent to -qunroll=no.
-qunwind | -qnounwind
Informs the compiler that the stack can be unwound
while a routine in the compilation is active.
Specifying -qnounwind can improve the optimization
of non-volatile register saves and restores.
Default: -qunwind
Linking options
-b{dynamic|shared|static}
Controls how shared objects are processed by the
linkage editor. The suboptions are:
dynamic, shared
Causes the linker to process subsequent shared
objects in dynamic mode. In dynamic mode,
shared objects are not statically included in
the output file. Instead, the shared objects
are listed in the loader section of the output
file.
-bdynamic and -bshared are synonymous.
static
Causes the linker to process subsequent shared
objects in static mode. In static mode, shared
objects are statically linked in the output
file.
Default: -bshared
-bmaxdata:<bytes>
Specifies the maximum amount of space to reserve
for the program data segment for programs where the
size of these regions is a constraint. Combined
data space is slightly less than 256MB, or lower,
depending on the limits for the user ID.
Default: -bmaxdata:0
-brtl Controls runtime linking for the output file.
-qcrt | -qnocrt
Instructs the linker to use the standard system
startup files at link time.
Default: -qcrt
-e <name>
Sets the entry name for a shared executable and is
only used together with -qmkshrobj.
-f<file_name>
Names a file to store a list of object files for
the compiler to pass to the linker. The <file_name>
file should contain only the names of object files.
There should be one object file per line.
-L<dir>
Searches the path directory for library files
specified by the -l<key> option.
Default:
The default is to search only the standard
directories.
-l<key>
Searches the file lib<key>.so and then lib<key>.a
for dynamic linking, or only lib<key>.a for static
linking.
Default:
The default is to search only some of the
compiler runtime libraries.
-qlib | -qnolib
Specifies whether the compiler should use the
standard system libraries at link time. -qnolib is
similar to the gcc option nostdlib; the driver will
not pass the standard system startup files or
libraries when linking.
Default: -qlib
-qtwolink | -qnotwolink
(C++) Links twice in order to minimize the number
of static constructors included from libraries and
object files.
Default: -qnotwolink
-Z<prefix>
This linker option specifies a prefix for the
library search path. This is useful when developing
a new version of a library.
Portability and migration options
-qalign=<suboption>
Specifies what aggregate alignment rules the
compiler uses for file compilation, where the
alignment suboptions are:
bit_packed
The compiler uses the bit_packed alignment
rules.
full
The compiler uses the RISC System/6000
alignment rules. This is the same as power.
mac68k
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the twobyte
suboption.
natural
The compiler maps structure members to their
natural boundaries.
packed
The compiler uses the packed alignment rules.
power
The compiler uses the RISC System/6000
alignment rules.
twobyte
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the mac68k
suboption.
Default: -qalign=full
-qalignrulefor=power=[no]typedefrespectsrule
(C++) When used with -qalign=power, determines
whether a 4-byte alignment ceiling is applied to
non-first members of structures that are of type
typedef to array of element type that exceeds the
alignment ceiling.
typedefrespectsrule | notypedefrespectsrule
When typedefrespectsrule is in effect, the
member follows the normal alignment rules for
-qalign=power. This suboption provides
compatibility with code compiled with
-qalign=power with XL C++ V6.0 and earlier.
When notypedefrespectsrule is in effect, a
member that exceeds the alignment ceiling of 4
bytes is aligned on 4-byte boundaries. This
suboption provides compatibility with code
compiled with -qalign=power with XL C++ V7.0
and V8.0.
Default: -qalignrulefor=power=typedefrespectsrule
-qgenproto[=parmnames] | -qnogenproto
(C) Generates ANSI prototypes from K&R function
definitions and displays them on standard output.
Specifying -qgenproto without '=parmnames' will
cause prototypes to be generated without parameter
names.
Default: -qnogenproto
-qnamemangling=<scheme>
(C++) Chooses the name mangling scheme for external
symbol names generated from C++ source code. The
<scheme> can be:
ansi
Fully supports the most recent language
features of Standard C++.
v9
Compatible with XL C++ V9.0.
v8
Compatible with XL C++ V8.0.
v7
Compatible with XL C++ V7.0.
v6
Compatible with VisualAge C++ V6.0.
v5
The scheme for VisualAge C++ V5.0.
v4
The scheme for VisualAge C++ V4.0.
v3
The scheme for VisualAge C++ releases before
V4.0.
compat
Same as v3.
Default: -qnamemangling=ansi
-qobjmodel={classic|ibm}
(C++) Specifies the object model.
classic
This object model is compatible with version
3.6 of the IBM C and C++ compilers.
ibm
Uses the object model introduced with version
5.0 of VisualAge C++ for AIX. Objects compiled
with this object model will use less memory
and have better performance for deep
inheritance with virtual bases.
Default: -qobjmodel=classic
-qoldpassbyvalue | -qnooldpassbyvalue
(C++) Specifies how classes containing const or
reference members are passed in function arguments.
All classes in the compilation unit are affected by
this option. When -qoldpassbyvalue is specified,
the compiler mimics the IBM C/C++ compilers v3.6
compiler in that when a class containing a const or
reference member is passed as a function argument,
it is not passed by value. All such classes in the
compilation unit are affected.
Default: -qnooldpassbyvalue
-qupconv | -qnoupconv
(C) Preserves the unsigned specification when
performing integral promotions.
Default:
o -qupconv when -qlanglvl={extended|classic}.
o -qnoupconv otherwise.
-qvecnvol | -qnovecnvol
Specifies whether to use volatile or non-volatile
vector registers. Volatile vector registers are
registers whose value is not preserved across
function calls or in the context of save, jump or
switch system library functions. If -qnoenablevmx
is enabled, this option is ignored.
Default: -qnovecnvol
Compiler customization options
-qasm_as=<asm_path> [<flags_list>]
Specifies the path and flags used to invoke the
assembler in order to handle assembler code in an
asm statement. <asm_path> is the full path to the
assembler to be used, and <flags_list> is a series
of one or more flags (and their arguments),
separated by spaces. Single quotes (or double
quotes) are required around the string of arguments
if any spaces exist.
-B[<prefix>]
Determines substitute path names for programs used
during compilation, such as the compiler,
assembler, linkage editor, and preprocessor, where
<prefix> can be any program name recognized by the
-t compiler option. The optional <prefix> defines
part of a path name to the new programs. The -t
parameter, <program>, specifies the program to
which the <prefix> is to be appended. When
specifying <prefix>, there must be a slash (/)
after the folder name.
-qc_stdinc=<paths_list>
(C) Changes the standard search location for the XL
C headers. <paths_list> is a colon-separated list
of paths to search.
-qcpp_stdinc=<paths_list>
(C++) Specifies the standard search directories for
the XL C++ headers, where <paths_list> is a colon-
separated list of paths.
-F[<config_file>][:<stanza>]
Names an alternative configuration file (.cfg) for
the compiler. <config_file> is the name of a
compiler configuration file. <stanza> is the name
of the command used to invoke the compiler. This
directs the compiler to use the entries under
<stanza> in the <config_file> to set up the
compiler environment. At least one of the arguments
must be supplied.
-qpath=<program>:<path>
Constructs alternate program names for compiler
components. The program and directory path
specified are used in place of the regular program.
<program> can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-qspill=<size>
Specifies the size of the register allocation spill
area in bytes.
Default: -qspill=512
-t<programs_list>
Applies the prefix from the -B option to the
specified programs in <programs_list>.
<programs_list> is a chain (i.e: -tbcI) of one or
more of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-W<program>,<options_list>
Gives the specified option(s) to the compiler
program, <program>. <options_list> is a comma-
separated list of one or more options. <program>
can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = c++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = linkage helper (C++ only)
p = Preprocessor
SEE ALSO
gxlc(1), gxlc++(1), c++filt(1), CreateExportList(1),
linkxlC(1), makeC++SharedLib(1), vacndi(1), vacppndi(1),
showpdf(1), mergepdf(1), resetpdf(1), cleanpdf(1).
For more information, refer to the following Web sites:
http://www.ibm.com/software/awdtools/xlcpp/library/
http://www.ibm.com/software/awdtools/xlcpp/support/
COPYRIGHT
Licensed Materials - Property of IBM.
IBM XL C/C++ Enterprise Edition for AIX, V9.0.
5724-S71
Copyright IBM Corp. 1991, 2007. All Rights Reserved.
AIX, IBM, POWER3, POWER4, POWER5, POWER5+, POWER6,
PowerPC, PowerPC 604 and SAA are trademarks or registered
trademarks of International Business Machines Corporation
in the United States, other countries, or both.
Windows is a trademarks of Microsoft Corporation in the
United States, other countries, or both.
US Government Users Restricted Rights - Use, duplication
or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
configure:23216: $? = 249
configure:23223: xlC -v >&5
exec: export(export,XL_CONFIG=/etc/vac.cfg.53:xlC,NULL)
exec: less(less,/usr/vacpp/exe/default_msg/vacpp.txt,NULL)
xlc(1) IBM (2007) xlc(1)
NAME
xlc, xlc++, xlC, cc, c89, c99, xlCcore, xlc++core and
related commands - invoke the IBM XL C/C++ compiler.
SYNTAX
<invocation-command> [ <option> | <inputfile> ] ...
DESCRIPTION
The invocation commands compile C and C++ source files.
The commands and their recommended uses are described
below.
Invocations Usage (supported standards)
_________________________________________________________
xlc, xlc_r, xlc_r4, Compile C source files.
xlc_r7, xlc128, xlc128_r, (ANSI C89, ISO C99,
xlc128_r4, xlc128_r7 IBM language extensions)
xlc++, xlc++_r, xlc++_r4, Compile C++ source files.
xlc++_r7, xlc++128,
xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC, xlC_r,
xlC_r4, xlC_r7, xlC128,
xlC128_r, xlC128_r4,
xlC128_r7
cc, cc_r, cc_r4, cc_r7, Compile legacy code that
cc128, cc128_r, cc128_r4, does not conform to Standard
cc128_r7 C. (pre-ANSI C)
c89, c89_r, c89_r4, Compile C source files with
c89_r7, c89_128, c89_128_r, strict conformance to the
c89_128_r4, c89_128_r7 C89 standard. (ANSI C89)
c99, c99_r, c99_r4, Compile C source files with
c99_r7, c99_128, c99_128_r, strict conformance to the
c99_128_r4, c99_128_r7 C99 standard. (ISO 99)
xlc++core, xlc++core_r, Compile C++ source files
xlc++core_r7, xlc++core128, but the compiler will
xlc++core128_r, link only to the core of
xlc++core128_r7, xlCcore, the runtime library.
xlCcore_r, xlCcore_r7,
xlC128core, xlC128core_r,
xlC128core_r7
gxlc Accepts GNU C options, maps
them to their equivalent XL
C option, then invokes xlc.
gxlc++, gxlC Accepts GNU C/C++ options, maps
them to their equivalent XL
C++ option,then invokes xlc++.
The main difference between these commands is that they use different
default options (which are set in the configuration file
/etc/vac.cfg.XX, where XX represents the AIX version).
See the Compiler Reference for more information on these invocation
commands.
All invocations with a suffix of _r allow for thread-safe
compilation. Use these commands to create threaded
applications or to link programs that use multi-threading.
These commands also process assembler source files and
object files. The compiler calls the link editor to
produce a single executable or shared library, unless you
specify the compiler options that prevent object files
from being linked.
The input file may have any of the following suffixes:
.C, .cpp, .cxx, C++ source file
.cc, .cp, .c++
.c C source file
.i Preprocessed C or C++ source file
.a Archive file
.o Object file for ld command
.s Assembler source file
.S Assembler source file that
needs preprocessing
.so Shared object file
OPTIONS
Compiler options are categorized by their functions and
may be used to set the compiler behavior. Options can be
flag options or keyword options.
Keyword options are specified in one of the following
ways:
-q<option>
-q<option>=<suboption>
-q<option>=<suboption>:<suboption>
Keyword options with no suboptions represent switches that
may be either on or off. -qx turns the switch on, and
-qnox turns the switch off. For example, -qsource tells
the compiler to produce a source listing and -qnosource
tells the compiler not to produce a source listing.
Output control options
-c Instructs the compiler to pass source files to the
compiler only. The compiled source files are not
sent to the linker. This option produces an object
file, file_name.o, for each valid source file.
-C | -C!
Preserves or removes comments in preprocessed
output.
When -C is used with the -E option, comments are
written to standard output; with the -P option,
comments are written to an output file.
When -C! is in effect, comments are removed.
-E Instructs the compiler to preprocess the source
files named in the compiler invocation and creates
an output preprocessed source file.
-G Tells the linkage editor to create a shared object
enabled for runtime linking.
-M Creates an output file that contains information to
be included in a "make" description file. This is
equivalent to specifying -qmakedep without a
suboption.
-qmakedep[=gcc]
Creates an output file that contains targets
suitable for inclusion in a description file for
the make command that describes the dependencies of
the main source file in the compilation.
Specifying 'gcc' changes the format of the
generated dependency file.
Specifying -qmakedep without 'gcc' is equivalent to
specifying -M.
-MF<path>
Specifies the target for the output generated by
the -qmakedep or -M options, where <path> can be a
full directory path or file name. Note that "-MF
<path>" (with a space before the argument) is also
acceptable. This option only has effect when
specified with -qmakedep or -M.
(C)-qmkshrobj, (C++)-qmkshrobj[=<priority>]
Creates a shared object from the generated object
files.
The optional number specifies the priority level
for initialization of all static objects in the
file. <priority> may be any number from -214782623
(highest priority-initialized first) to 214783647
(lowest priority-initialized last). If no priority
is specified, the default priority of 0 is used.
The priority is not used when linking shared
objects (using the xlc command) written in C.
Specifying -qmkshrobj implies -qpic.
See related options, -e <name> and -o <path>.
-o <path>
Specifies an output location for the object,
assembler, or executable files created by the
compiler. When the -o option is used during
compiler invocation, <path> can be the name of
either a file or a directory.
Default: -o a.out
-P Preprocesses the C or C++ source files named in the
compiler invocation and creates an output
preprocessed source file for each input source
file. The preprocessed output file has the same
name as the output file, with a .i suffix.
-S Generates an assembler language file (.s) for each
source file. The resulting .s files can be
assembled to produce object .o files or an
executable file (a.out).
Input control options
-+ (C++) Compiles any file, <file_name.nnn>, as a C++
language file, where <nnn> is any suffix other than
.a, .so, .o, .s, or .S. This option is equivalent
to the -qsourcetype=c++ option and should not be
used together with the -qsourcetype option.
-qcinc=<directory_path> | -qnocinc
(C++) Instructs the compiler to place an extern "C"
{ } wrapper around the contents of an include file,
where <directory_path> is the location of that
include file.
Default: -qnocinc
-I<directory_path>
Specifies an additional search path for include
file names that do not specify an absolute path.
Default:
The following directories are searched, in the
following order, after any paths that are
specified by the -I option:
1) The current directory.
2) The directory where the source file is
located.
3) /usr/include.
-qidirfirst | -qnoidirfirst
Specifies the search order for files included with
the #include "<file_name>" directive. Use
-qidirfirst with the -I option. If -qidirfirst is
specified, the directories specified by the
-I<directory_path> option are searched before the
directory in which the current file resides.
Default: -qnoidirfirst
-qinclude=<file_path>
Specifies additional header files that are included
before the first line of a source file in a
compilation unit and ahead of any headers which may
be specified by an #include statement on the first
line of the source file.
-qsourcetype=<type>
Determines whether to treat all recognized source
files as if they are of the source type specified
by <type> (regardless of file name suffix), or
whether to use the file name suffix to determine
the programming language.
Note that the option only affects files that are
specified on the command line following the option,
but not those that precede the option. The
-qsourcetype option should not be used together
with the -+ option. The suboptions are:
default
The compiler assumes that the programming
language of a source file will be implied by
its file name suffix.
c
The compiler compiles all source files
following this option as if they are C
language source files.
assembler
The compiler compiles all source files
following this option as if they are assembler
language source files.
assembler-with-cpp
The compiler compiles all source files
following this option as if they are assembler
language source files that need preprocessing.
Default: -qsourcetype=default
-qstdinc | -qnostdinc
Specifies whether the standard directories are
searched for files included by the #include
<file_name> and #include "file_name" directives.
The -qnostdinc option excludes the standard include
directories from the search path.
Default: -qstdinc
Language element control options
-qaltivec | -qnoaltivec
Instructs the compiler to support vector data types
and operators and is accepted when the architecture
specified by the -qarch option supports vector
instructions and -qenablevmx is enabled.
Default: -qnoaltivec
-qasm[=<sub>] | -qnoasm[=<sub>]
Controls the interpretation of, and subsequent
generation of code for, asm statements.
In (C), <sub> can only be 'gcc'.
In (C++), <sub> can be:
gcc
Interprets asm statements using GCC syntax.
stdcpp
Interprets asm statements using stdcpp syntax.
Default:
(C++) -qnoasm=stdcpp in compat366 or strict98
modes, and -qasm=gcc otherwise.
(C) -qasm=gcc
-qcpluscmt | -qnocpluscmt
(C) Permits the usage of "//" to introduce a
comment that lasts until the end of the current
source line, as in C++.
Default:
o -qcpluscmt when you invoke the compiler with
xlc, xlc_r, cc, or cc_r, or when -qlanglvl is
set to stdc99 or extc99.
o -qnocpluscmt otherwise.
-D<name>[=[<def>]]
Defines <name> as in the #define directive. <def>
is an optional definition or value assigned to
<name>. Specifying -D<name>= (with no <def>) is
equivalent to #define <name>; specifying
-D<name> is equivalent to #define <name> 1.
-qdbcs | -qnodbcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qmbcs.
Default: -qnodbcs
-qdfp | -qnodfp
Enables compiler support for decimal floating-point
types and literals.
Default: -qnodpf
-qdigraph | -qnodigraph
Allows usage of digraph key combinations or
keywords to represent characters not found on some
keyboards.
Default:
(C) -qdigraph when -qlanglvl is extc89,
extended, extc99 or stdc99, and -qnodigraph
otherwise.
(C++) -qdigraph
-qdollar | -qnodollar
Allows the '$' symbol to be used in the names of
identifiers. When -qdollar is in effect, the dollar
symbol '$' in an identifier is treated as a base
character. If the options -qnodollar and
-qlanglvl=ucs are both enabled, the dollar symbol
is treated as an extended character.
Default: -qnodollar
-qignprag=<option>
Instructs the compiler to ignore certain pragma
statements. The options are:
disjoint
Ignores all #pragma disjoint directives in the
source file.
isolated_call
Ignores all #pragma isolated_call directives
in the source file.
all
Ignores all #pragma isolated_call directives
and #pragma disjoint directives in the source
file.
omp
Ignores all OpenMP parallel processing
directives in the source file.
ibm
(C) Ignores all #pragma ibm snapshot
directives and all IBM SMP directives in the
source file.
-qkeyword=<keyword> | -qnokeyword=<keyword>
Controls whether the specified name is treated as a
keyword or as an identifier whenever it appears in
a program source.
By default, all the built-in keywords defined in
the C and C++ language standards are reserved as
keywords. You cannot add keywords to the language
with this option. However, you can use
-qnokeyword=<keyword> to disable built-in keywords,
and use -qkeyword=<keyword> to reinstate those
keywords.
(C) This option can also be used with the following
C keywords: restrict, typeof, asm and inline.
(C++) This option can be used with all C++ built-in
keywords.
-qlanglvl=<suboptions_list>
Selects the language level and language options for
the compilation. <suboptions_list> is a colon-
separated list of suboptions.
(C) For C language programs, <suboptions_list> is
{classic|extended|saa|saa12|stdc89|stdc99|extc89|extc99}:{ucs|noucs}.
classic
Allows the compilation of non-stdc89 programs,
and conforms closely to the K&R level
preprocessor.
extended
Provides compatibility with the RT compiler
and classic. This language level is based on
C89.
saa
Compilation conforms to the current SAA(R) C
CPI language definition. This is currently SAA
C Level 2.
saal2
Compilation conforms to the SAA C Level 2 CPI
language definition, with some exceptions.
stdc89
Compilation conforms to the ANSI C89 standard,
also known as ISO C90.
stdc99
Compilation conforms to the ISO C99 standard.
extc89
Compilation conforms to the ANSI C89 standard,
and accepts implementation-specific language
extensions.
extc99
Compilation conforms to the ISO C99 standard,
and accepts implementation-specific language
extensions.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in program
source code.
Default:
o -qlanglvl=ucs under language levels stdc99
and extc99.
o -qlanglvl=noucs for all other language
levels.
(C++) The suboptions for C++ language programs are:
compat366
Compilation conforms to some, but not all, IBM
C and C++ Compilers V3.6 features.
extended
Compilation is based on the strict98, with
some differences to accommodate extended
language features.
strict98
Compilation conforms to the ISO C++ standard
for C++ programs.
anonstruct | noanonstruct
This suboption controls whether anonymous
structs and anonymous classes are allowed in
your C++ source. By default, the compiler
allows anonymous structs.
anonunion | noanonunion
This suboption controls what members are
allowed in anonymous unions. When this
suboption is set to anonunion, anonymous
unions can have members of all types that
standard C++ allows in non-anonymous unions.
ansifor | noansifor
This suboption controls whether scope rules
defined in the C++ standard apply to names
declared in for-init statements. By default,
standard C++ rules are used.
ansisinit | noansisinit
This suboption can be used to select between
old (v3.6 or earlier) and current (v5.0 or
later) compiler object compatibility.
c99__func__ | noc99__func__
This suboption instructs the compiler to
recognize the C99 __func__ identifier.
The c99__func__ suboption is enabled by
default when -qlanglvl=extended is enabled. It
can be enabled for any language level by
specifying -qlanglvl=c99__func__, or disabled
by specifying -qlanglvl=noc99__func__.
c99complex | noc99complex
This suboption instructs the compiler to
recognize C99 complex data types and related
keywords. It is set by default for
-qlanglvl=extended.
c99complexheader | noc99complexheader
This suboption instructs the compiler to use
the C99 complex.h header file.
c99compoundliteral | noc99compoundliteral
This suboption instructs the compiler to
support the C99 compound literal feature. It
is set by default for -qlanglvl=extended.
c99hexfloat | noc99hexfloat
This suboption enables support for C99-style
hexadecimal floating constants in C++
applications. It is on by default for
-qlanglvl=extended.
c99vla | noc99vla
When c99vla is enabled, the compiler will
support the use of C99-type variable length
arrays in your C++ applications. It is set by
default for -qlanglvl=extended.
compatzea | nocompatzea
The -qlanglvl=compatzea option is a
compatibility option that lets you continue to
use a zero extent array with dimension of 1.
Default: -qlanglvl=nocompatzea
Specifying -qlanglvl=compatzea has effect only
if -qlanglvl=zeroextarray is also enabled.
dependentbaselookup | nodependentbaselookup
Provides the ability to specify compilation in
conformance with issue 213 of TC1 of the C++
standard.
Default: -qlanglvl=dependentbaselookup
gnu_assert | nognu_assert
Enables or disables support for the following
GNU C system identification assertions:
'#assert', '#unassert', '#cpu', '#machine',
'#system'.
gnu_complex | nognu_complex
This suboption instructs the compiler to
recognize GNU complex data types and related
keywords.
gnu_computedgoto | nognu_computedgoto
Enables support for computed gotos. This
suboption is enabled for -qlanglvl=extended.
gnu_explicitregvar | nognu_explicitregvar
(C) Allows you to control whether the compiler
accepts and ignores the specification of
explicit registers for variables.
gnu_externtemplate | nognu_externtemplate
This suboption enables or disables extern
template instantiations.
Default:
gnu_externtemplate is enabled by default
when compiling to the extended language
level.
gnu_include_next | nognu_include_next
Enables or disables support for the GNU C
#include_next preprocessor directive.
Default:
gnu_include_next is enabled by default for
-qlanglvl=extended.
gnu_labelvalue | nognu_labelvalue
Enables or disables support for labels as
values.
Default:
gnu_labelvalue is enabled by default for
-qlanglvl=extended.
gnu_locallabel | nognu_locallabel
Enables or disables support for locally-
declared labels.
gnu_membernamereuse | nognu_membernamereuse
Enables or disables reusing a template name in
a member list as a typedef.
gnu_suffixij | nognu_suffixij
Enables or disables support for GCC style
complex numbers. If gnu_suffixij is specified,
a complex number can be ended with suffix i/I
or j/J.
Default:
gnu_suffixij is enabled by default for
-qlanglvl=extended.
gnu_varargmacros | nognu_varargmacros
This option is similar to
-qlanglvl=varargmacros. For the list of the
main differences, refer to the Compiler
Reference.
Default:
gnu_varargmacros is set by default for
-qlanglvl=extended.
gnu_warning | nognu_warning
Enables or disables support for the GNU C
#warning preprocessor directive.
illptom | noillptom
This suboption controls what expressions can
be used to form pointers to members. C/C++ can
accept some forms that are in common use, but
do not conform to the C++ standard. The
compiler allows these forms by default.
implicitint | noimplicitint
This suboption controls whether the compiler
will accept missing or partially specified
types as implicitly specifying 'int'. This is
no longer accepted in the standard but may
exist in legacy code.
With the suboption set to noimplicitint, all
types must be fully specified.
With the suboption set to implicitint, a
function declaration at namespace scope or in
a member list will implicitly be declared to
return int.
newexcp | nonewexcp
This suboption determines whether or not the
C++ new operator throws an exception. If the
-qlanglvl=newexcp option is specified, the
standard exception std::bad_alloc is thrown
when the requested memory allocation fails.
This option does not apply to the nothrow
versions of the new operator.
The standard implementation of the new
operators fully support exceptions. For
compatibility with previous versions of
VisualAge C++, these operators return 0 by
default.
offsetnonpod | nooffsetnonpod
This suboption controls whether the offsetof
macro can be applied to classes that are not
data-only.
By default, the compiler allows offsetof to be
used with non-POD classes.
olddigraph | noolddigraph
This option controls whether old-style
digraphs are allowed in your C++ source. It
applies only when -qdigraph is also set.
By default, the compiler supports only the
digraphs specified in the C++ standard.
oldfriend | nooldfriend
This option controls whether friend
declarations that name classes without
elaborated class names are treated as C++
errors.
By default, the compiler lets you declare a
friend class without elaborating the name of
the class with the keyword class.
oldmath | nooldmath
This suboption controls which versions of math
function declarations in <math.h> are included
when you specify math.h as an included or
primary source file.
By default, the new standard math functions
are used. Build with -qlanglvl=nooldmath for
strict compliance with the C++ standard. For
compatibility with modules that were built
with earlier versions of VisualAge C++ and
predecessor products, you may need to build
with -qlanglvl=oldmath.
oldtempacc | nooldtempacc
This suboption controls whether access to a
copy constructor to create a temporary object
is always checked, even if creation of the
temporary object is avoided.
By default, the compiler suppresses the access
checking.
oldtmplalign | nooldtmplalign
Controls whether alignment rules specified for
nested templates are ignored.
When the default, -qlanglvl=nooldtmplalign, is
in effect, these alignment rules are not
ignored.
Specify -qlanglvl=oldtmplalign for
compatibility with VisualAge C++ 4.0 and
predecessor products.
oldtmplspec | nooldtmplspec
This suboption controls whether template
specializations that do not conform to the C++
standard are allowed.
By default, the compiler allows these old
specializations (-qlanglvl=nooldtmplspec).
redefmac | noredefmac
Specifies whether a macro can be redefined
without a prior #undef or undefine()
statement.
trailenum | notrailenum
This suboption controls whether trailing
commas are allowed in enum declarations.
By default, the compiler allows one or more
trailing commas at the end of the enumerator
list.
typedefclass | notypedefclass
This suboption provides backwards
compatibility with previous versions of
VisualAge C++ and predecessor products.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in C++
sources.
Default: -qlanglvl=noucs
varargmacros | novarargmacros
This C99 feature allows the use of a variable
argument list in function-like macros in your
C++ applications.
zeroextarray | nozeroextarray
This suboption controls whether zero-extent
arrays are allowed as the last non-static data
member in a class definition.
By default, the compiler allows arrays with
zero elements.
The default depends on the invocation command used:
Command Default
_____________________________________________
xlC/xlc++ extended
xlc extc99
cc extended
c89 stdc89
c99 stdc99
-qlonglong | -qnolonglong
Allows IBM-style long long integers. This option
cannot be used with -qlanglvl=stdc99 or
-qlanglvl=extc99.
Default:
o -qlonglong when compiling with xlc, xlc++,
xlC or cc.
o -qnolonglong when compiling with c89 or c99.
-qmacpstr | -qnomacpstr
Converts Pascal string literals into null-
terminated strings where the first byte contains
the length of the string.
Default: -qnomacpstr
-qmbcs | -qnombcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qdbcs.
Default: -qnombcs
-qstaticinline | -qnostaticinline
(C++) Controls whether inline functions are treated
as static or extern. Specifying -qnostaticinline
means the inline functions are treated as having
extern linkage.
Default: -qnostaticinline
-qtabsize=<size>
Changes the length of tabs as perceived by the
compiler, where <size> is the number of character
spaces representing a tab in the source program.
Default: -qtabsize=8
-qtrigraph | -qnotrigraph
Allows trigraph key combinations to represent
characters not found on some keyboards.
Default: -qtrigraph
However, if -qlanglvl=classic is enabled or
implied, the trigraphs are not recognized by
default.
-U<name>
Undefines the identifier <name> defined by the
compiler or by the -D<name> option.
-qutf | -qnoutf
Enables recognition of UTF literal syntax.
Default:
o (C) -qnoutf
o (C++) -qutf for all language levels except
-qlanglvl=strict98
o (C++) -qnoutf when -qlanglvl=strict98 is in
effect
Template control options (C++ only)
-qtempinc[=<directory_path>] | -qnotempinc
(C++) Generates separate template include files for
template functions and class declarations, and
places these files in a directory which can be
optionally specified.
Default: -qnotempinc
-qtemplatedepth=<number>
(C++) Specifies the maximum number of recursively
instantiated template specializations that will be
processed by the compiler. <number> can be a value
between 1 and INT_MAX.
Default: -qtemplatedepth=300
-qtemplaterecompile | -qnotemplaterecompile
(C++) Helps manage dependencies between compilation
units that have been compiled using the
-qtemplateregistry compiler option.
Default: -qnotemplaterecompile
-qtemplateregistry[=<filename>] | -qnotemplateregistry
(C++) Maintains records of all templates as they
are encountered in the source and ensures that only
one instantiation of each template is made.
Default: -qnotemplateregistry
-qtempmax=<number>
(C++) Specifies the maximum number of template
include files to be generated by the -qtempinc
option for each header file.
Default: -qtempmax=1
-qtmplinst=<suboption>
(C++) Allows you to manage implicit template
instantiations. <suboption> is one of the
following:
none
Instantiates only the inline functions. If
this is specified, -qtempinc and
-qtemplateregistry are ignored.
noinline
Suppresses all implicit instantiations.
auto
Handles the implicit instantiations according
to the -qtempinc and -qtemplateregistry
options. If both options are off, then
implicit instantiations are always performed.
always
Always perform implicit instantiations. This
will ignore the -qtempinc and
-qtemplateregistry options.
Default: -qtmplinst=auto
-qtmplparse=<option>
(C++) Controls whether parsing and semantic
checking are applied to template definition
implementations or only to template instantiations.
The compiler has the option to produce warning or
error messages. The suboptions are:
no
Does not parse, to reduce the number of errors
issued in code written for previous versions
of the compiler.
warn
Parses template definitions and issues warning
messages for semantic errors.
error
Treats problems in template definitions as
errors, even if the template is not
instantiated.
Default: -qtmplparse=no
Floating-point and integer control options
-qbitfields={signed|unsigned}
Specifies whether bit fields will be signed or
unsigned.
Default: -qbitfields=unsigned
-qchars={signed|unsigned}
Specifies whether the data type char will be signed
or unsigned.
Default: -qchars=unsigned
-qenum=<suboption>
Specifies the amount of storage occupied by
enumerations, where <suboption> can be:
small
Specifies that enumerations occupy the
smallest amount of space (1, 2, 4, or 8 bytes)
that can accurately represent the range of
values in the enumeration. Signage is
unsigned, unless the range of values includes
negative values.
int
Specifies that enumerations occupy 4 bytes and
are represented by int.
intlong
Specifies that enumerations occupy 8 bytes of
storage if the range of values in the
enumeration exceeds the limit for int.
Otherwise, the enumerations occupy 4 bytes of
storage and are represented by int.
1
Specifies that enumerations occupy 1 byte.
Type is signed or unsigned char.
2
Specifies that enumerations occupy 2 bytes.
Type is signed or unsigned short.
4
Specifies that enumerations occupy 4 bytes.
Type is signed or unsigned int.
8
Specifies that enumerations occupy 8 bytes.
Type is signed or unsigned long long in 32-bit
mode, and signed or unsigned long in 64-bit
mode.
Default: -qenum=intlong
-qfloat=<suboptions_list>
Specifies various floating-point suboptions. This
provides different strategies for speeding up or
improving the accuracy of floating-point
calculations. <suboptions_list> is a colon-
separated list of one or more of the following:
dfpemulate | nodfpemulate
Specifies whether decimal floating-point
computations are implemented in hardware
instructions or emulated in software by calls
to library functions.
-qdfp must be enabled for either suboption to
have any effect. nodfpemulate is only valid on
a system that supports decimal floating-point
instructions; that is, on AIX 5.3 and higher,
and with -qarch=pwr6 in effect. dfpemulate is
required for all other -qarch values.
Default: dfpemulate
fenv | nofenv
Specifies whether the code depends on the
hardware environment and whether to suppress
optimizations that could cause unexpected
results due to this dependency.
When nofenv is in effect, the compiler assumes
that the program does not depend on the
hardware environment, and that aggressive
compiler optimizations that change the
sequence of floating-point operations are
allowed to be performed. When fenv is in
effect, such optimizations are suppressed.
Default: nofenv
fltint | nofltint
Speeds up floating-point-to-integer
conversions by using faster inline code that
does not check for overflows. -qfloat=nofltint
checks floating-point-to-integer conversions
for out-of-range values.
Default:
o nofltint at -O2 optimization.
o fltint when -qnostrict or -O3 or higher
optimization level is in effect.
fold | nofold
Specifies that constant floating-point
expressions are to be evaluated at compile
time rather than at run time.
Default: fold
hscmplx | nohscmplx
Speeds up operations involving complex
division and complex absolute value. This
suboption, which provides a subset of the
optimizations of the hsflt suboption, is
preferred for complex calculations.
Default: nohscmplx
hsflt | nohsflt
The hsflt option speeds up calculations by
truncating instead of rounding computed values
to single precision before storing and on
conversions from floating-point to integer.
The nohsflt suboption specifies that single-
precision expressions are rounded after
expression evaluation and that floating-
point-to-integer conversions are to be checked
for out-of-range values.
Default: nohsflt
hssngl | nohssngl
The hssngl option specifies that single-
precision expressions are rounded only when
the results are stored into float memory
locations. The nohssngl option specifies that
single-precision expressions are rounded after
expression evaluation. Using hssngl can
improve runtime performance and is safer than
using -qfloat=hsflt.
Default: nohssngl
maf | nomaf
Makes floating-point calculations faster and
more accurate by using floating-point
multiply-add instructions where appropriate.
Default: maf
nans | nonans
Generates extra instructions to detect
signalling NaN when converting from single-
precision to double-precision at run time. The
option nonans specifies that this conversion
need not be detected.
Default: nonans
relax | norelax
Relaxes the strict IEEE-conformance slightly
for greater speed, typically by removing some
trivial, floating-point arithmetic operations,
such as adds and subtracts involving a zero on
the right.
Default: norelax
rndsngl | norndsngl
Specifies that the result of each single-
precision (float) operation is to be rounded
to single precision. -qfloat=norndsngl
specifies that rounding to single-precision
happens only after full expressions have been
evaluated.
Default: rndsngl
rngchk | norngchk
Specifying norngchk instructs the compiler to
skip range checking, allowing for increased
performance where division and sqrt operations
are performed repeatedly within a loop.
When rngchk is specified, range checking is
performed for input arguments for software
divide and inlined sqrt operations.
When -qstrict is active, the setting of this
option is forced to -qfloat=rngchk. When
-qnostrict is active, the setting of this
option is -qfloat=norngchk unless the
-qfloat=rngchk option is explicitly set by the
user.
Default: rngchk
rrm | norrm
Prevents floating-point optimizations that are
incompatible with runtime rounding to plus and
minus infinity modes.
Default: norrm
rsqrt | norsqrt
Specifies whether a sequence of code that
involves division by the result of a square
root can be replaced by calculating the
reciprocal of the square root and multiplying.
Allowing this replacement produces code that
runs faster. -qfloat=rsqrt has no effect
unless -qignerrno is also specified.
Default:
o norsqrt at -O2 optimization.
o rsqrt when when -qnostrict or -O3 or
higher optimization level is in effect.
single | nosingle
Allows single-precision arithmetic
instructions to be generated for single-
precision floating-point values. All PowerPC
processors support single-precision
instructions; however, if you wish to preserve
the behavior of applications compiled for
earlier architectures, in which all floating-
point arithmetic was performed in double-
precision and then truncated to single-
precision, you can use
-qfloat=nosingle:norndsngl. This suboption
provides computation precision results
compatible with those provided by the
deprecated options
-qarch=com|pwr|pwrx|pwr2|p2sc|601|602|603.
Default: single
spnans | nospnans
Detects signalling NaN on conversion from
single-precision to double-precision.
Default: nospnans
-qldbl128 | -qnoldbl128
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qlongdouble.
Default: -qnoldbl128
-qlongdouble | -qnolongdouble
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qldbl128.
Default: -qnolongdouble
-qlonglit | -qnolonglit
Makes unsuffixed literals into the long type in
64-bit mode.
Default: -qnolonglit
-y<rounding_mode>
Specifies the compile-time rounding mode of
constant floating-point expressions.
For binary floating-point types, <rounding_mode> is
one of the following:
m = round toward minus infinity
n = round to the nearest representable number, ties
to even
p = round toward plus infinity
z = round toward zero
Default: -yn
For decimal floating-point types, <rounding_mode>
is one of the following:
di = round toward infinities (away from zero)
dm = round toward minus infinity
dn = round to the nearest representable number,
ties to even
dna = round to the nearest representable number,
ties away from zero
dnz = round to the nearest representable number,
ties toward zero
dp = round toward plus infinity
dz = round toward zero
Default: -ydn
Object code control options
-q32, -q64
Selects either 32-bit or 64-bit compilation mode.
Use the -q32 and -q64 options, along with the
-qarch and -qtune compiler options, to optimize the
output of the compiler to the architecture on which
that output will be used.
Default: -q32
-qalloca
(C) Substitutes inline code for calls to function
alloca, as if #pragma alloca directives were in the
source code.
-ma (C) Substitutes inline code for calls to function
alloca.
-qeh[={v5|v6}] | -qnoeh
(C++) Controls whether exception handling is
enabled in the module being compiled.
v5
Instructs the compiler to generate exception-
handling code that is compatible with
VisualAge C++ V5.0.
v6
Instructs the compiler to generate new
exception-handling code, compatible with
VisualAge C++ V6.0, that correctly handles
try-catch blocks nested within other catch
blocks.
Default: -qeh=v6
-qexpfile=<file_name>
Saves the exported symbols in the specified file
and is only used together with the -qmkshrobj
compiler option.
Refer to the -qmkshrobj option for more
information.
-qfuncsect[=[no]implicitstaticref] | -qnofuncsect
Places instructions for each function in a separate
object file control section or csect. -qfuncsect
can take the following suboption:
implicitstaticref | noimplicitstaticref
Specifies whether the compiler generates dummy
references to the static area. Specifying
-qfuncsect with no suboption implies
implicitstaticref. Specifying
noimplicitstaticref removes unnecessary
references to the static data area.
Default: -qnofuncsect
-qinlglue | -qnoinlglue
This option inlines glue code that optimizes
external function calls when compiling at -q64 and
-O2 and higher.
Default: -qnoinlglue
-qkeepinlines | -qnokeepinlines
(C++) Instructs the compiler to keep or discard
definitions for unreferenced extern inline
functions. Discarding these definitions can reduce
the size of the object files. The -qkeepinlines
setting keeps the definitions of unreferenced
extern inline functions.
Default: -qnokeepinlines
-qpic[={small|large}] | -qnopic
Generates position-independent code (pic). Specify
-qpic=small if the global offset table must be 64
Kb or smaller, or -qpic=large if it can be larger
than 64 Kb.
Default: -qpic=small
-qppline | -qnoppline
When used in conjunction with the -E or -P options,
enables or disables the generation of #line
directives in the preprocessed output.
Default:
o -qnoppline with -P
o -qppline with -E
-qpriority=<num>
(C++) Specifies the priority level for the
initialization of static objects, where <num> is
the initialization priority level assigned to the
static objects within a file, or the priority level
of a shared or non-shared file or library.
You can specify a priority level from -(2147483647
+ 1) (highest priority) to +2147483647 (lowest
priority).
Default: -qpriority=0
-qproto | -qnoproto
(C) Assumes that all functions are prototyped.
Asserts that procedure call points agree with their
declarations even if the procedure has not been
prototyped. This allows the caller to pass
floating-point arguments in floating-point
registers instead of general-purpose registers.
Default: -qnoproto
-r Produces a relocatable object. This permits the
output file to be produced even though it contains
unresolved symbols.
-qreserved_reg=<registers_list>
Indicates that the specified register(s) cannot be
used during the compilation, except as a stack
pointer, frame pointer or in a different fixed
role. <registers_list> is a colon-separated list of
registers.
-qro | -qnoro
Specifies the storage type for string literals and
puts string literals in read-only storage.
Default:
o -qnoro with cc and its derivatives.
o -qro otherwise.
-qroconst | -qnoroconst
Specifies the storage location for constant values.
Default:
o -qroconst with xlc, xlc++, xlC, c89 and c99
invocations commands.
o -qnoroconst with cc.
-qroptr | -qnoroptr
Specifies the storage location for constant
pointers.
Default: -qnoroptr
-qrtti=<option> | -qnortti
(C++) Generates runtime type identification (RTTI)
information for the typeid and dynamic_cast
operators. The suboptions are:
all
Generates the information needed for the RTTI
typeid and dynamic_cast operators.
type | typeinfo
Generates the information needed for the RTTI
typeid operator only.
dyna | dynamiccast
Generates the information needed for the RTTI
dynamic_cast operator only.
Default: -qnortti
-s Strips the symbol table, line number information,
and relocation information from the output file.
-qsaveopt | -qnosaveopt
Saves the command-line options used for compiling a
source file, the version and level of each compiler
component invoked during compilation, and other
information to the corresponding object file.
This option must be used with the -c option.
Default: -qnosaveopt
-qstatsym | -qnostatsym
Adds user-defined, non-external names that have a
persistent storage class (such as initialized and
uninitialized static variables) to the name list
(the symbol table of objects).
Default: -qnostatsym
-qtbtable=<suboption>
Generates a traceback table that contains
information about each function, including the type
of function as well as stack frame and register
information. The traceback table is placed in the
text segment at the end of its code. Suboptions
include:
none
No traceback table is generated.
small
A traceback table is generated with no name or
parameter information. This is the default
with optimization if -g is not specified.
full
A full traceback table is generated. This is
the default with -qnoopt or -g specified.
Default:
o -qtbtable=full when compiling non-optimized
(without -O) or for debugging (with -g).
o -qtbtable=small otherwise.
-qthreaded | -qnothreaded
Ensures that all optimizations will be thread-safe
for executing in a multi-threaded environment.
Default:
o -qthreaded when compiling invocation
commands ending in "_r" or "_r7".
o -qnothreaded otherwise.
-qtls[=<model>] | -qnotls
Specifies the thread-local storage model to be used
by the application, where <model> can be:
global-dynamic
This model is the most general, and can be
used for all thread-local variables.
local-dynamic
This model provides better performance than
the global-dynamic model, and can be used for
thread-local variables defined in
dynamically-loaded modules.
initial-exec
This model provides better performance than
the global-dynamic or local-dynamic models,
and can be used for thread-local variables
defined in dynamically-loaded modules,
provided that those modules are loaded at the
same time as the executable.
local-exec
This model provides the best performance of
all of the models, but can only be used when
all thread-local variables are defined and
referenced by the main executable.
Default:
o -qtls=unsupported
o -qtls=initial_exec if the -qnopic compiler
option is enabled.
o -qtls=global_dynamic if the -qpic compiler
option is enabled.
-qunique | -qnounique
(C++) Generates unique names for static
constructor/destructor file compilation units.
Default: -qnounique
-qweakexp | -qnoweakexp
When used with the -qmkshrobj or -G options,
includes or excludes global symbols marked as weak
from the export list generated when you create a
shared object.
Default: -qweakexp
-qweaksymbol | -qnoweaksymbol
Instructs the compiler to generate weak symbols.
Default: -qweaksymbol
-qxcall | -qnoxcall
Generates code to treat static functions within a
compilation unit as if they were external
functions.
Default: -qnoxcall
Error checking and debugging options
-# Traces the compilation and generates information on
the progress of the compilation without invoking
the preprocessor, compiler, or linkage editor.
-qcheck[=<suboptions_list>] | -qnocheck
Generates code that performs certain types of
runtime checking. If a violation is encountered, a
runtime exception is raised by sending a SIGTRAP
signal to the process. <suboptions_list> is a
colon-separated list of one or more of the
following:
all
Enables all suboptions.
bounds | nobounds
Performs runtime checking of addresses when
subscripting within an object of known size.
divzero | nodivzero
Performs runtime checking of integer division.
A trap will occur if an attempt is made to
divide by zero.
nullptr | nonullptr
Performs runtime checking of addresses
contained in pointer variables used to
reference storage.
Default: -qnocheck
-qdbxextra | -qnodbxextra
(C) Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for debugging. Use this option with the -g
option to produce additional debugging information
for use with a debugger.
Default: -qnodbxextra
-qdpcl | -qnodpcl
Generates symbols that can be used by tools based
on the Dynamic Probe Class Library (DPCL) to see
the structure of an executable file.
Default: -qnodpcl
-qextchk | -qnoextchk
Generates bind-time type-checking information and
checks for compile-time consistency.
Default: -qnoextchk
-qflttrap[=<suboptions_list>] | -qnoflttrap
Generates instructions to detect and trap runtime
floating-point exceptions. <suboptions_list> is a
colon-separated list of one or more of the
following suboptions:
enable
Enables trapping of the specified exceptions.
imprecise
Only checks for the specified exceptions on
subprogram entry and exit.
inexact
Detects floating-point inexact exceptions.
invalid
Detects floating-point invalid operation
exceptions.
nanq
Generates code to detect and trap NaNQ (Not a
Number Quiet) exceptions handled or generated
by floating-point operations.
overflow
Detects floating-point overflow.
underflow
Detects floating-point underflow.
zerodivide
Detects floating-point division by zero.
Default: -qnoflttrap
-qformat=<options_list> | -qnoformat
Warns of possible problems with string input and
output format specifications. Functions diagnosed
are printf, scanf, strftime, strfmon family
functions and functions marked with format
attributes. <options_list> is a comma-separated
list of one or more of the following suboptions:
all | noall
Turns on all format diagnostic messages.
exarg | noexarg
Warns if excess arguments appear in printf and
scanf style function calls.
nlt | nonlt
Warns if a format string is not a string
literal, unless the format function takes its
format arguments as a va_list.
sec | nosec
Warns of possible security problems in use of
format functions.
y2k | noy2k
Warns of strftime formats that produce a 2-
digit year.
zln | nozln
Warns of zero-length formats.
Default:
o -qnoformat, which is equivalent to
-qformat=noall.
o -qformat=all if -qformat is specified
without any suboptions.
-qfullpath | -qnofullpath
Records the full or absolute path names of source
and include files in object files compiled with
debugging information (when you use the -g option).
Default: -qnofullpath
-g Generates debug information for debugging tools.
-qdbg is the long form of -g.
-g implies the -Q! option.
-qhalt=<sev>
Stops the compiler after the first phase if the
severity level of errors detected equals or exceeds
the specified level, <sev>. The severity levels in
increasing order of severity are:
i = informational messages
w = warning messages
e = error messages (C only)
s = severe error messages
Default: -qhalt=s
-qhaltonmsg=<msgnum_list>
(C++) Stops the compiler after the compilation
phase where it encounters the specified message
number(s), where <msgnum_list> is a comma-separated
list of message numbers.
-qheapdebug | -qnoheapdebug
Enables debug versions of memory management
functions.
Default: -qnoheapdebug
-qinfo[=[<suboption>][<groups_list>]] | -qnoinfo
Produces or suppresses informational messages.
<groups_list> is a colon-separated list. If a
<groups_list> is specified along with a
<suboption>, a colon must separate them. The
suboptions are:
all
Enables all diagnostic messages for all
groups.
noall
Disables all diagnostic messages for all
groups.
private
Lists shared variables that are made private
to a parallel loop.
reduction
Lists variables that are recognized as
reduction variables inside a parallel loop.
<groups_list> turns on or off specific groups of
messages and is a colon-separated list of one or
more of the following:
c99 | noc99
(C) C code that might behave differently
between C89 and C99 language levels
cls | nocls
C++ classes
cmp | nocmp
Possible redundancies in unsigned comparisons
cnd | nocnd
Possible redundancies or problems in
conditional expressions
cns | nocns
Operations involving constants
cnv | nocnv
Conversions
dcl | nodcl
Consistency of declarations
eff | noeff
Statements and pragmas with no effect
enu | noenu
Consistency of enum variables
ext | noext
Unused external definitions
gen | nogen
General diagnostic messages
gnr | nognr
Generation of temporary variables
got | nogot
Use of goto statements
ini | noini
Possible problems with initialization
lan | nolan
Language level effects
obs | noobs
Obsolete features
ord | noord
Unspecified order of evaluation
par | nopar
Unused parameters
por | nopor
Non-portable language constructs
ppc | noppc
Possible problems with using the preprocessor
ppt | noppt
Trace of preprocessor actions
pro | nopro
Missing function prototypes
rea | norea
Code that cannot be reached
ret | noret
Consistency of return statements
trd | notrd
Possible truncation or loss of data or
precision
tru | notru
Variable names truncated by the compiler
trx | notrx
Rounding of hexadecimal floating-point
constants
uni | nouni
Uninitialized variables
upg | noupg
Upgrade issues from one release to the next
release
use | nouse
(C++) Unused auto and static variables
vft | novft
(C++) Generation of virtual function tables in
C++ programs
zea | nozea
Zero-extent arrays
Default:
(C) -qnoinfo
(C++) -qinfo=lan:trx
If -qinfo is specified without a suboption, the
default is -qinfo=all for C and -qinfo=all:noppt
for C++.
-qinitauto=<hex_value> | -qnoinitauto
Initializes each byte or word of storage for
automatic variables to the specified hexadecimal
value <hex_value>. This generates extra code and
should only be used for error determination.
Default: -qnoinitauto
-qkeepparm | -qnokeepparm
Ensures that function parameters are stored on the
stack even if the application is optimized. As a
result, parameters remain in the expected memory
location, providing access to the values of these
incoming parameters to tools such as debuggers.
Default: -qnokeepparm
-qlinedebug | -qnolinedebug
Generates only abbreviated line number and source
file name information for the debugger.
Default: -qnolinedebug
-qmaxerr=<num>[:<sev>] | -qnomaxerr
Instructs the compiler to halt compilation when the
specified number of errors of the specified
severity (by default, the value of -qhalt) or
greater is reached. <num> must be an integer. The
severity levels, <sev>, are:
i = informational
w = warning
e = error (C only)
s = severe error
Default: -qnomaxerr
-qoptdebug | -qnooptdebug
When used with high levels of optimization,
-qoptdebug produces source files containing
optimized pseudocode that can be read by a
debugger.
An output file with a .optdbg extension is created
for each input file compiled with -qoptdebug. You
can use the information contained in this file to
help you understand how your code actually behaves
under optimization.
Default: -qnooptdebug
-qsymtab={unref|static}
(C) Determines what types of information appear in
the symbol table. The suboptions are:
unref
Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for processing by the debugger.
static
Adds user-defined, non-external names that
have a persistent storage class (such as
initialized and uninitialized static
variables) to the name list.
Default:
The default is to not add static variables to
the symbol table.
-qsyntaxonly
(C) Performs syntax checking without generating an
object file.
Default:
By default, source files are compiled and
linked to generate an executable file.
-qwarn64 | -qnowarn64
Enables checking for possible data conversion
problems between 32-bit and 64-bit compiler modes.
Default: -qnowarn64
Listing and messages options
-qattr[=full] | -qnoattr
Produces a compiler listing that includes an
attribute listing for all identifiers. If -qattr is
specified, the listing contains only those
identifiers that are used. If -qattr=full is
specified, the listing contains all names. If
-qnoattr is specified, no listing is produced.
Default: -qnoattr
-qdump_class_hierarchy
(C++) For each class object, this option dumps a
representation of its hierarchy and virtual
function table layout to a file. The file name is
created by appending ".class" to the source file
name.
-qflag=<listing_severity>:<terminal_severity>
Defines the minimum severity level of diagnostic
messages to be written to the listing file and to
the user terminal. <listing_severity> is the
minimum level for the listing file, and
<terminal_severity> is the minimum level for the
terminal. The message severity levels are:
i = informational messages
w = warning messages
e = error, severe error and unrecoverable error
messages (C only)
s = severe error and unrecoverable error messages
(C)
s = severe error messages (C++)
Default: -qflag=i:i
-qlist[={offset|nooffset}] | -qnolist
Produces a compiler listing that includes an object
listing. You can use the object listing to help
understand the performance characteristics of the
generated code and to diagnose execution problems.
offset | nooffset
Changes the offset of the PDEF header from
00000 to the offset of the start of the text
area.
Specifying -qlist without the suboption is
equivalent to list=nooffset.
Default: -qnolist
-qlistopt | -qnolistopt
Produces a compiler listing that displays all the
options that were in effect when the compiler was
invoked.
Default: -qnolistopt
-qphsinfo | -qnophsinfo
Reports the time taken in each compilation phase.
Phase information is sent to standard output. The
output takes the form <number1>/<number2> for each
phase where <number1> represents the CPU time used
by the compiler and <number2> represents the total
of the compiler time and the time that the CPU
spends handling system calls.
Default: -qnophsinfo
-qprint | -qnoprint
Enables or suppresses listings. Specifying
-qnoprint overrides all listing-producing options,
regardless of where they are specified, to suppress
listings.
Default: -qprint
-qreport | -qnoreport
Instructs the compiler to produce transformation
reports that show how program loops are optimized.
The transformation reports are included as part of
the compiler listing. This option requires -qhot or
-qsmp in order to have effect.
When used with -qipa=clonearch, -qreport produces
transformation reports on the procedures that are
cloned for the architectures specified by the
option.
Default: -qnoreport
-qshowinc[=<types_list>] | -qnoshowinc
Used with -qsource to selectively show user header
files (includes using " ") or system header files
(includes using < >) in the program source listing.
<types_list> is a colon-separated list of one or
more of the following types:
usr | nousr
Specifies whether to show user include files.
sys | nosys
Specifies whether to show system include
files.
all
Shows both user and system include files.
Default: -qnoshowinc
-qsource | -qnosource
Produces a compiler listing that includes source
code.
Default: -qnosource
-qsrcmsg | -qnosrcmsg
(C) Adds the corresponding source code lines to the
diagnostic messages in the stderr file.
Default: -qnosrcmsg
-qsuppress=<msg_id> | -qnosuppress=[<msg_id>]
Prevents the specified compiler or driver
informational or warning messages from being
displayed or added to the listings, where <msg_id>
is a colon-separated list of message numbers to
suppress or display.
NOTE: In (C++), -qnosuppress requires that you
supply message number(s), and in (C), -qnosuppress
does not allow you to supply any.
Default: -qnosuppress
-v Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a comma-separated list.
-V Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a space-separated list.
-qversion[=verbose]
Displays the official compiler product name and the
compiler version found on the system.
verbose
Additionally displays information about the
version, release, and level of each compiler
component installed.
-w Suppresses informational, language-level and
warning messages.
Specifying this option is equivalent to specifying
-qflag=e:e in C or -qflag=s:s in C++.
-qxref[=full] | -qnoxref
Specifies whether to produce a compiler listing
that includes a cross-reference listing of all
identifiers. Specifying -qxref will report only
identifiers that are used, -qxref=full reports all
identifiers in the program, and -qnoxref does not
report any identifiers in the program. The
-qnoprint option overrides this option.
Default: -qnoxref
Optimization and tuning options
-qaggrcopy={overlap|nooverlap}
Enables destructive copy operations for structures
and unions.
overlap | nooverlap
Enables or disables optimizations for
structure and union assignments. nooverlap
assumes that the source and destination for
structure and union assignments do not
overlap, allowing the compiler to generate
faster code. overlap inhibits these
optimizations.
Default: -qaggrcopy=nooverlap
-qalias=<suboptions_list>
Specifies the aliasing assertions to be applied to
your compilation unit. <suboptions_list> is a
colon-separated list of the following options:
addrtaken | noaddrtaken
Variables are disjoint from pointers unless
their address is taken.
allptrs | noallptrs
Pointers are never aliased if allptrs is
specified, but may be aliased if noallptrs is
specified. -qalias=allptrs implies
-qalias=typeptr.
ansi | noansi
If ansi is specified, type-based aliasing is
used during optimization, which restricts the
lvalues that can be safely used to access a
data object. This option has no effect unless
you also specify the -O option.
Specifying -qalias=noansi turns off type-based
aliasing completely.
global | noglobal
When global is in effect, type-based aliasing
rules are enabled during IPA link-time
optimization across compilation units. Both
-qipa and -qalias=ansi must be enabled for
-qalias=global to have an effect.
Specifying noglobal disables type-based
aliasing rules across compilation units.
restrict | norestrict
When restrict is in effect, optimizations for
pointers qualified with the restrict keyword
are enabled. Specifying norestrict disables
optimizations for restrict-qualified pointers.
-qalias=restrict is independent from other
-qalias suboptions.
typeptr | notypeptr
Pointers to different types are never aliased
if typeptr is specified, but may be aliased if
notypeptr is specified.
Default:
(C++)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
(C)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
for all invocation commands except cc.
-qalias=noaddrtaken:noallptrs:noansi:global:restrict:notypeptr
for the cc invocation command.
-qarch=<suboption>
Specifies the general processor architecture for
which the code (instructions) should be generated.
In general, the -qarch option allows you to target
a specific architecture for the compilation. For
any given -qarch setting, the compiler defaults to
a specific, matching -qtune setting, which can
provide additional performance improvements. The
suboptions are:
auto
Automatically detects the specific
architecture of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
403
Produces object code containing instructions
that will run on the PowerPC 403 hardware
platform.
604
Produces an object that contains instructions
that run on PowerPC 604 systems.
pwr3
Produces an object that contains instructions
that run on the POWER3 hardware platforms.
pwr4
Produces an object that contains instructions
that run on the POWER4 hardware platforms.
pwr5
Produces an object that contains instructions
that run on the POWER5 hardware platforms.
pwr5x
Produces an object that contains instructions
that run on the POWER5+ hardware platforms.
pwr6
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 architected mode. If you
would like support for decimal floating-point
instructions, be sure to specify this
suboption during compilation.
pwr6e
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 raw mode.
ppc
Produces an object that contains instructions
that run on any of the 32-bit PowerPC hardware
platforms. Using -q64 with ppc upgrades the
architecture to ppc64.
ppc64
Produces object code that will run on any 64-
bit PowerPC hardware platform. When compiled
in 32-bit mode, the resulting object code may
include instructions that are not recognized
or behave differently when run on 32-bit
PowerPC platforms.
ppcgr
In 32-bit mode, produces object code
containing optional graphics instructions for
PowerPC hardware platforms.
In 64-bit mode, produces object code
containing optional graphics instructions that
will run on 64-bit PowerPC platforms, but not
on 32-bit-only platforms. Using -q64 with
ppcgr upgrades the architecture to ppc64gr.
ppc64gr
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics instructions.
ppc64grsq
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics and square root
instructions.
ppc64v
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional vector instructions, such as a
PowerPC 970.
ppc970
Generates instructions specific to PowerPC 970
processors.
rs64a
Produces an object that contains instructions
that run on an RS64I hardware platform.
rs64b
Produces an object that contains instructions
that run on an RS64II hardware platform.
rs64c
Produces an object that contains instructions
that run on an RS64III hardware platform.
Default: -qarch=ppc
-qcache=<suboptions_list>
Describes the cache configuration for a specific
target execution machine, where <suboptions_list>
is a colon-separated list of one or more of the
following suboptions:
assoc=<number>
Specifies the set associativity of the cache,
where <number> is one of the following:
0 Direct-mapped cache
1 Fully associative cache
(number > 1) n-way set associative cache
auto
Automatically detects the specific cache
configuration of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
cost=<cycles>
Specifies the performance penalty, in CPU
cycles, resulting from a cache miss.
level=<level>
Specifies which level of cache is affected,
where level is one of the following::
1 Basic cache
2 Level-2 cache
3 Table Lookaside Buffer (TLB)
If a machine has more than one level of cache,
use a separate -qcache option.
line=<bytes>
Specifies the line size of the cache.
size=<Kbytes>
Specifies the total size of the cache.
type=<cache_type>
The settings apply to the specified type of
cache, where <cache_type> is one of the
following:
C or c = Combined data and instruction
cache
D or d = Data cache
I or i = Instruction cache
Default:
The -qtune setting determines the optimal
default -qcache settings for most typical
compilations. -O4, -O5, or -qipa must be
specified with the -qcache option.
-qcompact | -qnocompact
Reduces code size where possible, at the expense of
execution speed. Code size is reduced by inhibiting
optimizations that replicate or expand code inline.
This option takes effect only if -O2 or higher is
also used.
Default: -qnocompact
-qdataimported[=<variable_names>]
Specifies variables that the compiler can assume
are imported. <variable_names> is a colon-separated
list of variables. Specifying -qdataimported
without <variable_names> instructs the compiler to
assume that all variables are imported. This is
equivalent to specifying -qnotocdata.
(C++) Variable names must be specified using their
mangled names.
-qdatalocal[=<variable_names>]
Specifies variables that the compiler can assume
are local. <variable_names> is a colon-separated
list of variables. Specifying -qdatalocal with no
variables instructs the compiler to assume that all
variables are local. This is equivalent to
specifying -qtocdata.
(C++) Variable names must be specified using their
mangled names.
-qtocdata | -qnotocdata
Marks all data as local.
Default: -qnotocdata (marks all data as imported)
-qdirectstorage | -qnodirectstorage
Informs the compiler that write-through-enabled or
cache-inhibited storage may be referenced.
Default: -qnodirectstorage
-qenablevmx | -qnoenablevmx
Enables the generation of vector instructions for
processors that support them. These instructions
can offer higher performance when used with
algorithmic-intensive tasks such as multimedia
applications.
For -qenablevmx to have effect, the architecture
specified by the -qarch option must support vector
instructions.
If -qnoenablevmx is in effect, -qaltivec,
-qvecnvol, and -qhot=simd cannot be used.
Default: -qnoenablevmx
-qfdpr | -qnofdpr
Collects information about programs for use with
the IBM Feedback Directed Program Restructuring
(FDPR) performance-tuning utility.
Default: -qnofdpr
-qhot[=<suboption>] | -qnohot
Specifies whether or not to perform high-order
transformations during optimization. The suboptions
are:
arraypad[=<number>] | noarraypad
When <number> is specified, the compiler will
pad every array in the code. The pad amount
must be a positive integer value. Otherwise,
the compiler will pad any arrays where it
infers that there may be a benefit.
level={0|1}
Specifies the level of high-order
transformation to perform during compilation.
0
The compiler performs a subset of the
high-order transformations. Some of these
include early distribution, loop
interchange, and loop tiling, as
examples. Optimization level -O3 implies
-qhot=level=0.
1
At level=1, full high-order
transformation is performed.
-qhot=level=1 is equivalent to -qhot and
the compiler options that imply -qhot
also imply -qhot=level=1, unless
-qhot=level=0 is explicitly specified.
simd | nosimd
Converts certain operations in a loop that
apply to successive elements of an array into
a vector instruction. This call calculates
several results at one time, which is faster
than calculating each result sequentially. If
you specify -qhot=nosimd, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with vector
instructions. To enable -qhot=simd, you must
specify an architecture that supports vector
instructions.
vector | novector
When specified with -qnostrict and -qignerrno,
or an optimization level of -O3 or higher
(otherwise -qhot=vector has no effect), the
compiler converts certain operations in a loop
that apply to successive elements of an array
into a call to a routine in the Mathematical
Acceleration Subsystem (MASS) library, part of
the libxlopt.a library.
If you specify -qhot=novector, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with calls
to vector library routines.
Specifying -qhot without suboptions implies
-qhot=nosimd, -qhot=noarraypad, -qhot=vector and
-qhot=level=1. The -qhot option is also implied by
-qsmp, -O4, and -O5.
Default: -qnohot
-qignerrno | -qnoignerrno
Allows the compiler to perform optimizations that
assume errno is not modified by system calls.
Default: -qnoignerrno
-qipa[=<suboptions_list>] | -qnoipa
Turns on or customizes a class of optimizations
known as interprocedural analysis (IPA).
<suboptions_list> is a colon-separated list of the
following suboptions:
clonearch=<arch_name> | noclonearch
Specifies the architectures for which multiple
versions of the same instruction set are
produced, where <arch_name> is a comma-
separated list of architecture names. Use this
suboption if you require optimal performance
on multiple differing machines running the
same copy of your application.
cloneproc=<function_name> |
nocloneproc=<function_name>
Specifies the name of the functions to clone
for the architectures specified by the
clonearch suboption, where <function_name> is
a comma-separated list of function names.
exits=<procedures>
Specifies names of functions which represent
program exits. <procedures> is a comma-
separated list of procedures.
infrequentlabel=<procedures>
Specifies a comma-separated list of user-
defined labels that are likely to be called
infrequently during a program run.
inline[=<suboption>]
Specifying 'inline' with no suboption asserts
that all appropriate procedures will be
inlined. <suboption> can be one of the
following:
auto|noauto
Enables or disables automatic function
inlining by the high-level optimizer.
When -qipa=inline=auto is in effect, the
compiler considers all functions that are
under the maximum size limit (see below)
for inlining. When -qipa=inline=noauto is
in effect, only procedures listed in the
<procedures> suboption are considered for
inlining.
<procedures>
Specifies a comma-separated list of
procedures to attempt to inline.
limit=<num>
Specifies a limit on the size of a
calling function after inlining. This
only takes effect when inline=auto is on.
If you do not specify a value for <num>,
<num> is 8192 by default.
threshold=<num>
Specifies the upper size limit on
procedures to inline. This only takes
effect when inline=auto is on. If you do
not specify a value for <num>, <num> is
1024 by default.
Default: auto
noinline[=<procedures>]
Specifies a comma-separated list of procedures
which are not to be inlined. Specifying
noinline without <procedures>, asserts that no
procedures are to be inlined.
isolated=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and do not
directly refer to any global variable.
level=<level>
Determines the amount of IPA analysis and
optimization performed, where <level> can be
equal to:
0
Performs only minimal interprocedural
analysis and optimization.
1
Turns on inlining, limited alias
analysis, and limited call-site
tailoring.
2
Full interprocedural data flow and alias
analysis.
Default: 1
list[={<file_name>|short|long}]
Specifies an output listing file name during
the link phase. The default name is "a.lst".
Specifying 'long' or 'short' can be used to
request more or less information in the
listing file to determine which listing
sections will be included.
Default: short
lowfreq=<procedures>
Specifies a comma-separated list of procedures
that are likely to be called infrequently
during the course of a typical program run.
malloc16 | nomalloc16
Informs the compiler that the dynamic memory
allocation routines will return 16-byte
aligned memory addresses. The compiler can
then optimize the code based on that
assertion.
Default: -qipa=malloc16
missing={unknown|safe|isolated|pure}
Specifies the default assumption for
procedures not compiled with -qipa.
unknown
Greatly restricts the amount of
interprocedural optimization for calls to
unknown functions.
safe
Functions which do not indirectly call a
visible (not missing) function either
through direct call or function pointer.
isolated
Functions which do not directly reference
global variables accessible to visible
functions.
pure
Functions which are safe and isolated and
which do not indirectly alter storage
accessible to functions.
Default: missing=unknown
object | noobject
Specifies whether to include standard object
code in the object files. Specifying
'noobject' can substantially reduce overall
compile time by not generating object code
during the first IPA phase.
partition={small|medium|large}
Specifies the size of program sections that
are analyzed together. Larger partitions may
produce better analysis but require more
storage.
Default: partition=medium
pure=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that are
"isolated", "safe", and do not modify any data
objects that are visible to the caller.
safe=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that do not call
any other part of the program.
threads[=<suboption>] | nothreads
Runs portions of the IPA optimization process
during pass 2 in parallel threads, which can
speed up the linking process on multi-
processor systems. <suboption> can be one of
the following:
auto | noauto
When auto is in effect, the compiler
selects a number of threads heuristically
based on machine load. When noauto is in
effect, the compiler spawns one thread
per machine processor.
<number>
Instructs the compiler to use a specific
number of threads. <number> can be any
integer value in the range of 1 to 32767.
However, <number> is effectively limited
to the number of processors available on
your system.
Specifying threads with no suboptions implies
threads=auto.
Default: -qipa=threads
unknown=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and that may
update global variables and dummy arguments
and call other parts of the program compiled
with -qipa.
<file_name>
Specifies the name of a file that contains
suboption information in a special format.
Regular expressions are supported when specifying
procedure names for these suboptions:
cloneproc, nocloneproc, exits, inline, noinline,
isolated, lowfreq, pure, safe, unknown.
(C++) In C++ programs, procedure names must be
given in mangled form.
Default:
-qnoipa
-qipa=inline=auto:level=1:missing=unknown:partition=medium:threads=auto
when -O4 is in effect.
-qipa=inline=auto:level=2:missing=unknown:partition=medium:threads=auto
when -O5 is in effect.
-qipa=inline=auto:level=0:missing=unknown:partition=medium:threads=auto
when -qpdf1 or -qpdf2 is in effect.
-qisolated_call=<procedures>
Informs the compiler that specific functions do not
have or rely on side effects, other than those
implied by their parameters. <procedures> is a
colon-separated list of function names.
-qlargepage | -qnolargepage
Indicates that a program, designed to execute in a
large page memory environment, can take advantage
of large 16 MB pages provided on POWER4 and later
systems.
Default: -qnolargepage
-qlibansi | -qnolibansi
Assumes that all functions with the name of an ANSI
C defined library function are, in fact, the
library functions.
Default: -qnolibansi
-qmaxmem=<size>
Limits the amount of memory used by certain
memory-intensive optimizations to <size> kilobytes.
When <size> is -1, the optimizer will use as much
memory as needed.
Default:
o -qmaxmem=8192 when -O2 level optimization is
set.
o -qmaxmem=-1 when -O3 level or greater
optimization is set.
-qminimaltoc | -qnominimaltoc
Avoids Table of Contents (TOC) overflow conditions
by placing TOC entries into a separate data section
for each object file. By default, the compiler will
allocate at least one TOC entry for each unique
non-automatic variable reference in your program.
Default: -qnominimaltoc
-O[<level>]
Optimizes code at a choice of levels during
compilation. This is equivalent to
-qoptimize[=<level>]. <level> can be:
0
Performs only quick local optimizations such
as constant folding and elimination of local
common subexpressions.
2
Performs optimizations that the compiler
developers considered the best combination for
compilation speed and runtime performance. The
optimizations may change from product release
to release.
3
Performs some memory and compile-time
intensive optimizations in addition to those
executed with -O2. The -O3 specific
optimizations have the potential to alter the
semantics of a program. The compiler guards
against these optimizations at -O2 and the
option -qstrict is provided at -O3 to turn off
these aggressive optimizations. Specifying -O3
implies -qhot=level=0.
4
This option is the same as -O3, but also:
o sets the -qarch and -qtune options to the
architecture of the compiling machine.
o sets the -qcache option most appropriate
to the characteristics of the compiling
machine.
5
Equivalent to -O4 -qipa=level=2.
Specifying -O with no <level> is equivalent to
specifying -O2.
Default: -O0
-qoptimize[=<level>] | -qnooptimize
The long form of the -O option. -qoptimize=<level>
is equivalent to -O<level>. See the -O option.
Default: -qnooptimize
-p, -pg, -qprofile={-p|-pg}
Sets up the object files produced by the compiler
for profiling.
-pg is like -p, but it produces more extensive
statistics.
-qpdf1[=pdfname=<file_path] | -qnopdf1
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf1 produces an object that is instrumented to
collect runtime execution information. This is
phase 1 of the profile-directed feedback
optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf1
-qpdf2[=pdfname=<file_path>] | -qnopdf2
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf2 tunes application performance using the data
generated by running a program compiled with
-qpdf1. This is phase 2 of the profile-directed
feedback optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf2
-qprefetch | -qnoprefetch
Enables generation of prefetching instructions such
as dcbt and dcbz in compiled code.
Default: -qprefetch
-qprocimported[=<procedures>] | -qnoprocimported
Specifies functions that the compiler can assume
are imported. Imported functions are dynamically
bound with a shared portion of a library. Code
generated for calls to functions marked as imported
may be larger, but is faster than the default code
sequence generated for functions marked as unknown.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qproclocal[=<procedures>] | -qnoproclocal
Specifies functions that the compiler can assume
are local. Local functions are statically bound
with the functions that call them; smaller, faster
code is generated for calls to such functions.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qprocunknown[=<procedures>] | -qnoprocunknown
Specifies functions that the compiler can assume
are unknown. Unknown functions are resolved to
either statically or dynamically bound objects
during linking. <procedures> is a colon-separated
list of function identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-Q[<suboption>]
(C++) Instructs the compiler to try to inline
functions. Inlining is performed if possible but,
depending on which optimizations are performed,
some functions might not be inlined.
(C) Specifies which specific functions the compiler
should attempt to inline. You must specify at least
an optimization level of -O2 for inlining to take
effect with -Q. To turn on inline expansion for
calls to procedures in different scopes, you must
also use the -qipa=inline.
(C++) In the C++ language, this option can take the
form:
-Q
Compiler inlines all functions that it can.
-Q!
Compiler does not inline any functions.
(C) In the C language, this option can take the
form:
-Q
Attempts to inline all appropriate functions
with 20 executable source statements or fewer,
subject to the setting of any of the
suboptions to the -Q option. If -Q is
specified last, all functions are inlined.
-Q!
Does not inline any functions. If -Q! is
specified last, no functions are inlined.
-Q-<names>
Does not inline functions listed in <names>,
where <names> is a colon-separated list. All
other appropriate functions are inlined. The
option implies -Q.
-Q+<names>
Attempts to inline the functions listed in
<names>, where <names> is a colon-separated
list. All other appropriate functions are
inlined.
-Q=<threshold>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <threshold> for
the function to be inlined.
Default: -Q!
-qinline[<suboption>] | -qnoinline
Specifies whether to attempt to inline functions
instead of generating calls to a function.
(C++) In C++, you cannot specify any suboptions.
-qinline specifies that all appropriate functions
should be inlined, and -qnoinline specifies that no
functions should be inlined.
(C) In C, this option can take the following forms:
-qinline
The compiler attempts to inline all
appropriate functions with 20 executable
source statements or fewer, subject to any
other settings of the suboptions to the
-qinline option.
-qinline+<procedures>
Attempts to inline the functions listed in
<procedures> and any other appropriate
functions, where <procedures> is a colon-
separated list.
-qinline-<procedures>
Specifies that functions listed in
<procedures> do not get inlined, where
<procedures> is a colon-separated list.
-qnoinline
Does not inline any functions.
-qinline=threshold=<num>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <num> for the
function to be inlined. <num> must be a
positive integer.
Default:
The default is to treat inline specifications
as a hint to the compiler, and the result
depends on other options that you select. If
you specify the -g option (to generate debug
information), inlining may be affected.
-qshowpdf | -qnoshowpdf
Used with -qpdf1 and a minimum optimization level
of -O2 to add additional call and block count
profiling information to an executable.
Default: -qnoshowpdf
-qsmallstack | -qnosmallstack
Reduces the size of the stack frame. This option is
only valid when used together with IPA (-qipa, -O4,
-O5 compiler options).
Default: -qnosmallstack
-qsmp[=<suboptions_list>] | -qnosmp
Enables parallelization of program code.
<suboptions_list> is a colon-separated list of one
or more of the following suboptions:
auto | noauto
Enables automatic parallelization and
optimization. If noauto is specified,
automatic parallelization of program code is
disabled; only program code explicitly
parallelized with OpenMP directives is
optimized.
Default: auto
nested_par | nonested_par
If nested_par is specified, prescriptive
nested parallel constructs are parallelized by
the compiler.
Default: nonested_par
omp | noomp
Enables strict OpenMP compliance. Only OpenMP
parallelization pragmas are recognized.
Default: noomp
opt | noopt
Enables automatic parallelization but disables
optimization of parallelized program code. If
noopt is specified, optimization of
parallelized program code is disabled.
Default: opt
rec_locks | norec_locks
Specifies whether to use recursive locks.
Default: norec_locks
schedule=<type>
Specifies what kinds of scheduling algorithms
and chunking are used for loops to which no
other scheduling algorithm has been explicitly
assigned in the source code. <type> can be:
o affinity[=<num>]
o dynamic[=<num>]
o guided[=<num>]
o runtime
o static[=<num>],
where <num> is the number of loop iterations.
Default: schedule=runtime
stackcheck | nostackcheck
Causes the compiler to check for stack
overflow by slave threads at run time, and
issue a warning if the remaining stack size is
less than the number of bytes specified by the
stackcheck option of the XLSMPOPTS environment
variable. This suboption is intended for
debugging purposes, and only takes effect when
XLSMPOPTS=stackcheck is also set.
Default: nostackcheck
threshold[=<num>]
When -qsmp=auto is in effect, controls the
amount of automatic loop parallelization that
occurs. The value of <num> represents the
lower limit allowed for parallelization of a
loop, based on the level of "work" present in
a loop.
Default:
<num> must be a positive integer of 0 or
greater. If you specify threshold with no
suboption, the program uses a default value
of 100.
Specifying -qsmp without suboptions is equivalent
to
-qsmp=auto:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100
or
-qsmp=opt:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100.
Default: -qnosmp
-qspeculateabsolutes | -qnospeculateabsolutes
Works with the -qtocmerge -bl:file for non-IPA
links and with the -bl:file for IPA links to
disable speculation at absolute addresses.
The bl:file is necessary for the compiler to know
which addresses are absolutes.
Default: -qspeculateabsolutes
-qstrict | -qnostrict
Turns off aggressive optimizations which have the
potential to alter the semantics of your program.
-qstrict sets -qfloat=nofltint:norsqrt. -qnostrict
sets -qfloat=rsqrt. This option is only valid with
-O2 or higher optimization levels.
Default:
o -qnostrict at -O3 or higher.
o -qstrict otherwise.
-qstrict_induction | -qnostrict_induction
Turns off loop induction variable optimizations
that have the potential to alter the semantics of
your program.
Default:
o -qnostrict_induction at -O2 or higher.
o -qstrict_induction otherwise.
-qtocmerge | -qnotocmerge
Enables TOC merging to reduce TOC pointer loads and
improves the scheduling of external loads. Reads
from the file specified in -bImportfile linker
option and merges the address information to access
ranges of external addresses using a single table
of contents entry.
Default: -qnotocmerge
-qtune=<suboption>
Specifies the architecture system for which the
executable program is optimized.
<suboption> must be one of the following:
403
Generates object code optimized for all the
PowerPC 403 processors.
604
Generates object code optimized for all the
PowerPC 604 processors.
auto
Generates object code optimized for the
hardware platform on which the program is
compiled.
balanced
Optimizations are tuned across a selected
range of recent hardware.
ppc970
Generates instructions specific to PowerPC 970
hardware platforms.
pwr3
Generates object code optimized for the POWER3
hardware platforms.
pwr4
Generates object code optimized for the POWER4
hardware platforms.
pwr5
Generates object code optimized for the POWER5
hardware platforms.
pwr6
Generates object code optimized for the POWER6
hardware platforms.
rs64a
Generates object code optimized for the RS64I
processor.
rs64b
Generates object code optimized for the RS64II
processor.
rs64c
Generates object code optimized for the
RS64III processor.
Default:
-qtune=balanced when the default -qarch
setting is in effect. Otherwise, the default
depends on the effective -qarch setting.
-qunroll[=<suboption>] | -qnounroll
Unrolls inner loops in the program. This can help
improve program performance. The suboptions are:
auto
Instructs the compiler to perform basic loop
unrolling.
yes
Instructs the compiler to search for more
opportunities for loop unrolling than that
performed with auto. In general, this
suboption is more likely to increase compile
time or program size than auto processing, but
it may also improve your application's
performance.
no
Instructs the compiler to not unroll loops.
Default: -qunroll=auto
If -qunroll is specified with no suboptions, the
compiler assumes -qunroll=yes. -qnounroll is
equivalent to -qunroll=no.
-qunwind | -qnounwind
Informs the compiler that the stack can be unwound
while a routine in the compilation is active.
Specifying -qnounwind can improve the optimization
of non-volatile register saves and restores.
Default: -qunwind
Linking options
-b{dynamic|shared|static}
Controls how shared objects are processed by the
linkage editor. The suboptions are:
dynamic, shared
Causes the linker to process subsequent shared
objects in dynamic mode. In dynamic mode,
shared objects are not statically included in
the output file. Instead, the shared objects
are listed in the loader section of the output
file.
-bdynamic and -bshared are synonymous.
static
Causes the linker to process subsequent shared
objects in static mode. In static mode, shared
objects are statically linked in the output
file.
Default: -bshared
-bmaxdata:<bytes>
Specifies the maximum amount of space to reserve
for the program data segment for programs where the
size of these regions is a constraint. Combined
data space is slightly less than 256MB, or lower,
depending on the limits for the user ID.
Default: -bmaxdata:0
-brtl Controls runtime linking for the output file.
-qcrt | -qnocrt
Instructs the linker to use the standard system
startup files at link time.
Default: -qcrt
-e <name>
Sets the entry name for a shared executable and is
only used together with -qmkshrobj.
-f<file_name>
Names a file to store a list of object files for
the compiler to pass to the linker. The <file_name>
file should contain only the names of object files.
There should be one object file per line.
-L<dir>
Searches the path directory for library files
specified by the -l<key> option.
Default:
The default is to search only the standard
directories.
-l<key>
Searches the file lib<key>.so and then lib<key>.a
for dynamic linking, or only lib<key>.a for static
linking.
Default:
The default is to search only some of the
compiler runtime libraries.
-qlib | -qnolib
Specifies whether the compiler should use the
standard system libraries at link time. -qnolib is
similar to the gcc option nostdlib; the driver will
not pass the standard system startup files or
libraries when linking.
Default: -qlib
-qtwolink | -qnotwolink
(C++) Links twice in order to minimize the number
of static constructors included from libraries and
object files.
Default: -qnotwolink
-Z<prefix>
This linker option specifies a prefix for the
library search path. This is useful when developing
a new version of a library.
Portability and migration options
-qalign=<suboption>
Specifies what aggregate alignment rules the
compiler uses for file compilation, where the
alignment suboptions are:
bit_packed
The compiler uses the bit_packed alignment
rules.
full
The compiler uses the RISC System/6000
alignment rules. This is the same as power.
mac68k
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the twobyte
suboption.
natural
The compiler maps structure members to their
natural boundaries.
packed
The compiler uses the packed alignment rules.
power
The compiler uses the RISC System/6000
alignment rules.
twobyte
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the mac68k
suboption.
Default: -qalign=full
-qalignrulefor=power=[no]typedefrespectsrule
(C++) When used with -qalign=power, determines
whether a 4-byte alignment ceiling is applied to
non-first members of structures that are of type
typedef to array of element type that exceeds the
alignment ceiling.
typedefrespectsrule | notypedefrespectsrule
When typedefrespectsrule is in effect, the
member follows the normal alignment rules for
-qalign=power. This suboption provides
compatibility with code compiled with
-qalign=power with XL C++ V6.0 and earlier.
When notypedefrespectsrule is in effect, a
member that exceeds the alignment ceiling of 4
bytes is aligned on 4-byte boundaries. This
suboption provides compatibility with code
compiled with -qalign=power with XL C++ V7.0
and V8.0.
Default: -qalignrulefor=power=typedefrespectsrule
-qgenproto[=parmnames] | -qnogenproto
(C) Generates ANSI prototypes from K&R function
definitions and displays them on standard output.
Specifying -qgenproto without '=parmnames' will
cause prototypes to be generated without parameter
names.
Default: -qnogenproto
-qnamemangling=<scheme>
(C++) Chooses the name mangling scheme for external
symbol names generated from C++ source code. The
<scheme> can be:
ansi
Fully supports the most recent language
features of Standard C++.
v9
Compatible with XL C++ V9.0.
v8
Compatible with XL C++ V8.0.
v7
Compatible with XL C++ V7.0.
v6
Compatible with VisualAge C++ V6.0.
v5
The scheme for VisualAge C++ V5.0.
v4
The scheme for VisualAge C++ V4.0.
v3
The scheme for VisualAge C++ releases before
V4.0.
compat
Same as v3.
Default: -qnamemangling=ansi
-qobjmodel={classic|ibm}
(C++) Specifies the object model.
classic
This object model is compatible with version
3.6 of the IBM C and C++ compilers.
ibm
Uses the object model introduced with version
5.0 of VisualAge C++ for AIX. Objects compiled
with this object model will use less memory
and have better performance for deep
inheritance with virtual bases.
Default: -qobjmodel=classic
-qoldpassbyvalue | -qnooldpassbyvalue
(C++) Specifies how classes containing const or
reference members are passed in function arguments.
All classes in the compilation unit are affected by
this option. When -qoldpassbyvalue is specified,
the compiler mimics the IBM C/C++ compilers v3.6
compiler in that when a class containing a const or
reference member is passed as a function argument,
it is not passed by value. All such classes in the
compilation unit are affected.
Default: -qnooldpassbyvalue
-qupconv | -qnoupconv
(C) Preserves the unsigned specification when
performing integral promotions.
Default:
o -qupconv when -qlanglvl={extended|classic}.
o -qnoupconv otherwise.
-qvecnvol | -qnovecnvol
Specifies whether to use volatile or non-volatile
vector registers. Volatile vector registers are
registers whose value is not preserved across
function calls or in the context of save, jump or
switch system library functions. If -qnoenablevmx
is enabled, this option is ignored.
Default: -qnovecnvol
Compiler customization options
-qasm_as=<asm_path> [<flags_list>]
Specifies the path and flags used to invoke the
assembler in order to handle assembler code in an
asm statement. <asm_path> is the full path to the
assembler to be used, and <flags_list> is a series
of one or more flags (and their arguments),
separated by spaces. Single quotes (or double
quotes) are required around the string of arguments
if any spaces exist.
-B[<prefix>]
Determines substitute path names for programs used
during compilation, such as the compiler,
assembler, linkage editor, and preprocessor, where
<prefix> can be any program name recognized by the
-t compiler option. The optional <prefix> defines
part of a path name to the new programs. The -t
parameter, <program>, specifies the program to
which the <prefix> is to be appended. When
specifying <prefix>, there must be a slash (/)
after the folder name.
-qc_stdinc=<paths_list>
(C) Changes the standard search location for the XL
C headers. <paths_list> is a colon-separated list
of paths to search.
-qcpp_stdinc=<paths_list>
(C++) Specifies the standard search directories for
the XL C++ headers, where <paths_list> is a colon-
separated list of paths.
-F[<config_file>][:<stanza>]
Names an alternative configuration file (.cfg) for
the compiler. <config_file> is the name of a
compiler configuration file. <stanza> is the name
of the command used to invoke the compiler. This
directs the compiler to use the entries under
<stanza> in the <config_file> to set up the
compiler environment. At least one of the arguments
must be supplied.
-qpath=<program>:<path>
Constructs alternate program names for compiler
components. The program and directory path
specified are used in place of the regular program.
<program> can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-qspill=<size>
Specifies the size of the register allocation spill
area in bytes.
Default: -qspill=512
-t<programs_list>
Applies the prefix from the -B option to the
specified programs in <programs_list>.
<programs_list> is a chain (i.e: -tbcI) of one or
more of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-W<program>,<options_list>
Gives the specified option(s) to the compiler
program, <program>. <options_list> is a comma-
separated list of one or more options. <program>
can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = c++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = linkage helper (C++ only)
p = Preprocessor
SEE ALSO
gxlc(1), gxlc++(1), c++filt(1), CreateExportList(1),
linkxlC(1), makeC++SharedLib(1), vacndi(1), vacppndi(1),
showpdf(1), mergepdf(1), resetpdf(1), cleanpdf(1).
For more information, refer to the following Web sites:
http://www.ibm.com/software/awdtools/xlcpp/library/
http://www.ibm.com/software/awdtools/xlcpp/support/
COPYRIGHT
Licensed Materials - Property of IBM.
IBM XL C/C++ Enterprise Edition for AIX, V9.0.
5724-S71
Copyright IBM Corp. 1991, 2007. All Rights Reserved.
AIX, IBM, POWER3, POWER4, POWER5, POWER5+, POWER6,
PowerPC, PowerPC 604 and SAA are trademarks or registered
trademarks of International Business Machines Corporation
in the United States, other countries, or both.
Windows is a trademarks of Microsoft Corporation in the
United States, other countries, or both.
US Government Users Restricted Rights - Use, duplication
or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
unlink: /ptmp/ddvento/xlcW0pXIsqa
unlink: /ptmp/ddvento/xlcW1pXIsqb
unlink: /ptmp/ddvento/xlcW2p-Isqc
configure:23227: $? = 249
configure:23234: xlC -V >&5
export XL_CONFIG=/etc/vac.cfg.53:xlC
less /usr/vacpp/exe/default_msg/vacpp.txt
xlc(1) IBM (2007) xlc(1)
NAME
xlc, xlc++, xlC, cc, c89, c99, xlCcore, xlc++core and
related commands - invoke the IBM XL C/C++ compiler.
SYNTAX
<invocation-command> [ <option> | <inputfile> ] ...
DESCRIPTION
The invocation commands compile C and C++ source files.
The commands and their recommended uses are described
below.
Invocations Usage (supported standards)
_________________________________________________________
xlc, xlc_r, xlc_r4, Compile C source files.
xlc_r7, xlc128, xlc128_r, (ANSI C89, ISO C99,
xlc128_r4, xlc128_r7 IBM language extensions)
xlc++, xlc++_r, xlc++_r4, Compile C++ source files.
xlc++_r7, xlc++128,
xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC, xlC_r,
xlC_r4, xlC_r7, xlC128,
xlC128_r, xlC128_r4,
xlC128_r7
cc, cc_r, cc_r4, cc_r7, Compile legacy code that
cc128, cc128_r, cc128_r4, does not conform to Standard
cc128_r7 C. (pre-ANSI C)
c89, c89_r, c89_r4, Compile C source files with
c89_r7, c89_128, c89_128_r, strict conformance to the
c89_128_r4, c89_128_r7 C89 standard. (ANSI C89)
c99, c99_r, c99_r4, Compile C source files with
c99_r7, c99_128, c99_128_r, strict conformance to the
c99_128_r4, c99_128_r7 C99 standard. (ISO 99)
xlc++core, xlc++core_r, Compile C++ source files
xlc++core_r7, xlc++core128, but the compiler will
xlc++core128_r, link only to the core of
xlc++core128_r7, xlCcore, the runtime library.
xlCcore_r, xlCcore_r7,
xlC128core, xlC128core_r,
xlC128core_r7
gxlc Accepts GNU C options, maps
them to their equivalent XL
C option, then invokes xlc.
gxlc++, gxlC Accepts GNU C/C++ options, maps
them to their equivalent XL
C++ option,then invokes xlc++.
The main difference between these commands is that they use different
default options (which are set in the configuration file
/etc/vac.cfg.XX, where XX represents the AIX version).
See the Compiler Reference for more information on these invocation
commands.
All invocations with a suffix of _r allow for thread-safe
compilation. Use these commands to create threaded
applications or to link programs that use multi-threading.
These commands also process assembler source files and
object files. The compiler calls the link editor to
produce a single executable or shared library, unless you
specify the compiler options that prevent object files
from being linked.
The input file may have any of the following suffixes:
.C, .cpp, .cxx, C++ source file
.cc, .cp, .c++
.c C source file
.i Preprocessed C or C++ source file
.a Archive file
.o Object file for ld command
.s Assembler source file
.S Assembler source file that
needs preprocessing
.so Shared object file
OPTIONS
Compiler options are categorized by their functions and
may be used to set the compiler behavior. Options can be
flag options or keyword options.
Keyword options are specified in one of the following
ways:
-q<option>
-q<option>=<suboption>
-q<option>=<suboption>:<suboption>
Keyword options with no suboptions represent switches that
may be either on or off. -qx turns the switch on, and
-qnox turns the switch off. For example, -qsource tells
the compiler to produce a source listing and -qnosource
tells the compiler not to produce a source listing.
Output control options
-c Instructs the compiler to pass source files to the
compiler only. The compiled source files are not
sent to the linker. This option produces an object
file, file_name.o, for each valid source file.
-C | -C!
Preserves or removes comments in preprocessed
output.
When -C is used with the -E option, comments are
written to standard output; with the -P option,
comments are written to an output file.
When -C! is in effect, comments are removed.
-E Instructs the compiler to preprocess the source
files named in the compiler invocation and creates
an output preprocessed source file.
-G Tells the linkage editor to create a shared object
enabled for runtime linking.
-M Creates an output file that contains information to
be included in a "make" description file. This is
equivalent to specifying -qmakedep without a
suboption.
-qmakedep[=gcc]
Creates an output file that contains targets
suitable for inclusion in a description file for
the make command that describes the dependencies of
the main source file in the compilation.
Specifying 'gcc' changes the format of the
generated dependency file.
Specifying -qmakedep without 'gcc' is equivalent to
specifying -M.
-MF<path>
Specifies the target for the output generated by
the -qmakedep or -M options, where <path> can be a
full directory path or file name. Note that "-MF
<path>" (with a space before the argument) is also
acceptable. This option only has effect when
specified with -qmakedep or -M.
(C)-qmkshrobj, (C++)-qmkshrobj[=<priority>]
Creates a shared object from the generated object
files.
The optional number specifies the priority level
for initialization of all static objects in the
file. <priority> may be any number from -214782623
(highest priority-initialized first) to 214783647
(lowest priority-initialized last). If no priority
is specified, the default priority of 0 is used.
The priority is not used when linking shared
objects (using the xlc command) written in C.
Specifying -qmkshrobj implies -qpic.
See related options, -e <name> and -o <path>.
-o <path>
Specifies an output location for the object,
assembler, or executable files created by the
compiler. When the -o option is used during
compiler invocation, <path> can be the name of
either a file or a directory.
Default: -o a.out
-P Preprocesses the C or C++ source files named in the
compiler invocation and creates an output
preprocessed source file for each input source
file. The preprocessed output file has the same
name as the output file, with a .i suffix.
-S Generates an assembler language file (.s) for each
source file. The resulting .s files can be
assembled to produce object .o files or an
executable file (a.out).
Input control options
-+ (C++) Compiles any file, <file_name.nnn>, as a C++
language file, where <nnn> is any suffix other than
.a, .so, .o, .s, or .S. This option is equivalent
to the -qsourcetype=c++ option and should not be
used together with the -qsourcetype option.
-qcinc=<directory_path> | -qnocinc
(C++) Instructs the compiler to place an extern "C"
{ } wrapper around the contents of an include file,
where <directory_path> is the location of that
include file.
Default: -qnocinc
-I<directory_path>
Specifies an additional search path for include
file names that do not specify an absolute path.
Default:
The following directories are searched, in the
following order, after any paths that are
specified by the -I option:
1) The current directory.
2) The directory where the source file is
located.
3) /usr/include.
-qidirfirst | -qnoidirfirst
Specifies the search order for files included with
the #include "<file_name>" directive. Use
-qidirfirst with the -I option. If -qidirfirst is
specified, the directories specified by the
-I<directory_path> option are searched before the
directory in which the current file resides.
Default: -qnoidirfirst
-qinclude=<file_path>
Specifies additional header files that are included
before the first line of a source file in a
compilation unit and ahead of any headers which may
be specified by an #include statement on the first
line of the source file.
-qsourcetype=<type>
Determines whether to treat all recognized source
files as if they are of the source type specified
by <type> (regardless of file name suffix), or
whether to use the file name suffix to determine
the programming language.
Note that the option only affects files that are
specified on the command line following the option,
but not those that precede the option. The
-qsourcetype option should not be used together
with the -+ option. The suboptions are:
default
The compiler assumes that the programming
language of a source file will be implied by
its file name suffix.
c
The compiler compiles all source files
following this option as if they are C
language source files.
assembler
The compiler compiles all source files
following this option as if they are assembler
language source files.
assembler-with-cpp
The compiler compiles all source files
following this option as if they are assembler
language source files that need preprocessing.
Default: -qsourcetype=default
-qstdinc | -qnostdinc
Specifies whether the standard directories are
searched for files included by the #include
<file_name> and #include "file_name" directives.
The -qnostdinc option excludes the standard include
directories from the search path.
Default: -qstdinc
Language element control options
-qaltivec | -qnoaltivec
Instructs the compiler to support vector data types
and operators and is accepted when the architecture
specified by the -qarch option supports vector
instructions and -qenablevmx is enabled.
Default: -qnoaltivec
-qasm[=<sub>] | -qnoasm[=<sub>]
Controls the interpretation of, and subsequent
generation of code for, asm statements.
In (C), <sub> can only be 'gcc'.
In (C++), <sub> can be:
gcc
Interprets asm statements using GCC syntax.
stdcpp
Interprets asm statements using stdcpp syntax.
Default:
(C++) -qnoasm=stdcpp in compat366 or strict98
modes, and -qasm=gcc otherwise.
(C) -qasm=gcc
-qcpluscmt | -qnocpluscmt
(C) Permits the usage of "//" to introduce a
comment that lasts until the end of the current
source line, as in C++.
Default:
o -qcpluscmt when you invoke the compiler with
xlc, xlc_r, cc, or cc_r, or when -qlanglvl is
set to stdc99 or extc99.
o -qnocpluscmt otherwise.
-D<name>[=[<def>]]
Defines <name> as in the #define directive. <def>
is an optional definition or value assigned to
<name>. Specifying -D<name>= (with no <def>) is
equivalent to #define <name>; specifying
-D<name> is equivalent to #define <name> 1.
-qdbcs | -qnodbcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qmbcs.
Default: -qnodbcs
-qdfp | -qnodfp
Enables compiler support for decimal floating-point
types and literals.
Default: -qnodpf
-qdigraph | -qnodigraph
Allows usage of digraph key combinations or
keywords to represent characters not found on some
keyboards.
Default:
(C) -qdigraph when -qlanglvl is extc89,
extended, extc99 or stdc99, and -qnodigraph
otherwise.
(C++) -qdigraph
-qdollar | -qnodollar
Allows the '$' symbol to be used in the names of
identifiers. When -qdollar is in effect, the dollar
symbol '$' in an identifier is treated as a base
character. If the options -qnodollar and
-qlanglvl=ucs are both enabled, the dollar symbol
is treated as an extended character.
Default: -qnodollar
-qignprag=<option>
Instructs the compiler to ignore certain pragma
statements. The options are:
disjoint
Ignores all #pragma disjoint directives in the
source file.
isolated_call
Ignores all #pragma isolated_call directives
in the source file.
all
Ignores all #pragma isolated_call directives
and #pragma disjoint directives in the source
file.
omp
Ignores all OpenMP parallel processing
directives in the source file.
ibm
(C) Ignores all #pragma ibm snapshot
directives and all IBM SMP directives in the
source file.
-qkeyword=<keyword> | -qnokeyword=<keyword>
Controls whether the specified name is treated as a
keyword or as an identifier whenever it appears in
a program source.
By default, all the built-in keywords defined in
the C and C++ language standards are reserved as
keywords. You cannot add keywords to the language
with this option. However, you can use
-qnokeyword=<keyword> to disable built-in keywords,
and use -qkeyword=<keyword> to reinstate those
keywords.
(C) This option can also be used with the following
C keywords: restrict, typeof, asm and inline.
(C++) This option can be used with all C++ built-in
keywords.
-qlanglvl=<suboptions_list>
Selects the language level and language options for
the compilation. <suboptions_list> is a colon-
separated list of suboptions.
(C) For C language programs, <suboptions_list> is
{classic|extended|saa|saa12|stdc89|stdc99|extc89|extc99}:{ucs|noucs}.
classic
Allows the compilation of non-stdc89 programs,
and conforms closely to the K&R level
preprocessor.
extended
Provides compatibility with the RT compiler
and classic. This language level is based on
C89.
saa
Compilation conforms to the current SAA(R) C
CPI language definition. This is currently SAA
C Level 2.
saal2
Compilation conforms to the SAA C Level 2 CPI
language definition, with some exceptions.
stdc89
Compilation conforms to the ANSI C89 standard,
also known as ISO C90.
stdc99
Compilation conforms to the ISO C99 standard.
extc89
Compilation conforms to the ANSI C89 standard,
and accepts implementation-specific language
extensions.
extc99
Compilation conforms to the ISO C99 standard,
and accepts implementation-specific language
extensions.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in program
source code.
Default:
o -qlanglvl=ucs under language levels stdc99
and extc99.
o -qlanglvl=noucs for all other language
levels.
(C++) The suboptions for C++ language programs are:
compat366
Compilation conforms to some, but not all, IBM
C and C++ Compilers V3.6 features.
extended
Compilation is based on the strict98, with
some differences to accommodate extended
language features.
strict98
Compilation conforms to the ISO C++ standard
for C++ programs.
anonstruct | noanonstruct
This suboption controls whether anonymous
structs and anonymous classes are allowed in
your C++ source. By default, the compiler
allows anonymous structs.
anonunion | noanonunion
This suboption controls what members are
allowed in anonymous unions. When this
suboption is set to anonunion, anonymous
unions can have members of all types that
standard C++ allows in non-anonymous unions.
ansifor | noansifor
This suboption controls whether scope rules
defined in the C++ standard apply to names
declared in for-init statements. By default,
standard C++ rules are used.
ansisinit | noansisinit
This suboption can be used to select between
old (v3.6 or earlier) and current (v5.0 or
later) compiler object compatibility.
c99__func__ | noc99__func__
This suboption instructs the compiler to
recognize the C99 __func__ identifier.
The c99__func__ suboption is enabled by
default when -qlanglvl=extended is enabled. It
can be enabled for any language level by
specifying -qlanglvl=c99__func__, or disabled
by specifying -qlanglvl=noc99__func__.
c99complex | noc99complex
This suboption instructs the compiler to
recognize C99 complex data types and related
keywords. It is set by default for
-qlanglvl=extended.
c99complexheader | noc99complexheader
This suboption instructs the compiler to use
the C99 complex.h header file.
c99compoundliteral | noc99compoundliteral
This suboption instructs the compiler to
support the C99 compound literal feature. It
is set by default for -qlanglvl=extended.
c99hexfloat | noc99hexfloat
This suboption enables support for C99-style
hexadecimal floating constants in C++
applications. It is on by default for
-qlanglvl=extended.
c99vla | noc99vla
When c99vla is enabled, the compiler will
support the use of C99-type variable length
arrays in your C++ applications. It is set by
default for -qlanglvl=extended.
compatzea | nocompatzea
The -qlanglvl=compatzea option is a
compatibility option that lets you continue to
use a zero extent array with dimension of 1.
Default: -qlanglvl=nocompatzea
Specifying -qlanglvl=compatzea has effect only
if -qlanglvl=zeroextarray is also enabled.
dependentbaselookup | nodependentbaselookup
Provides the ability to specify compilation in
conformance with issue 213 of TC1 of the C++
standard.
Default: -qlanglvl=dependentbaselookup
gnu_assert | nognu_assert
Enables or disables support for the following
GNU C system identification assertions:
'#assert', '#unassert', '#cpu', '#machine',
'#system'.
gnu_complex | nognu_complex
This suboption instructs the compiler to
recognize GNU complex data types and related
keywords.
gnu_computedgoto | nognu_computedgoto
Enables support for computed gotos. This
suboption is enabled for -qlanglvl=extended.
gnu_explicitregvar | nognu_explicitregvar
(C) Allows you to control whether the compiler
accepts and ignores the specification of
explicit registers for variables.
gnu_externtemplate | nognu_externtemplate
This suboption enables or disables extern
template instantiations.
Default:
gnu_externtemplate is enabled by default
when compiling to the extended language
level.
gnu_include_next | nognu_include_next
Enables or disables support for the GNU C
#include_next preprocessor directive.
Default:
gnu_include_next is enabled by default for
-qlanglvl=extended.
gnu_labelvalue | nognu_labelvalue
Enables or disables support for labels as
values.
Default:
gnu_labelvalue is enabled by default for
-qlanglvl=extended.
gnu_locallabel | nognu_locallabel
Enables or disables support for locally-
declared labels.
gnu_membernamereuse | nognu_membernamereuse
Enables or disables reusing a template name in
a member list as a typedef.
gnu_suffixij | nognu_suffixij
Enables or disables support for GCC style
complex numbers. If gnu_suffixij is specified,
a complex number can be ended with suffix i/I
or j/J.
Default:
gnu_suffixij is enabled by default for
-qlanglvl=extended.
gnu_varargmacros | nognu_varargmacros
This option is similar to
-qlanglvl=varargmacros. For the list of the
main differences, refer to the Compiler
Reference.
Default:
gnu_varargmacros is set by default for
-qlanglvl=extended.
gnu_warning | nognu_warning
Enables or disables support for the GNU C
#warning preprocessor directive.
illptom | noillptom
This suboption controls what expressions can
be used to form pointers to members. C/C++ can
accept some forms that are in common use, but
do not conform to the C++ standard. The
compiler allows these forms by default.
implicitint | noimplicitint
This suboption controls whether the compiler
will accept missing or partially specified
types as implicitly specifying 'int'. This is
no longer accepted in the standard but may
exist in legacy code.
With the suboption set to noimplicitint, all
types must be fully specified.
With the suboption set to implicitint, a
function declaration at namespace scope or in
a member list will implicitly be declared to
return int.
newexcp | nonewexcp
This suboption determines whether or not the
C++ new operator throws an exception. If the
-qlanglvl=newexcp option is specified, the
standard exception std::bad_alloc is thrown
when the requested memory allocation fails.
This option does not apply to the nothrow
versions of the new operator.
The standard implementation of the new
operators fully support exceptions. For
compatibility with previous versions of
VisualAge C++, these operators return 0 by
default.
offsetnonpod | nooffsetnonpod
This suboption controls whether the offsetof
macro can be applied to classes that are not
data-only.
By default, the compiler allows offsetof to be
used with non-POD classes.
olddigraph | noolddigraph
This option controls whether old-style
digraphs are allowed in your C++ source. It
applies only when -qdigraph is also set.
By default, the compiler supports only the
digraphs specified in the C++ standard.
oldfriend | nooldfriend
This option controls whether friend
declarations that name classes without
elaborated class names are treated as C++
errors.
By default, the compiler lets you declare a
friend class without elaborating the name of
the class with the keyword class.
oldmath | nooldmath
This suboption controls which versions of math
function declarations in <math.h> are included
when you specify math.h as an included or
primary source file.
By default, the new standard math functions
are used. Build with -qlanglvl=nooldmath for
strict compliance with the C++ standard. For
compatibility with modules that were built
with earlier versions of VisualAge C++ and
predecessor products, you may need to build
with -qlanglvl=oldmath.
oldtempacc | nooldtempacc
This suboption controls whether access to a
copy constructor to create a temporary object
is always checked, even if creation of the
temporary object is avoided.
By default, the compiler suppresses the access
checking.
oldtmplalign | nooldtmplalign
Controls whether alignment rules specified for
nested templates are ignored.
When the default, -qlanglvl=nooldtmplalign, is
in effect, these alignment rules are not
ignored.
Specify -qlanglvl=oldtmplalign for
compatibility with VisualAge C++ 4.0 and
predecessor products.
oldtmplspec | nooldtmplspec
This suboption controls whether template
specializations that do not conform to the C++
standard are allowed.
By default, the compiler allows these old
specializations (-qlanglvl=nooldtmplspec).
redefmac | noredefmac
Specifies whether a macro can be redefined
without a prior #undef or undefine()
statement.
trailenum | notrailenum
This suboption controls whether trailing
commas are allowed in enum declarations.
By default, the compiler allows one or more
trailing commas at the end of the enumerator
list.
typedefclass | notypedefclass
This suboption provides backwards
compatibility with previous versions of
VisualAge C++ and predecessor products.
ucs | noucs
This suboption controls whether Unicode
characters are allowed in identifiers, string
literals and character literals in C++
sources.
Default: -qlanglvl=noucs
varargmacros | novarargmacros
This C99 feature allows the use of a variable
argument list in function-like macros in your
C++ applications.
zeroextarray | nozeroextarray
This suboption controls whether zero-extent
arrays are allowed as the last non-static data
member in a class definition.
By default, the compiler allows arrays with
zero elements.
The default depends on the invocation command used:
Command Default
_____________________________________________
xlC/xlc++ extended
xlc extc99
cc extended
c89 stdc89
c99 stdc99
-qlonglong | -qnolonglong
Allows IBM-style long long integers. This option
cannot be used with -qlanglvl=stdc99 or
-qlanglvl=extc99.
Default:
o -qlonglong when compiling with xlc, xlc++,
xlC or cc.
o -qnolonglong when compiling with c89 or c99.
-qmacpstr | -qnomacpstr
Converts Pascal string literals into null-
terminated strings where the first byte contains
the length of the string.
Default: -qnomacpstr
-qmbcs | -qnombcs
Specifies that string literals and comments can
contain multi-byte characters. This is equivalent
to -qdbcs.
Default: -qnombcs
-qstaticinline | -qnostaticinline
(C++) Controls whether inline functions are treated
as static or extern. Specifying -qnostaticinline
means the inline functions are treated as having
extern linkage.
Default: -qnostaticinline
-qtabsize=<size>
Changes the length of tabs as perceived by the
compiler, where <size> is the number of character
spaces representing a tab in the source program.
Default: -qtabsize=8
-qtrigraph | -qnotrigraph
Allows trigraph key combinations to represent
characters not found on some keyboards.
Default: -qtrigraph
However, if -qlanglvl=classic is enabled or
implied, the trigraphs are not recognized by
default.
-U<name>
Undefines the identifier <name> defined by the
compiler or by the -D<name> option.
-qutf | -qnoutf
Enables recognition of UTF literal syntax.
Default:
o (C) -qnoutf
o (C++) -qutf for all language levels except
-qlanglvl=strict98
o (C++) -qnoutf when -qlanglvl=strict98 is in
effect
Template control options (C++ only)
-qtempinc[=<directory_path>] | -qnotempinc
(C++) Generates separate template include files for
template functions and class declarations, and
places these files in a directory which can be
optionally specified.
Default: -qnotempinc
-qtemplatedepth=<number>
(C++) Specifies the maximum number of recursively
instantiated template specializations that will be
processed by the compiler. <number> can be a value
between 1 and INT_MAX.
Default: -qtemplatedepth=300
-qtemplaterecompile | -qnotemplaterecompile
(C++) Helps manage dependencies between compilation
units that have been compiled using the
-qtemplateregistry compiler option.
Default: -qnotemplaterecompile
-qtemplateregistry[=<filename>] | -qnotemplateregistry
(C++) Maintains records of all templates as they
are encountered in the source and ensures that only
one instantiation of each template is made.
Default: -qnotemplateregistry
-qtempmax=<number>
(C++) Specifies the maximum number of template
include files to be generated by the -qtempinc
option for each header file.
Default: -qtempmax=1
-qtmplinst=<suboption>
(C++) Allows you to manage implicit template
instantiations. <suboption> is one of the
following:
none
Instantiates only the inline functions. If
this is specified, -qtempinc and
-qtemplateregistry are ignored.
noinline
Suppresses all implicit instantiations.
auto
Handles the implicit instantiations according
to the -qtempinc and -qtemplateregistry
options. If both options are off, then
implicit instantiations are always performed.
always
Always perform implicit instantiations. This
will ignore the -qtempinc and
-qtemplateregistry options.
Default: -qtmplinst=auto
-qtmplparse=<option>
(C++) Controls whether parsing and semantic
checking are applied to template definition
implementations or only to template instantiations.
The compiler has the option to produce warning or
error messages. The suboptions are:
no
Does not parse, to reduce the number of errors
issued in code written for previous versions
of the compiler.
warn
Parses template definitions and issues warning
messages for semantic errors.
error
Treats problems in template definitions as
errors, even if the template is not
instantiated.
Default: -qtmplparse=no
Floating-point and integer control options
-qbitfields={signed|unsigned}
Specifies whether bit fields will be signed or
unsigned.
Default: -qbitfields=unsigned
-qchars={signed|unsigned}
Specifies whether the data type char will be signed
or unsigned.
Default: -qchars=unsigned
-qenum=<suboption>
Specifies the amount of storage occupied by
enumerations, where <suboption> can be:
small
Specifies that enumerations occupy the
smallest amount of space (1, 2, 4, or 8 bytes)
that can accurately represent the range of
values in the enumeration. Signage is
unsigned, unless the range of values includes
negative values.
int
Specifies that enumerations occupy 4 bytes and
are represented by int.
intlong
Specifies that enumerations occupy 8 bytes of
storage if the range of values in the
enumeration exceeds the limit for int.
Otherwise, the enumerations occupy 4 bytes of
storage and are represented by int.
1
Specifies that enumerations occupy 1 byte.
Type is signed or unsigned char.
2
Specifies that enumerations occupy 2 bytes.
Type is signed or unsigned short.
4
Specifies that enumerations occupy 4 bytes.
Type is signed or unsigned int.
8
Specifies that enumerations occupy 8 bytes.
Type is signed or unsigned long long in 32-bit
mode, and signed or unsigned long in 64-bit
mode.
Default: -qenum=intlong
-qfloat=<suboptions_list>
Specifies various floating-point suboptions. This
provides different strategies for speeding up or
improving the accuracy of floating-point
calculations. <suboptions_list> is a colon-
separated list of one or more of the following:
dfpemulate | nodfpemulate
Specifies whether decimal floating-point
computations are implemented in hardware
instructions or emulated in software by calls
to library functions.
-qdfp must be enabled for either suboption to
have any effect. nodfpemulate is only valid on
a system that supports decimal floating-point
instructions; that is, on AIX 5.3 and higher,
and with -qarch=pwr6 in effect. dfpemulate is
required for all other -qarch values.
Default: dfpemulate
fenv | nofenv
Specifies whether the code depends on the
hardware environment and whether to suppress
optimizations that could cause unexpected
results due to this dependency.
When nofenv is in effect, the compiler assumes
that the program does not depend on the
hardware environment, and that aggressive
compiler optimizations that change the
sequence of floating-point operations are
allowed to be performed. When fenv is in
effect, such optimizations are suppressed.
Default: nofenv
fltint | nofltint
Speeds up floating-point-to-integer
conversions by using faster inline code that
does not check for overflows. -qfloat=nofltint
checks floating-point-to-integer conversions
for out-of-range values.
Default:
o nofltint at -O2 optimization.
o fltint when -qnostrict or -O3 or higher
optimization level is in effect.
fold | nofold
Specifies that constant floating-point
expressions are to be evaluated at compile
time rather than at run time.
Default: fold
hscmplx | nohscmplx
Speeds up operations involving complex
division and complex absolute value. This
suboption, which provides a subset of the
optimizations of the hsflt suboption, is
preferred for complex calculations.
Default: nohscmplx
hsflt | nohsflt
The hsflt option speeds up calculations by
truncating instead of rounding computed values
to single precision before storing and on
conversions from floating-point to integer.
The nohsflt suboption specifies that single-
precision expressions are rounded after
expression evaluation and that floating-
point-to-integer conversions are to be checked
for out-of-range values.
Default: nohsflt
hssngl | nohssngl
The hssngl option specifies that single-
precision expressions are rounded only when
the results are stored into float memory
locations. The nohssngl option specifies that
single-precision expressions are rounded after
expression evaluation. Using hssngl can
improve runtime performance and is safer than
using -qfloat=hsflt.
Default: nohssngl
maf | nomaf
Makes floating-point calculations faster and
more accurate by using floating-point
multiply-add instructions where appropriate.
Default: maf
nans | nonans
Generates extra instructions to detect
signalling NaN when converting from single-
precision to double-precision at run time. The
option nonans specifies that this conversion
need not be detected.
Default: nonans
relax | norelax
Relaxes the strict IEEE-conformance slightly
for greater speed, typically by removing some
trivial, floating-point arithmetic operations,
such as adds and subtracts involving a zero on
the right.
Default: norelax
rndsngl | norndsngl
Specifies that the result of each single-
precision (float) operation is to be rounded
to single precision. -qfloat=norndsngl
specifies that rounding to single-precision
happens only after full expressions have been
evaluated.
Default: rndsngl
rngchk | norngchk
Specifying norngchk instructs the compiler to
skip range checking, allowing for increased
performance where division and sqrt operations
are performed repeatedly within a loop.
When rngchk is specified, range checking is
performed for input arguments for software
divide and inlined sqrt operations.
When -qstrict is active, the setting of this
option is forced to -qfloat=rngchk. When
-qnostrict is active, the setting of this
option is -qfloat=norngchk unless the
-qfloat=rngchk option is explicitly set by the
user.
Default: rngchk
rrm | norrm
Prevents floating-point optimizations that are
incompatible with runtime rounding to plus and
minus infinity modes.
Default: norrm
rsqrt | norsqrt
Specifies whether a sequence of code that
involves division by the result of a square
root can be replaced by calculating the
reciprocal of the square root and multiplying.
Allowing this replacement produces code that
runs faster. -qfloat=rsqrt has no effect
unless -qignerrno is also specified.
Default:
o norsqrt at -O2 optimization.
o rsqrt when when -qnostrict or -O3 or
higher optimization level is in effect.
single | nosingle
Allows single-precision arithmetic
instructions to be generated for single-
precision floating-point values. All PowerPC
processors support single-precision
instructions; however, if you wish to preserve
the behavior of applications compiled for
earlier architectures, in which all floating-
point arithmetic was performed in double-
precision and then truncated to single-
precision, you can use
-qfloat=nosingle:norndsngl. This suboption
provides computation precision results
compatible with those provided by the
deprecated options
-qarch=com|pwr|pwrx|pwr2|p2sc|601|602|603.
Default: single
spnans | nospnans
Detects signalling NaN on conversion from
single-precision to double-precision.
Default: nospnans
-qldbl128 | -qnoldbl128
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qlongdouble.
Default: -qnoldbl128
-qlongdouble | -qnolongdouble
Specifies whether to increase the long double size
from 64 to 128 bits.
This is equivalent to -qldbl128.
Default: -qnolongdouble
-qlonglit | -qnolonglit
Makes unsuffixed literals into the long type in
64-bit mode.
Default: -qnolonglit
-y<rounding_mode>
Specifies the compile-time rounding mode of
constant floating-point expressions.
For binary floating-point types, <rounding_mode> is
one of the following:
m = round toward minus infinity
n = round to the nearest representable number, ties
to even
p = round toward plus infinity
z = round toward zero
Default: -yn
For decimal floating-point types, <rounding_mode>
is one of the following:
di = round toward infinities (away from zero)
dm = round toward minus infinity
dn = round to the nearest representable number,
ties to even
dna = round to the nearest representable number,
ties away from zero
dnz = round to the nearest representable number,
ties toward zero
dp = round toward plus infinity
dz = round toward zero
Default: -ydn
Object code control options
-q32, -q64
Selects either 32-bit or 64-bit compilation mode.
Use the -q32 and -q64 options, along with the
-qarch and -qtune compiler options, to optimize the
output of the compiler to the architecture on which
that output will be used.
Default: -q32
-qalloca
(C) Substitutes inline code for calls to function
alloca, as if #pragma alloca directives were in the
source code.
-ma (C) Substitutes inline code for calls to function
alloca.
-qeh[={v5|v6}] | -qnoeh
(C++) Controls whether exception handling is
enabled in the module being compiled.
v5
Instructs the compiler to generate exception-
handling code that is compatible with
VisualAge C++ V5.0.
v6
Instructs the compiler to generate new
exception-handling code, compatible with
VisualAge C++ V6.0, that correctly handles
try-catch blocks nested within other catch
blocks.
Default: -qeh=v6
-qexpfile=<file_name>
Saves the exported symbols in the specified file
and is only used together with the -qmkshrobj
compiler option.
Refer to the -qmkshrobj option for more
information.
-qfuncsect[=[no]implicitstaticref] | -qnofuncsect
Places instructions for each function in a separate
object file control section or csect. -qfuncsect
can take the following suboption:
implicitstaticref | noimplicitstaticref
Specifies whether the compiler generates dummy
references to the static area. Specifying
-qfuncsect with no suboption implies
implicitstaticref. Specifying
noimplicitstaticref removes unnecessary
references to the static data area.
Default: -qnofuncsect
-qinlglue | -qnoinlglue
This option inlines glue code that optimizes
external function calls when compiling at -q64 and
-O2 and higher.
Default: -qnoinlglue
-qkeepinlines | -qnokeepinlines
(C++) Instructs the compiler to keep or discard
definitions for unreferenced extern inline
functions. Discarding these definitions can reduce
the size of the object files. The -qkeepinlines
setting keeps the definitions of unreferenced
extern inline functions.
Default: -qnokeepinlines
-qpic[={small|large}] | -qnopic
Generates position-independent code (pic). Specify
-qpic=small if the global offset table must be 64
Kb or smaller, or -qpic=large if it can be larger
than 64 Kb.
Default: -qpic=small
-qppline | -qnoppline
When used in conjunction with the -E or -P options,
enables or disables the generation of #line
directives in the preprocessed output.
Default:
o -qnoppline with -P
o -qppline with -E
-qpriority=<num>
(C++) Specifies the priority level for the
initialization of static objects, where <num> is
the initialization priority level assigned to the
static objects within a file, or the priority level
of a shared or non-shared file or library.
You can specify a priority level from -(2147483647
+ 1) (highest priority) to +2147483647 (lowest
priority).
Default: -qpriority=0
-qproto | -qnoproto
(C) Assumes that all functions are prototyped.
Asserts that procedure call points agree with their
declarations even if the procedure has not been
prototyped. This allows the caller to pass
floating-point arguments in floating-point
registers instead of general-purpose registers.
Default: -qnoproto
-r Produces a relocatable object. This permits the
output file to be produced even though it contains
unresolved symbols.
-qreserved_reg=<registers_list>
Indicates that the specified register(s) cannot be
used during the compilation, except as a stack
pointer, frame pointer or in a different fixed
role. <registers_list> is a colon-separated list of
registers.
-qro | -qnoro
Specifies the storage type for string literals and
puts string literals in read-only storage.
Default:
o -qnoro with cc and its derivatives.
o -qro otherwise.
-qroconst | -qnoroconst
Specifies the storage location for constant values.
Default:
o -qroconst with xlc, xlc++, xlC, c89 and c99
invocations commands.
o -qnoroconst with cc.
-qroptr | -qnoroptr
Specifies the storage location for constant
pointers.
Default: -qnoroptr
-qrtti=<option> | -qnortti
(C++) Generates runtime type identification (RTTI)
information for the typeid and dynamic_cast
operators. The suboptions are:
all
Generates the information needed for the RTTI
typeid and dynamic_cast operators.
type | typeinfo
Generates the information needed for the RTTI
typeid operator only.
dyna | dynamiccast
Generates the information needed for the RTTI
dynamic_cast operator only.
Default: -qnortti
-s Strips the symbol table, line number information,
and relocation information from the output file.
-qsaveopt | -qnosaveopt
Saves the command-line options used for compiling a
source file, the version and level of each compiler
component invoked during compilation, and other
information to the corresponding object file.
This option must be used with the -c option.
Default: -qnosaveopt
-qstatsym | -qnostatsym
Adds user-defined, non-external names that have a
persistent storage class (such as initialized and
uninitialized static variables) to the name list
(the symbol table of objects).
Default: -qnostatsym
-qtbtable=<suboption>
Generates a traceback table that contains
information about each function, including the type
of function as well as stack frame and register
information. The traceback table is placed in the
text segment at the end of its code. Suboptions
include:
none
No traceback table is generated.
small
A traceback table is generated with no name or
parameter information. This is the default
with optimization if -g is not specified.
full
A full traceback table is generated. This is
the default with -qnoopt or -g specified.
Default:
o -qtbtable=full when compiling non-optimized
(without -O) or for debugging (with -g).
o -qtbtable=small otherwise.
-qthreaded | -qnothreaded
Ensures that all optimizations will be thread-safe
for executing in a multi-threaded environment.
Default:
o -qthreaded when compiling invocation
commands ending in "_r" or "_r7".
o -qnothreaded otherwise.
-qtls[=<model>] | -qnotls
Specifies the thread-local storage model to be used
by the application, where <model> can be:
global-dynamic
This model is the most general, and can be
used for all thread-local variables.
local-dynamic
This model provides better performance than
the global-dynamic model, and can be used for
thread-local variables defined in
dynamically-loaded modules.
initial-exec
This model provides better performance than
the global-dynamic or local-dynamic models,
and can be used for thread-local variables
defined in dynamically-loaded modules,
provided that those modules are loaded at the
same time as the executable.
local-exec
This model provides the best performance of
all of the models, but can only be used when
all thread-local variables are defined and
referenced by the main executable.
Default:
o -qtls=unsupported
o -qtls=initial_exec if the -qnopic compiler
option is enabled.
o -qtls=global_dynamic if the -qpic compiler
option is enabled.
-qunique | -qnounique
(C++) Generates unique names for static
constructor/destructor file compilation units.
Default: -qnounique
-qweakexp | -qnoweakexp
When used with the -qmkshrobj or -G options,
includes or excludes global symbols marked as weak
from the export list generated when you create a
shared object.
Default: -qweakexp
-qweaksymbol | -qnoweaksymbol
Instructs the compiler to generate weak symbols.
Default: -qweaksymbol
-qxcall | -qnoxcall
Generates code to treat static functions within a
compilation unit as if they were external
functions.
Default: -qnoxcall
Error checking and debugging options
-# Traces the compilation and generates information on
the progress of the compilation without invoking
the preprocessor, compiler, or linkage editor.
-qcheck[=<suboptions_list>] | -qnocheck
Generates code that performs certain types of
runtime checking. If a violation is encountered, a
runtime exception is raised by sending a SIGTRAP
signal to the process. <suboptions_list> is a
colon-separated list of one or more of the
following:
all
Enables all suboptions.
bounds | nobounds
Performs runtime checking of addresses when
subscripting within an object of known size.
divzero | nodivzero
Performs runtime checking of integer division.
A trap will occur if an attempt is made to
divide by zero.
nullptr | nonullptr
Performs runtime checking of addresses
contained in pointer variables used to
reference storage.
Default: -qnocheck
-qdbxextra | -qnodbxextra
(C) Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for debugging. Use this option with the -g
option to produce additional debugging information
for use with a debugger.
Default: -qnodbxextra
-qdpcl | -qnodpcl
Generates symbols that can be used by tools based
on the Dynamic Probe Class Library (DPCL) to see
the structure of an executable file.
Default: -qnodpcl
-qextchk | -qnoextchk
Generates bind-time type-checking information and
checks for compile-time consistency.
Default: -qnoextchk
-qflttrap[=<suboptions_list>] | -qnoflttrap
Generates instructions to detect and trap runtime
floating-point exceptions. <suboptions_list> is a
colon-separated list of one or more of the
following suboptions:
enable
Enables trapping of the specified exceptions.
imprecise
Only checks for the specified exceptions on
subprogram entry and exit.
inexact
Detects floating-point inexact exceptions.
invalid
Detects floating-point invalid operation
exceptions.
nanq
Generates code to detect and trap NaNQ (Not a
Number Quiet) exceptions handled or generated
by floating-point operations.
overflow
Detects floating-point overflow.
underflow
Detects floating-point underflow.
zerodivide
Detects floating-point division by zero.
Default: -qnoflttrap
-qformat=<options_list> | -qnoformat
Warns of possible problems with string input and
output format specifications. Functions diagnosed
are printf, scanf, strftime, strfmon family
functions and functions marked with format
attributes. <options_list> is a comma-separated
list of one or more of the following suboptions:
all | noall
Turns on all format diagnostic messages.
exarg | noexarg
Warns if excess arguments appear in printf and
scanf style function calls.
nlt | nonlt
Warns if a format string is not a string
literal, unless the format function takes its
format arguments as a va_list.
sec | nosec
Warns of possible security problems in use of
format functions.
y2k | noy2k
Warns of strftime formats that produce a 2-
digit year.
zln | nozln
Warns of zero-length formats.
Default:
o -qnoformat, which is equivalent to
-qformat=noall.
o -qformat=all if -qformat is specified
without any suboptions.
-qfullpath | -qnofullpath
Records the full or absolute path names of source
and include files in object files compiled with
debugging information (when you use the -g option).
Default: -qnofullpath
-g Generates debug information for debugging tools.
-qdbg is the long form of -g.
-g implies the -Q! option.
-qhalt=<sev>
Stops the compiler after the first phase if the
severity level of errors detected equals or exceeds
the specified level, <sev>. The severity levels in
increasing order of severity are:
i = informational messages
w = warning messages
e = error messages (C only)
s = severe error messages
Default: -qhalt=s
-qhaltonmsg=<msgnum_list>
(C++) Stops the compiler after the compilation
phase where it encounters the specified message
number(s), where <msgnum_list> is a comma-separated
list of message numbers.
-qheapdebug | -qnoheapdebug
Enables debug versions of memory management
functions.
Default: -qnoheapdebug
-qinfo[=[<suboption>][<groups_list>]] | -qnoinfo
Produces or suppresses informational messages.
<groups_list> is a colon-separated list. If a
<groups_list> is specified along with a
<suboption>, a colon must separate them. The
suboptions are:
all
Enables all diagnostic messages for all
groups.
noall
Disables all diagnostic messages for all
groups.
private
Lists shared variables that are made private
to a parallel loop.
reduction
Lists variables that are recognized as
reduction variables inside a parallel loop.
<groups_list> turns on or off specific groups of
messages and is a colon-separated list of one or
more of the following:
c99 | noc99
(C) C code that might behave differently
between C89 and C99 language levels
cls | nocls
C++ classes
cmp | nocmp
Possible redundancies in unsigned comparisons
cnd | nocnd
Possible redundancies or problems in
conditional expressions
cns | nocns
Operations involving constants
cnv | nocnv
Conversions
dcl | nodcl
Consistency of declarations
eff | noeff
Statements and pragmas with no effect
enu | noenu
Consistency of enum variables
ext | noext
Unused external definitions
gen | nogen
General diagnostic messages
gnr | nognr
Generation of temporary variables
got | nogot
Use of goto statements
ini | noini
Possible problems with initialization
lan | nolan
Language level effects
obs | noobs
Obsolete features
ord | noord
Unspecified order of evaluation
par | nopar
Unused parameters
por | nopor
Non-portable language constructs
ppc | noppc
Possible problems with using the preprocessor
ppt | noppt
Trace of preprocessor actions
pro | nopro
Missing function prototypes
rea | norea
Code that cannot be reached
ret | noret
Consistency of return statements
trd | notrd
Possible truncation or loss of data or
precision
tru | notru
Variable names truncated by the compiler
trx | notrx
Rounding of hexadecimal floating-point
constants
uni | nouni
Uninitialized variables
upg | noupg
Upgrade issues from one release to the next
release
use | nouse
(C++) Unused auto and static variables
vft | novft
(C++) Generation of virtual function tables in
C++ programs
zea | nozea
Zero-extent arrays
Default:
(C) -qnoinfo
(C++) -qinfo=lan:trx
If -qinfo is specified without a suboption, the
default is -qinfo=all for C and -qinfo=all:noppt
for C++.
-qinitauto=<hex_value> | -qnoinitauto
Initializes each byte or word of storage for
automatic variables to the specified hexadecimal
value <hex_value>. This generates extra code and
should only be used for error determination.
Default: -qnoinitauto
-qkeepparm | -qnokeepparm
Ensures that function parameters are stored on the
stack even if the application is optimized. As a
result, parameters remain in the expected memory
location, providing access to the values of these
incoming parameters to tools such as debuggers.
Default: -qnokeepparm
-qlinedebug | -qnolinedebug
Generates only abbreviated line number and source
file name information for the debugger.
Default: -qnolinedebug
-qmaxerr=<num>[:<sev>] | -qnomaxerr
Instructs the compiler to halt compilation when the
specified number of errors of the specified
severity (by default, the value of -qhalt) or
greater is reached. <num> must be an integer. The
severity levels, <sev>, are:
i = informational
w = warning
e = error (C only)
s = severe error
Default: -qnomaxerr
-qoptdebug | -qnooptdebug
When used with high levels of optimization,
-qoptdebug produces source files containing
optimized pseudocode that can be read by a
debugger.
An output file with a .optdbg extension is created
for each input file compiled with -qoptdebug. You
can use the information contained in this file to
help you understand how your code actually behaves
under optimization.
Default: -qnooptdebug
-qsymtab={unref|static}
(C) Determines what types of information appear in
the symbol table. The suboptions are:
unref
Specifies that all typedef declarations,
struct, union, and enum type definitions are
included for processing by the debugger.
static
Adds user-defined, non-external names that
have a persistent storage class (such as
initialized and uninitialized static
variables) to the name list.
Default:
The default is to not add static variables to
the symbol table.
-qsyntaxonly
(C) Performs syntax checking without generating an
object file.
Default:
By default, source files are compiled and
linked to generate an executable file.
-qwarn64 | -qnowarn64
Enables checking for possible data conversion
problems between 32-bit and 64-bit compiler modes.
Default: -qnowarn64
Listing and messages options
-qattr[=full] | -qnoattr
Produces a compiler listing that includes an
attribute listing for all identifiers. If -qattr is
specified, the listing contains only those
identifiers that are used. If -qattr=full is
specified, the listing contains all names. If
-qnoattr is specified, no listing is produced.
Default: -qnoattr
-qdump_class_hierarchy
(C++) For each class object, this option dumps a
representation of its hierarchy and virtual
function table layout to a file. The file name is
created by appending ".class" to the source file
name.
-qflag=<listing_severity>:<terminal_severity>
Defines the minimum severity level of diagnostic
messages to be written to the listing file and to
the user terminal. <listing_severity> is the
minimum level for the listing file, and
<terminal_severity> is the minimum level for the
terminal. The message severity levels are:
i = informational messages
w = warning messages
e = error, severe error and unrecoverable error
messages (C only)
s = severe error and unrecoverable error messages
(C)
s = severe error messages (C++)
Default: -qflag=i:i
-qlist[={offset|nooffset}] | -qnolist
Produces a compiler listing that includes an object
listing. You can use the object listing to help
understand the performance characteristics of the
generated code and to diagnose execution problems.
offset | nooffset
Changes the offset of the PDEF header from
00000 to the offset of the start of the text
area.
Specifying -qlist without the suboption is
equivalent to list=nooffset.
Default: -qnolist
-qlistopt | -qnolistopt
Produces a compiler listing that displays all the
options that were in effect when the compiler was
invoked.
Default: -qnolistopt
-qphsinfo | -qnophsinfo
Reports the time taken in each compilation phase.
Phase information is sent to standard output. The
output takes the form <number1>/<number2> for each
phase where <number1> represents the CPU time used
by the compiler and <number2> represents the total
of the compiler time and the time that the CPU
spends handling system calls.
Default: -qnophsinfo
-qprint | -qnoprint
Enables or suppresses listings. Specifying
-qnoprint overrides all listing-producing options,
regardless of where they are specified, to suppress
listings.
Default: -qprint
-qreport | -qnoreport
Instructs the compiler to produce transformation
reports that show how program loops are optimized.
The transformation reports are included as part of
the compiler listing. This option requires -qhot or
-qsmp in order to have effect.
When used with -qipa=clonearch, -qreport produces
transformation reports on the procedures that are
cloned for the architectures specified by the
option.
Default: -qnoreport
-qshowinc[=<types_list>] | -qnoshowinc
Used with -qsource to selectively show user header
files (includes using " ") or system header files
(includes using < >) in the program source listing.
<types_list> is a colon-separated list of one or
more of the following types:
usr | nousr
Specifies whether to show user include files.
sys | nosys
Specifies whether to show system include
files.
all
Shows both user and system include files.
Default: -qnoshowinc
-qsource | -qnosource
Produces a compiler listing that includes source
code.
Default: -qnosource
-qsrcmsg | -qnosrcmsg
(C) Adds the corresponding source code lines to the
diagnostic messages in the stderr file.
Default: -qnosrcmsg
-qsuppress=<msg_id> | -qnosuppress=[<msg_id>]
Prevents the specified compiler or driver
informational or warning messages from being
displayed or added to the listings, where <msg_id>
is a colon-separated list of message numbers to
suppress or display.
NOTE: In (C++), -qnosuppress requires that you
supply message number(s), and in (C), -qnosuppress
does not allow you to supply any.
Default: -qnosuppress
-v Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a comma-separated list.
-V Instructs the compiler to report information on the
progress of the compilation, and names the programs
being invoked within the compiler and the options
being specified to each program. Information is
displayed in a space-separated list.
-qversion[=verbose]
Displays the official compiler product name and the
compiler version found on the system.
verbose
Additionally displays information about the
version, release, and level of each compiler
component installed.
-w Suppresses informational, language-level and
warning messages.
Specifying this option is equivalent to specifying
-qflag=e:e in C or -qflag=s:s in C++.
-qxref[=full] | -qnoxref
Specifies whether to produce a compiler listing
that includes a cross-reference listing of all
identifiers. Specifying -qxref will report only
identifiers that are used, -qxref=full reports all
identifiers in the program, and -qnoxref does not
report any identifiers in the program. The
-qnoprint option overrides this option.
Default: -qnoxref
Optimization and tuning options
-qaggrcopy={overlap|nooverlap}
Enables destructive copy operations for structures
and unions.
overlap | nooverlap
Enables or disables optimizations for
structure and union assignments. nooverlap
assumes that the source and destination for
structure and union assignments do not
overlap, allowing the compiler to generate
faster code. overlap inhibits these
optimizations.
Default: -qaggrcopy=nooverlap
-qalias=<suboptions_list>
Specifies the aliasing assertions to be applied to
your compilation unit. <suboptions_list> is a
colon-separated list of the following options:
addrtaken | noaddrtaken
Variables are disjoint from pointers unless
their address is taken.
allptrs | noallptrs
Pointers are never aliased if allptrs is
specified, but may be aliased if noallptrs is
specified. -qalias=allptrs implies
-qalias=typeptr.
ansi | noansi
If ansi is specified, type-based aliasing is
used during optimization, which restricts the
lvalues that can be safely used to access a
data object. This option has no effect unless
you also specify the -O option.
Specifying -qalias=noansi turns off type-based
aliasing completely.
global | noglobal
When global is in effect, type-based aliasing
rules are enabled during IPA link-time
optimization across compilation units. Both
-qipa and -qalias=ansi must be enabled for
-qalias=global to have an effect.
Specifying noglobal disables type-based
aliasing rules across compilation units.
restrict | norestrict
When restrict is in effect, optimizations for
pointers qualified with the restrict keyword
are enabled. Specifying norestrict disables
optimizations for restrict-qualified pointers.
-qalias=restrict is independent from other
-qalias suboptions.
typeptr | notypeptr
Pointers to different types are never aliased
if typeptr is specified, but may be aliased if
notypeptr is specified.
Default:
(C++)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
(C)
-qalias=noaddrtaken:noallptrs:ansi:global:restrict:notypeptr
for all invocation commands except cc.
-qalias=noaddrtaken:noallptrs:noansi:global:restrict:notypeptr
for the cc invocation command.
-qarch=<suboption>
Specifies the general processor architecture for
which the code (instructions) should be generated.
In general, the -qarch option allows you to target
a specific architecture for the compilation. For
any given -qarch setting, the compiler defaults to
a specific, matching -qtune setting, which can
provide additional performance improvements. The
suboptions are:
auto
Automatically detects the specific
architecture of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
403
Produces object code containing instructions
that will run on the PowerPC 403 hardware
platform.
604
Produces an object that contains instructions
that run on PowerPC 604 systems.
pwr3
Produces an object that contains instructions
that run on the POWER3 hardware platforms.
pwr4
Produces an object that contains instructions
that run on the POWER4 hardware platforms.
pwr5
Produces an object that contains instructions
that run on the POWER5 hardware platforms.
pwr5x
Produces an object that contains instructions
that run on the POWER5+ hardware platforms.
pwr6
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 architected mode. If you
would like support for decimal floating-point
instructions, be sure to specify this
suboption during compilation.
pwr6e
Produces object code containing instructions
that will run on the POWER6 hardware platforms
running in POWER6 raw mode.
ppc
Produces an object that contains instructions
that run on any of the 32-bit PowerPC hardware
platforms. Using -q64 with ppc upgrades the
architecture to ppc64.
ppc64
Produces object code that will run on any 64-
bit PowerPC hardware platform. When compiled
in 32-bit mode, the resulting object code may
include instructions that are not recognized
or behave differently when run on 32-bit
PowerPC platforms.
ppcgr
In 32-bit mode, produces object code
containing optional graphics instructions for
PowerPC hardware platforms.
In 64-bit mode, produces object code
containing optional graphics instructions that
will run on 64-bit PowerPC platforms, but not
on 32-bit-only platforms. Using -q64 with
ppcgr upgrades the architecture to ppc64gr.
ppc64gr
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics instructions.
ppc64grsq
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional graphics and square root
instructions.
ppc64v
Produces object code that will run on any 64-
bit PowerPC hardware platform that supports
the optional vector instructions, such as a
PowerPC 970.
ppc970
Generates instructions specific to PowerPC 970
processors.
rs64a
Produces an object that contains instructions
that run on an RS64I hardware platform.
rs64b
Produces an object that contains instructions
that run on an RS64II hardware platform.
rs64c
Produces an object that contains instructions
that run on an RS64III hardware platform.
Default: -qarch=ppc
-qcache=<suboptions_list>
Describes the cache configuration for a specific
target execution machine, where <suboptions_list>
is a colon-separated list of one or more of the
following suboptions:
assoc=<number>
Specifies the set associativity of the cache,
where <number> is one of the following:
0 Direct-mapped cache
1 Fully associative cache
(number > 1) n-way set associative cache
auto
Automatically detects the specific cache
configuration of the compiling machine. It
assumes that the execution environment will be
the same as the compilation environment.
cost=<cycles>
Specifies the performance penalty, in CPU
cycles, resulting from a cache miss.
level=<level>
Specifies which level of cache is affected,
where level is one of the following::
1 Basic cache
2 Level-2 cache
3 Table Lookaside Buffer (TLB)
If a machine has more than one level of cache,
use a separate -qcache option.
line=<bytes>
Specifies the line size of the cache.
size=<Kbytes>
Specifies the total size of the cache.
type=<cache_type>
The settings apply to the specified type of
cache, where <cache_type> is one of the
following:
C or c = Combined data and instruction
cache
D or d = Data cache
I or i = Instruction cache
Default:
The -qtune setting determines the optimal
default -qcache settings for most typical
compilations. -O4, -O5, or -qipa must be
specified with the -qcache option.
-qcompact | -qnocompact
Reduces code size where possible, at the expense of
execution speed. Code size is reduced by inhibiting
optimizations that replicate or expand code inline.
This option takes effect only if -O2 or higher is
also used.
Default: -qnocompact
-qdataimported[=<variable_names>]
Specifies variables that the compiler can assume
are imported. <variable_names> is a colon-separated
list of variables. Specifying -qdataimported
without <variable_names> instructs the compiler to
assume that all variables are imported. This is
equivalent to specifying -qnotocdata.
(C++) Variable names must be specified using their
mangled names.
-qdatalocal[=<variable_names>]
Specifies variables that the compiler can assume
are local. <variable_names> is a colon-separated
list of variables. Specifying -qdatalocal with no
variables instructs the compiler to assume that all
variables are local. This is equivalent to
specifying -qtocdata.
(C++) Variable names must be specified using their
mangled names.
-qtocdata | -qnotocdata
Marks all data as local.
Default: -qnotocdata (marks all data as imported)
-qdirectstorage | -qnodirectstorage
Informs the compiler that write-through-enabled or
cache-inhibited storage may be referenced.
Default: -qnodirectstorage
-qenablevmx | -qnoenablevmx
Enables the generation of vector instructions for
processors that support them. These instructions
can offer higher performance when used with
algorithmic-intensive tasks such as multimedia
applications.
For -qenablevmx to have effect, the architecture
specified by the -qarch option must support vector
instructions.
If -qnoenablevmx is in effect, -qaltivec,
-qvecnvol, and -qhot=simd cannot be used.
Default: -qnoenablevmx
-qfdpr | -qnofdpr
Collects information about programs for use with
the IBM Feedback Directed Program Restructuring
(FDPR) performance-tuning utility.
Default: -qnofdpr
-qhot[=<suboption>] | -qnohot
Specifies whether or not to perform high-order
transformations during optimization. The suboptions
are:
arraypad[=<number>] | noarraypad
When <number> is specified, the compiler will
pad every array in the code. The pad amount
must be a positive integer value. Otherwise,
the compiler will pad any arrays where it
infers that there may be a benefit.
level={0|1}
Specifies the level of high-order
transformation to perform during compilation.
0
The compiler performs a subset of the
high-order transformations. Some of these
include early distribution, loop
interchange, and loop tiling, as
examples. Optimization level -O3 implies
-qhot=level=0.
1
At level=1, full high-order
transformation is performed.
-qhot=level=1 is equivalent to -qhot and
the compiler options that imply -qhot
also imply -qhot=level=1, unless
-qhot=level=0 is explicitly specified.
simd | nosimd
Converts certain operations in a loop that
apply to successive elements of an array into
a vector instruction. This call calculates
several results at one time, which is faster
than calculating each result sequentially. If
you specify -qhot=nosimd, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with vector
instructions. To enable -qhot=simd, you must
specify an architecture that supports vector
instructions.
vector | novector
When specified with -qnostrict and -qignerrno,
or an optimization level of -O3 or higher
(otherwise -qhot=vector has no effect), the
compiler converts certain operations in a loop
that apply to successive elements of an array
into a call to a routine in the Mathematical
Acceleration Subsystem (MASS) library, part of
the libxlopt.a library.
If you specify -qhot=novector, the compiler
performs optimizations on loops and arrays,
but avoids replacing certain code with calls
to vector library routines.
Specifying -qhot without suboptions implies
-qhot=nosimd, -qhot=noarraypad, -qhot=vector and
-qhot=level=1. The -qhot option is also implied by
-qsmp, -O4, and -O5.
Default: -qnohot
-qignerrno | -qnoignerrno
Allows the compiler to perform optimizations that
assume errno is not modified by system calls.
Default: -qnoignerrno
-qipa[=<suboptions_list>] | -qnoipa
Turns on or customizes a class of optimizations
known as interprocedural analysis (IPA).
<suboptions_list> is a colon-separated list of the
following suboptions:
clonearch=<arch_name> | noclonearch
Specifies the architectures for which multiple
versions of the same instruction set are
produced, where <arch_name> is a comma-
separated list of architecture names. Use this
suboption if you require optimal performance
on multiple differing machines running the
same copy of your application.
cloneproc=<function_name> |
nocloneproc=<function_name>
Specifies the name of the functions to clone
for the architectures specified by the
clonearch suboption, where <function_name> is
a comma-separated list of function names.
exits=<procedures>
Specifies names of functions which represent
program exits. <procedures> is a comma-
separated list of procedures.
infrequentlabel=<procedures>
Specifies a comma-separated list of user-
defined labels that are likely to be called
infrequently during a program run.
inline[=<suboption>]
Specifying 'inline' with no suboption asserts
that all appropriate procedures will be
inlined. <suboption> can be one of the
following:
auto|noauto
Enables or disables automatic function
inlining by the high-level optimizer.
When -qipa=inline=auto is in effect, the
compiler considers all functions that are
under the maximum size limit (see below)
for inlining. When -qipa=inline=noauto is
in effect, only procedures listed in the
<procedures> suboption are considered for
inlining.
<procedures>
Specifies a comma-separated list of
procedures to attempt to inline.
limit=<num>
Specifies a limit on the size of a
calling function after inlining. This
only takes effect when inline=auto is on.
If you do not specify a value for <num>,
<num> is 8192 by default.
threshold=<num>
Specifies the upper size limit on
procedures to inline. This only takes
effect when inline=auto is on. If you do
not specify a value for <num>, <num> is
1024 by default.
Default: auto
noinline[=<procedures>]
Specifies a comma-separated list of procedures
which are not to be inlined. Specifying
noinline without <procedures>, asserts that no
procedures are to be inlined.
isolated=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and do not
directly refer to any global variable.
level=<level>
Determines the amount of IPA analysis and
optimization performed, where <level> can be
equal to:
0
Performs only minimal interprocedural
analysis and optimization.
1
Turns on inlining, limited alias
analysis, and limited call-site
tailoring.
2
Full interprocedural data flow and alias
analysis.
Default: 1
list[={<file_name>|short|long}]
Specifies an output listing file name during
the link phase. The default name is "a.lst".
Specifying 'long' or 'short' can be used to
request more or less information in the
listing file to determine which listing
sections will be included.
Default: short
lowfreq=<procedures>
Specifies a comma-separated list of procedures
that are likely to be called infrequently
during the course of a typical program run.
malloc16 | nomalloc16
Informs the compiler that the dynamic memory
allocation routines will return 16-byte
aligned memory addresses. The compiler can
then optimize the code based on that
assertion.
Default: -qipa=malloc16
missing={unknown|safe|isolated|pure}
Specifies the default assumption for
procedures not compiled with -qipa.
unknown
Greatly restricts the amount of
interprocedural optimization for calls to
unknown functions.
safe
Functions which do not indirectly call a
visible (not missing) function either
through direct call or function pointer.
isolated
Functions which do not directly reference
global variables accessible to visible
functions.
pure
Functions which are safe and isolated and
which do not indirectly alter storage
accessible to functions.
Default: missing=unknown
object | noobject
Specifies whether to include standard object
code in the object files. Specifying
'noobject' can substantially reduce overall
compile time by not generating object code
during the first IPA phase.
partition={small|medium|large}
Specifies the size of program sections that
are analyzed together. Larger partitions may
produce better analysis but require more
storage.
Default: partition=medium
pure=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that are
"isolated", "safe", and do not modify any data
objects that are visible to the caller.
safe=<procedures>
Specifies a comma-separated list of procedures
not compiled with -qipa and that do not call
any other part of the program.
threads[=<suboption>] | nothreads
Runs portions of the IPA optimization process
during pass 2 in parallel threads, which can
speed up the linking process on multi-
processor systems. <suboption> can be one of
the following:
auto | noauto
When auto is in effect, the compiler
selects a number of threads heuristically
based on machine load. When noauto is in
effect, the compiler spawns one thread
per machine processor.
<number>
Instructs the compiler to use a specific
number of threads. <number> can be any
integer value in the range of 1 to 32767.
However, <number> is effectively limited
to the number of processors available on
your system.
Specifying threads with no suboptions implies
threads=auto.
Default: -qipa=threads
unknown=<procedures>
Specifies a comma-separated list of procedures
that are not compiled with -qipa and that may
update global variables and dummy arguments
and call other parts of the program compiled
with -qipa.
<file_name>
Specifies the name of a file that contains
suboption information in a special format.
Regular expressions are supported when specifying
procedure names for these suboptions:
cloneproc, nocloneproc, exits, inline, noinline,
isolated, lowfreq, pure, safe, unknown.
(C++) In C++ programs, procedure names must be
given in mangled form.
Default:
-qnoipa
-qipa=inline=auto:level=1:missing=unknown:partition=medium:threads=auto
when -O4 is in effect.
-qipa=inline=auto:level=2:missing=unknown:partition=medium:threads=auto
when -O5 is in effect.
-qipa=inline=auto:level=0:missing=unknown:partition=medium:threads=auto
when -qpdf1 or -qpdf2 is in effect.
-qisolated_call=<procedures>
Informs the compiler that specific functions do not
have or rely on side effects, other than those
implied by their parameters. <procedures> is a
colon-separated list of function names.
-qlargepage | -qnolargepage
Indicates that a program, designed to execute in a
large page memory environment, can take advantage
of large 16 MB pages provided on POWER4 and later
systems.
Default: -qnolargepage
-qlibansi | -qnolibansi
Assumes that all functions with the name of an ANSI
C defined library function are, in fact, the
library functions.
Default: -qnolibansi
-qmaxmem=<size>
Limits the amount of memory used by certain
memory-intensive optimizations to <size> kilobytes.
When <size> is -1, the optimizer will use as much
memory as needed.
Default:
o -qmaxmem=8192 when -O2 level optimization is
set.
o -qmaxmem=-1 when -O3 level or greater
optimization is set.
-qminimaltoc | -qnominimaltoc
Avoids Table of Contents (TOC) overflow conditions
by placing TOC entries into a separate data section
for each object file. By default, the compiler will
allocate at least one TOC entry for each unique
non-automatic variable reference in your program.
Default: -qnominimaltoc
-O[<level>]
Optimizes code at a choice of levels during
compilation. This is equivalent to
-qoptimize[=<level>]. <level> can be:
0
Performs only quick local optimizations such
as constant folding and elimination of local
common subexpressions.
2
Performs optimizations that the compiler
developers considered the best combination for
compilation speed and runtime performance. The
optimizations may change from product release
to release.
3
Performs some memory and compile-time
intensive optimizations in addition to those
executed with -O2. The -O3 specific
optimizations have the potential to alter the
semantics of a program. The compiler guards
against these optimizations at -O2 and the
option -qstrict is provided at -O3 to turn off
these aggressive optimizations. Specifying -O3
implies -qhot=level=0.
4
This option is the same as -O3, but also:
o sets the -qarch and -qtune options to the
architecture of the compiling machine.
o sets the -qcache option most appropriate
to the characteristics of the compiling
machine.
5
Equivalent to -O4 -qipa=level=2.
Specifying -O with no <level> is equivalent to
specifying -O2.
Default: -O0
-qoptimize[=<level>] | -qnooptimize
The long form of the -O option. -qoptimize=<level>
is equivalent to -O<level>. See the -O option.
Default: -qnooptimize
-p, -pg, -qprofile={-p|-pg}
Sets up the object files produced by the compiler
for profiling.
-pg is like -p, but it produces more extensive
statistics.
-qpdf1[=pdfname=<file_path] | -qnopdf1
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf1 produces an object that is instrumented to
collect runtime execution information. This is
phase 1 of the profile-directed feedback
optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf1
-qpdf2[=pdfname=<file_path>] | -qnopdf2
Tunes optimizations through profile-directed
feedback (PDF), where results from sample program
execution are used to improve optimization near
conditional branches and in frequently executed
code sections.
Used with a minimum optimization level of -O2,
-qpdf2 tunes application performance using the data
generated by running a program compiled with
-qpdf1. This is phase 2 of the profile-directed
feedback optimization process.
pdfname=<file_path>
Specifies the location and name of the profile
data file containing the PDF profiling
information.
Default:
If you do not specify <file_path>, the
default file name is ._pdf and the file is
saved in the current working directory, or
in the directory named by the PDFDIR
environment variable, if it is set.
Default: -qnopdf2
-qprefetch | -qnoprefetch
Enables generation of prefetching instructions such
as dcbt and dcbz in compiled code.
Default: -qprefetch
-qprocimported[=<procedures>] | -qnoprocimported
Specifies functions that the compiler can assume
are imported. Imported functions are dynamically
bound with a shared portion of a library. Code
generated for calls to functions marked as imported
may be larger, but is faster than the default code
sequence generated for functions marked as unknown.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qproclocal[=<procedures>] | -qnoproclocal
Specifies functions that the compiler can assume
are local. Local functions are statically bound
with the functions that call them; smaller, faster
code is generated for calls to such functions.
<procedures> is a colon-separated list of function
identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-qprocunknown[=<procedures>] | -qnoprocunknown
Specifies functions that the compiler can assume
are unknown. Unknown functions are resolved to
either statically or dynamically bound objects
during linking. <procedures> is a colon-separated
list of function identifiers.
(C++) In C++ programs, function names must be
specified using their mangled names.
-Q[<suboption>]
(C++) Instructs the compiler to try to inline
functions. Inlining is performed if possible but,
depending on which optimizations are performed,
some functions might not be inlined.
(C) Specifies which specific functions the compiler
should attempt to inline. You must specify at least
an optimization level of -O2 for inlining to take
effect with -Q. To turn on inline expansion for
calls to procedures in different scopes, you must
also use the -qipa=inline.
(C++) In the C++ language, this option can take the
form:
-Q
Compiler inlines all functions that it can.
-Q!
Compiler does not inline any functions.
(C) In the C language, this option can take the
form:
-Q
Attempts to inline all appropriate functions
with 20 executable source statements or fewer,
subject to the setting of any of the
suboptions to the -Q option. If -Q is
specified last, all functions are inlined.
-Q!
Does not inline any functions. If -Q! is
specified last, no functions are inlined.
-Q-<names>
Does not inline functions listed in <names>,
where <names> is a colon-separated list. All
other appropriate functions are inlined. The
option implies -Q.
-Q+<names>
Attempts to inline the functions listed in
<names>, where <names> is a colon-separated
list. All other appropriate functions are
inlined.
-Q=<threshold>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <threshold> for
the function to be inlined.
Default: -Q!
-qinline[<suboption>] | -qnoinline
Specifies whether to attempt to inline functions
instead of generating calls to a function.
(C++) In C++, you cannot specify any suboptions.
-qinline specifies that all appropriate functions
should be inlined, and -qnoinline specifies that no
functions should be inlined.
(C) In C, this option can take the following forms:
-qinline
The compiler attempts to inline all
appropriate functions with 20 executable
source statements or fewer, subject to any
other settings of the suboptions to the
-qinline option.
-qinline+<procedures>
Attempts to inline the functions listed in
<procedures> and any other appropriate
functions, where <procedures> is a colon-
separated list.
-qinline-<procedures>
Specifies that functions listed in
<procedures> do not get inlined, where
<procedures> is a colon-separated list.
-qnoinline
Does not inline any functions.
-qinline=threshold=<num>
Sets a size limit on the functions to be
inlined. The number of executable statements
must be less than or equal to <num> for the
function to be inlined. <num> must be a
positive integer.
Default:
The default is to treat inline specifications
as a hint to the compiler, and the result
depends on other options that you select. If
you specify the -g option (to generate debug
information), inlining may be affected.
-qshowpdf | -qnoshowpdf
Used with -qpdf1 and a minimum optimization level
of -O2 to add additional call and block count
profiling information to an executable.
Default: -qnoshowpdf
-qsmallstack | -qnosmallstack
Reduces the size of the stack frame. This option is
only valid when used together with IPA (-qipa, -O4,
-O5 compiler options).
Default: -qnosmallstack
-qsmp[=<suboptions_list>] | -qnosmp
Enables parallelization of program code.
<suboptions_list> is a colon-separated list of one
or more of the following suboptions:
auto | noauto
Enables automatic parallelization and
optimization. If noauto is specified,
automatic parallelization of program code is
disabled; only program code explicitly
parallelized with OpenMP directives is
optimized.
Default: auto
nested_par | nonested_par
If nested_par is specified, prescriptive
nested parallel constructs are parallelized by
the compiler.
Default: nonested_par
omp | noomp
Enables strict OpenMP compliance. Only OpenMP
parallelization pragmas are recognized.
Default: noomp
opt | noopt
Enables automatic parallelization but disables
optimization of parallelized program code. If
noopt is specified, optimization of
parallelized program code is disabled.
Default: opt
rec_locks | norec_locks
Specifies whether to use recursive locks.
Default: norec_locks
schedule=<type>
Specifies what kinds of scheduling algorithms
and chunking are used for loops to which no
other scheduling algorithm has been explicitly
assigned in the source code. <type> can be:
o affinity[=<num>]
o dynamic[=<num>]
o guided[=<num>]
o runtime
o static[=<num>],
where <num> is the number of loop iterations.
Default: schedule=runtime
stackcheck | nostackcheck
Causes the compiler to check for stack
overflow by slave threads at run time, and
issue a warning if the remaining stack size is
less than the number of bytes specified by the
stackcheck option of the XLSMPOPTS environment
variable. This suboption is intended for
debugging purposes, and only takes effect when
XLSMPOPTS=stackcheck is also set.
Default: nostackcheck
threshold[=<num>]
When -qsmp=auto is in effect, controls the
amount of automatic loop parallelization that
occurs. The value of <num> represents the
lower limit allowed for parallelization of a
loop, based on the level of "work" present in
a loop.
Default:
<num> must be a positive integer of 0 or
greater. If you specify threshold with no
suboption, the program uses a default value
of 100.
Specifying -qsmp without suboptions is equivalent
to
-qsmp=auto:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100
or
-qsmp=opt:explicit:noomp:norec_locks:nonested_par:schedule=runtime:nostackcheck:threshold=100.
Default: -qnosmp
-qspeculateabsolutes | -qnospeculateabsolutes
Works with the -qtocmerge -bl:file for non-IPA
links and with the -bl:file for IPA links to
disable speculation at absolute addresses.
The bl:file is necessary for the compiler to know
which addresses are absolutes.
Default: -qspeculateabsolutes
-qstrict | -qnostrict
Turns off aggressive optimizations which have the
potential to alter the semantics of your program.
-qstrict sets -qfloat=nofltint:norsqrt. -qnostrict
sets -qfloat=rsqrt. This option is only valid with
-O2 or higher optimization levels.
Default:
o -qnostrict at -O3 or higher.
o -qstrict otherwise.
-qstrict_induction | -qnostrict_induction
Turns off loop induction variable optimizations
that have the potential to alter the semantics of
your program.
Default:
o -qnostrict_induction at -O2 or higher.
o -qstrict_induction otherwise.
-qtocmerge | -qnotocmerge
Enables TOC merging to reduce TOC pointer loads and
improves the scheduling of external loads. Reads
from the file specified in -bImportfile linker
option and merges the address information to access
ranges of external addresses using a single table
of contents entry.
Default: -qnotocmerge
-qtune=<suboption>
Specifies the architecture system for which the
executable program is optimized.
<suboption> must be one of the following:
403
Generates object code optimized for all the
PowerPC 403 processors.
604
Generates object code optimized for all the
PowerPC 604 processors.
auto
Generates object code optimized for the
hardware platform on which the program is
compiled.
balanced
Optimizations are tuned across a selected
range of recent hardware.
ppc970
Generates instructions specific to PowerPC 970
hardware platforms.
pwr3
Generates object code optimized for the POWER3
hardware platforms.
pwr4
Generates object code optimized for the POWER4
hardware platforms.
pwr5
Generates object code optimized for the POWER5
hardware platforms.
pwr6
Generates object code optimized for the POWER6
hardware platforms.
rs64a
Generates object code optimized for the RS64I
processor.
rs64b
Generates object code optimized for the RS64II
processor.
rs64c
Generates object code optimized for the
RS64III processor.
Default:
-qtune=balanced when the default -qarch
setting is in effect. Otherwise, the default
depends on the effective -qarch setting.
-qunroll[=<suboption>] | -qnounroll
Unrolls inner loops in the program. This can help
improve program performance. The suboptions are:
auto
Instructs the compiler to perform basic loop
unrolling.
yes
Instructs the compiler to search for more
opportunities for loop unrolling than that
performed with auto. In general, this
suboption is more likely to increase compile
time or program size than auto processing, but
it may also improve your application's
performance.
no
Instructs the compiler to not unroll loops.
Default: -qunroll=auto
If -qunroll is specified with no suboptions, the
compiler assumes -qunroll=yes. -qnounroll is
equivalent to -qunroll=no.
-qunwind | -qnounwind
Informs the compiler that the stack can be unwound
while a routine in the compilation is active.
Specifying -qnounwind can improve the optimization
of non-volatile register saves and restores.
Default: -qunwind
Linking options
-b{dynamic|shared|static}
Controls how shared objects are processed by the
linkage editor. The suboptions are:
dynamic, shared
Causes the linker to process subsequent shared
objects in dynamic mode. In dynamic mode,
shared objects are not statically included in
the output file. Instead, the shared objects
are listed in the loader section of the output
file.
-bdynamic and -bshared are synonymous.
static
Causes the linker to process subsequent shared
objects in static mode. In static mode, shared
objects are statically linked in the output
file.
Default: -bshared
-bmaxdata:<bytes>
Specifies the maximum amount of space to reserve
for the program data segment for programs where the
size of these regions is a constraint. Combined
data space is slightly less than 256MB, or lower,
depending on the limits for the user ID.
Default: -bmaxdata:0
-brtl Controls runtime linking for the output file.
-qcrt | -qnocrt
Instructs the linker to use the standard system
startup files at link time.
Default: -qcrt
-e <name>
Sets the entry name for a shared executable and is
only used together with -qmkshrobj.
-f<file_name>
Names a file to store a list of object files for
the compiler to pass to the linker. The <file_name>
file should contain only the names of object files.
There should be one object file per line.
-L<dir>
Searches the path directory for library files
specified by the -l<key> option.
Default:
The default is to search only the standard
directories.
-l<key>
Searches the file lib<key>.so and then lib<key>.a
for dynamic linking, or only lib<key>.a for static
linking.
Default:
The default is to search only some of the
compiler runtime libraries.
-qlib | -qnolib
Specifies whether the compiler should use the
standard system libraries at link time. -qnolib is
similar to the gcc option nostdlib; the driver will
not pass the standard system startup files or
libraries when linking.
Default: -qlib
-qtwolink | -qnotwolink
(C++) Links twice in order to minimize the number
of static constructors included from libraries and
object files.
Default: -qnotwolink
-Z<prefix>
This linker option specifies a prefix for the
library search path. This is useful when developing
a new version of a library.
Portability and migration options
-qalign=<suboption>
Specifies what aggregate alignment rules the
compiler uses for file compilation, where the
alignment suboptions are:
bit_packed
The compiler uses the bit_packed alignment
rules.
full
The compiler uses the RISC System/6000
alignment rules. This is the same as power.
mac68k
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the twobyte
suboption.
natural
The compiler maps structure members to their
natural boundaries.
packed
The compiler uses the packed alignment rules.
power
The compiler uses the RISC System/6000
alignment rules.
twobyte
The compiler uses the Macintosh alignment
rules. This suboption is valid only for 32-bit
compilations. It is the same as the mac68k
suboption.
Default: -qalign=full
-qalignrulefor=power=[no]typedefrespectsrule
(C++) When used with -qalign=power, determines
whether a 4-byte alignment ceiling is applied to
non-first members of structures that are of type
typedef to array of element type that exceeds the
alignment ceiling.
typedefrespectsrule | notypedefrespectsrule
When typedefrespectsrule is in effect, the
member follows the normal alignment rules for
-qalign=power. This suboption provides
compatibility with code compiled with
-qalign=power with XL C++ V6.0 and earlier.
When notypedefrespectsrule is in effect, a
member that exceeds the alignment ceiling of 4
bytes is aligned on 4-byte boundaries. This
suboption provides compatibility with code
compiled with -qalign=power with XL C++ V7.0
and V8.0.
Default: -qalignrulefor=power=typedefrespectsrule
-qgenproto[=parmnames] | -qnogenproto
(C) Generates ANSI prototypes from K&R function
definitions and displays them on standard output.
Specifying -qgenproto without '=parmnames' will
cause prototypes to be generated without parameter
names.
Default: -qnogenproto
-qnamemangling=<scheme>
(C++) Chooses the name mangling scheme for external
symbol names generated from C++ source code. The
<scheme> can be:
ansi
Fully supports the most recent language
features of Standard C++.
v9
Compatible with XL C++ V9.0.
v8
Compatible with XL C++ V8.0.
v7
Compatible with XL C++ V7.0.
v6
Compatible with VisualAge C++ V6.0.
v5
The scheme for VisualAge C++ V5.0.
v4
The scheme for VisualAge C++ V4.0.
v3
The scheme for VisualAge C++ releases before
V4.0.
compat
Same as v3.
Default: -qnamemangling=ansi
-qobjmodel={classic|ibm}
(C++) Specifies the object model.
classic
This object model is compatible with version
3.6 of the IBM C and C++ compilers.
ibm
Uses the object model introduced with version
5.0 of VisualAge C++ for AIX. Objects compiled
with this object model will use less memory
and have better performance for deep
inheritance with virtual bases.
Default: -qobjmodel=classic
-qoldpassbyvalue | -qnooldpassbyvalue
(C++) Specifies how classes containing const or
reference members are passed in function arguments.
All classes in the compilation unit are affected by
this option. When -qoldpassbyvalue is specified,
the compiler mimics the IBM C/C++ compilers v3.6
compiler in that when a class containing a const or
reference member is passed as a function argument,
it is not passed by value. All such classes in the
compilation unit are affected.
Default: -qnooldpassbyvalue
-qupconv | -qnoupconv
(C) Preserves the unsigned specification when
performing integral promotions.
Default:
o -qupconv when -qlanglvl={extended|classic}.
o -qnoupconv otherwise.
-qvecnvol | -qnovecnvol
Specifies whether to use volatile or non-volatile
vector registers. Volatile vector registers are
registers whose value is not preserved across
function calls or in the context of save, jump or
switch system library functions. If -qnoenablevmx
is enabled, this option is ignored.
Default: -qnovecnvol
Compiler customization options
-qasm_as=<asm_path> [<flags_list>]
Specifies the path and flags used to invoke the
assembler in order to handle assembler code in an
asm statement. <asm_path> is the full path to the
assembler to be used, and <flags_list> is a series
of one or more flags (and their arguments),
separated by spaces. Single quotes (or double
quotes) are required around the string of arguments
if any spaces exist.
-B[<prefix>]
Determines substitute path names for programs used
during compilation, such as the compiler,
assembler, linkage editor, and preprocessor, where
<prefix> can be any program name recognized by the
-t compiler option. The optional <prefix> defines
part of a path name to the new programs. The -t
parameter, <program>, specifies the program to
which the <prefix> is to be appended. When
specifying <prefix>, there must be a slash (/)
after the folder name.
-qc_stdinc=<paths_list>
(C) Changes the standard search location for the XL
C headers. <paths_list> is a colon-separated list
of paths to search.
-qcpp_stdinc=<paths_list>
(C++) Specifies the standard search directories for
the XL C++ headers, where <paths_list> is a colon-
separated list of paths.
-F[<config_file>][:<stanza>]
Names an alternative configuration file (.cfg) for
the compiler. <config_file> is the name of a
compiler configuration file. <stanza> is the name
of the command used to invoke the compiler. This
directs the compiler to use the entries under
<stanza> in the <config_file> to set up the
compiler environment. At least one of the arguments
must be supplied.
-qpath=<program>:<path>
Constructs alternate program names for compiler
components. The program and directory path
specified are used in place of the regular program.
<program> can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-qspill=<size>
Specifies the size of the register allocation spill
area in bytes.
Default: -qspill=512
-t<programs_list>
Applies the prefix from the -B option to the
specified programs in <programs_list>.
<programs_list> is a chain (i.e: -tbcI) of one or
more of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = C++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = Linkage helper (C++ only)
p = Preprocessor
-W<program>,<options_list>
Gives the specified option(s) to the compiler
program, <program>. <options_list> is a comma-
separated list of one or more options. <program>
can be one of the following:
a = Assembler
b = Low-level optimizer
c = Compiler front end
C = C++ compiler front end
d = Disassembler
E = CreateExportList utility
f = c++filt utility
I = High-level optimizer - compile step
L = High-level optimizer - link step
l = Linker
m = linkage helper (C++ only)
p = Preprocessor
SEE ALSO
gxlc(1), gxlc++(1), c++filt(1), CreateExportList(1),
linkxlC(1), makeC++SharedLib(1), vacndi(1), vacppndi(1),
showpdf(1), mergepdf(1), resetpdf(1), cleanpdf(1).
For more information, refer to the following Web sites:
http://www.ibm.com/software/awdtools/xlcpp/library/
http://www.ibm.com/software/awdtools/xlcpp/support/
COPYRIGHT
Licensed Materials - Property of IBM.
IBM XL C/C++ Enterprise Edition for AIX, V9.0.
5724-S71
Copyright IBM Corp. 1991, 2007. All Rights Reserved.
AIX, IBM, POWER3, POWER4, POWER5, POWER5+, POWER6,
PowerPC, PowerPC 604 and SAA are trademarks or registered
trademarks of International Business Machines Corporation
in the United States, other countries, or both.
Windows is a trademarks of Microsoft Corporation in the
United States, other countries, or both.
US Government Users Restricted Rights - Use, duplication
or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
rm /ptmp/ddvento/xlcW0qxaiia
rm /ptmp/ddvento/xlcW1qxaiib
rm /ptmp/ddvento/xlcW2qxaiic
configure:23238: $? = 249
configure:23241: checking whether we are using the GNU C++ compiler
configure:23294: result: no
configure:23303: checking whether xlC accepts -g
configure:23441: result: yes
configure:23466: checking dependency style of xlC
configure:23557: result: aix
configure:23580: checking how to run the C++ preprocessor
configure:23694: result: xlC -E
configure:23723: xlC -E -I/contrib/gmp-4.3.1//include conftest.cpp
configure:23730: $? = 0
configure:23761: xlC -E -I/contrib/gmp-4.3.1//include conftest.cpp
"conftest.cpp", line 89.10: 1540-0836 (S) The #include file <ac_nonexistent.h> is not found.
configure:23768: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:23980: checking for objdir
configure:23995: result: .libs
configure:24346: checking for xlc option to produce PIC
configure:24618: result: -DPIC
configure:24630: checking if xlc PIC flag -DPIC works
configure:24648: xlc -c -g -O2 -I/contrib/gmp-4.3.1//include -DPIC -DPIC conftest.c >&5
configure:24652: $? = 0
configure:24665: result: yes
configure:24689: checking if xlc static flag -bnso -bI:/lib/syscalls.exp works
configure:24717: result: no
configure:24732: checking if xlc supports -c -o file.o
configure:24753: xlc -c -g -O2 -I/contrib/gmp-4.3.1//include -o out/conftest2.o conftest.c >&5
configure:24757: $? = 0
configure:24779: result: yes
configure:24787: checking if xlc supports -c -o file.o
configure:24834: result: yes
configure:24867: checking whether the xlc linker (/usr/bin/ld) supports shared libraries
configure:25401: xlc -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.c >&5
configure:25408: $? = 0
configure:25941: result: yes
configure:26180: checking dynamic linker characteristics
configure:26863: result: aix5.3.0.0 ld.so
configure:26965: checking how to hardcode library paths into programs
configure:26990: result: immediate
configure:27113: checking for shl_load
configure:27169: xlc -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.c >&5
ld: 0711-317 ERROR: Undefined symbol: .shl_load
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
configure:27176: $? = 8
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h. */
| /* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
| For example, HP-UX 11i <limits.h> declares gettimeofday. */
| #define shl_load innocuous_shl_load
|
| /* System header to define __stub macros and hopefully few prototypes,
| which can conflict with char shl_load (); below.
| Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
| <limits.h> exists even on freestanding compilers. */
|
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
|
| #undef shl_load
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char shl_load ();
| /* The GNU C library defines this for functions which it implements
| to always fail with ENOSYS. Some functions are actually named
| something starting with __ and the normal name is an alias. */
| #if defined __stub_shl_load || defined __stub___shl_load
| choke me
| #endif
|
| int
| main ()
| {
| return shl_load ();
| ;
| return 0;
| }
configure:27196: result: no
configure:27201: checking for shl_load in -ldld
configure:27236: xlc -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.c -ldld >&5
ld: 0706-006 Cannot find or open library file: -l dld
ld:open(): No such file or directory
configure:27243: $? = 255
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h. */
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char shl_load ();
| int
| main ()
| {
| return shl_load ();
| ;
| return 0;
| }
configure:27264: result: no
configure:27269: checking for dlopen
configure:27325: xlc -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.c >&5
configure:27332: $? = 0
configure:27352: result: yes
configure:27597: checking whether a program can dlopen itself
configure:27667: xlc -o conftest -g -O2 -I/contrib/gmp-4.3.1//include -DHAVE_DLFCN_H -Wl,-bexpall conftest.c >&5
configure:27670: $? = 0
configure:27688: result: yes
configure:27693: checking whether a statically linked program can dlopen itself
configure:27763: xlc -o conftest -g -O2 -I/contrib/gmp-4.3.1//include -DHAVE_DLFCN_H -Wl,-bexpall conftest.c >&5
configure:27766: $? = 0
configure:27784: result: yes
configure:27823: checking whether stripping libraries is possible
configure:27845: result: no
configure:27863: checking if libtool supports shared libraries
configure:27865: result: yes
configure:27868: checking whether to build shared libraries
configure:27889: result: yes
configure:27892: checking whether to build static libraries
configure:27896: result: no
configure:28192: checking whether the xlC linker (/usr/bin/ld) supports shared libraries
configure:28386: xlC -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:28393: $? = 0
configure:29167: result: yes
configure:29195: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:29198: $? = 0
configure:29380: checking for xlC option to produce PIC
configure:29697: result: -DPIC
configure:29706: checking if xlC PIC flag -DPIC works
configure:29724: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -DPIC -DPIC conftest.cpp >&5
configure:29728: $? = 0
configure:29741: result: yes
configure:29762: checking if xlC static flag -bnso -bI:/lib/syscalls.exp works
configure:29790: result: no
configure:29802: checking if xlC supports -c -o file.o
configure:29823: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include -o out/conftest2.o conftest.cpp >&5
configure:29827: $? = 0
configure:29849: result: yes
configure:29854: checking if xlC supports -c -o file.o
configure:29901: result: yes
configure:29931: checking whether the xlC linker (/usr/bin/ld) supports shared libraries
configure:29957: result: yes
configure:30094: checking dynamic linker characteristics
configure:30725: result: aix5.3.0.0 ld.so
configure:30776: checking how to hardcode library paths into programs
configure:30801: result: immediate
configure:30879: checking for md5sum
configure:30895: found /usr/bin/md5sum
configure:30906: result: md5sum
configure:30925: checking for the text md5sum command
configure:30933: result: md5sum -t
configure:30964: checking glpk.h usability
configure:30981: xlc -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.c >&5
"conftest.c", line 123.10: 1506-296 (S) #include file <glpk.h> not found.
configure:30988: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <glpk.h>
configure:31002: result: no
configure:31006: checking glpk.h presence
configure:31021: xlc -E -I/contrib/gmp-4.3.1//include conftest.c
"conftest.c", line 90.10: 1506-296 (S) #include file <glpk.h> not found.
configure:31028: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h. */
| #include <glpk.h>
configure:31042: result: no
configure:31075: checking for glpk.h
configure:31084: result: no
configure:30964: checking glpk/glpk.h usability
configure:30981: xlc -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.c >&5
"conftest.c", line 123.10: 1506-296 (S) #include file <glpk/glpk.h> not found.
configure:30988: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <glpk/glpk.h>
configure:31002: result: no
configure:31006: checking glpk/glpk.h presence
configure:31021: xlc -E -I/contrib/gmp-4.3.1//include conftest.c
"conftest.c", line 90.10: 1506-296 (S) #include file <glpk/glpk.h> not found.
configure:31028: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h. */
| #include <glpk/glpk.h>
configure:31042: result: no
configure:31075: checking for glpk/glpk.h
configure:31084: result: no
configure:31418: checking whether RLIMIT_DATA is declared
configure:31452: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:31459: $? = 0
configure:31474: result: yes
configure:31490: checking whether RLIMIT_RSS is declared
configure:31524: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:31531: $? = 0
configure:31546: result: yes
configure:31562: checking whether RLIMIT_VMEM is declared
configure:31596: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
"conftest.cpp", line 102.10: 1540-0274 (S) The name lookup for "RLIMIT_VMEM" did not find a declaration.
configure:31603: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_DECL_RLIMIT_DATA 1
| #define HAVE_DECL_RLIMIT_RSS 1
| /* end confdefs.h. */
|
| #ifdef HAVE_SYS_RESOURCE_H
| # include <sys/resource.h>
| #endif
|
|
| int
| main ()
| {
| #ifndef RLIMIT_VMEM
| (void) RLIMIT_VMEM;
| #endif
|
| ;
| return 0;
| }
configure:31618: result: no
configure:31634: checking whether RLIMIT_AS is declared
configure:31668: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:31675: $? = 0
configure:31690: result: yes
configure:31709: checking whether getrusage is declared
configure:31746: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:31753: $? = 0
configure:31768: result: yes
configure:31788: checking for timeval
configure:31816: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:31823: $? = 0
configure:31850: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
"conftest.cpp", line 131.22: 1540-0063 (S) The text ")" is unexpected.
configure:31857: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_DECL_RLIMIT_DATA 1
| #define HAVE_DECL_RLIMIT_RSS 1
| #define HAVE_DECL_RLIMIT_VMEM 0
| #define HAVE_DECL_RLIMIT_AS 1
| #define HAVE_DECL_GETRUSAGE 1
| /* end confdefs.h. */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| # include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main ()
| {
| if (sizeof ((timeval)))
| return 0;
| ;
| return 0;
| }
configure:31880: result: yes
configure:31891: checking for siginfo_t
configure:31922: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:31929: $? = 0
configure:31959: xlC -c -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
"conftest.cpp", line 103.24: 1540-0063 (S) The text ")" is unexpected.
configure:31966: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_DECL_RLIMIT_DATA 1
| #define HAVE_DECL_RLIMIT_RSS 1
| #define HAVE_DECL_RLIMIT_VMEM 0
| #define HAVE_DECL_RLIMIT_AS 1
| #define HAVE_DECL_GETRUSAGE 1
| #define HAVE_TIMEVAL 1
| /* end confdefs.h. */
|
| #include <signal.h>
|
|
| int
| main ()
| {
| if (sizeof ((siginfo_t)))
| return 0;
| ;
| return 0;
| }
configure:31989: result: yes
configure:32013: checking whether we can limit memory in C++ using setrlimit()
configure:32099: xlC -o conftest -g -O2 -I/contrib/gmp-4.3.1//include conftest.cpp >&5
configure:32103: $? = 0
configure:32109: ./conftest
configure:32113: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "the Parma Polyhedra Library"
| #define PACKAGE_TARNAME "ppl"
| #define PACKAGE_VERSION "0.10.2"
| #define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
| #define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
| #define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
| #define PPL_NDEBUG 1
| #define PPL_FPMATH_MAY_USE_387 1
| #define PPL_FPMATH_MAY_USE_SSE 1
| #define PPL_COEFFICIENT_TYPE mpz_class
| #define PPL_COEFFICIENT_BITS 0
| #define PPL_GMP_INTEGERS 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define WORDS_BIGENDIAN 1
| #define HAVE_TYPEOF 1
| #define typeof __typeof__
| #define SIZEOF_CHAR 1
| #define SIZEOF_SHORT 2
| #define SIZEOF_INT 4
| #define SIZEOF_LONG 8
| #define SIZEOF_LONG_LONG 8
| #define SIZEOF_SIZE_T 8
| #define SIZEOF_FLOAT 4
| #define SIZEOF_DOUBLE 8
| #define SIZEOF_LONG_DOUBLE 8
| #define SIZEOF_INTP 8
| #define SIZEOF_FP 8
| #define HAVE_FENV_H 1
| #define PPL_CAN_CONTROL_FPU 1
| #define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
| #define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
| #define PPL_CXX_FLOAT_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_FLOAT 0
| #define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_DOUBLE 0
| #define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
| #define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
| #define PPL_SUPPORTED_LONG_DOUBLE 0
| #define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
| #define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
| #define PPL_CXX_HAS_REMAINDER_BUG 1
| #define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
| #define HAVE_FENV_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DECL_FFS 1
| #define HAVE_DECL_GETENV 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_DECL_STRTOD 1
| #define HAVE_DECL_STRTOLD 1
| #define HAVE_DECL_STRTOLL 1
| #define HAVE_DECL_STRTOULL 1
| #define HAVE_DECL_FMA 1
| #define HAVE_DECL_FMAF 1
| #define HAVE_DECL_FMAL 1
| #define HAVE_DECL_RINTF 1
| #define HAVE_DECL_RINTL 1
| #define HAVE_INT_FAST16_T 1
| #define HAVE_INT_FAST32_T 1
| #define HAVE_INT_FAST64_T 1
| #define HAVE_UINT_FAST16_T 1
| #define HAVE_UINT_FAST32_T 1
| #define HAVE_UINT_FAST64_T 1
| #define SIZEOF_MP_LIMB_T 8
| #define PPL_GMP_SUPPORTS_EXCEPTIONS 1
| #define HAVE___MPZ_STRUCT__MP_ALLOC 1
| #define HAVE___MPZ_STRUCT__MP_SIZE 1
| #define HAVE___MPZ_STRUCT__MP_D 1
| #define HAVE_SETITIMER 1
| #define PPL_WATCHDOG_LIBRARY_ENABLED 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_DECL_RLIMIT_DATA 1
| #define HAVE_DECL_RLIMIT_RSS 1
| #define HAVE_DECL_RLIMIT_VMEM 0
| #define HAVE_DECL_RLIMIT_AS 1
| #define HAVE_DECL_GETRUSAGE 1
| #define HAVE_TIMEVAL 1
| #define HAVE_SIGINFO_T 1
| /* end confdefs.h. */
|
| #include <stdexcept>
|
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
|
| #ifdef HAVE_SYS_TIME_H
| # include <sys/time.h>
| #endif
|
| #ifdef HAVE_SYS_RESOURCE_H
| // This should be included after <time.h> and <sys/time.h> so as to make
| // sure we have the definitions for, e.g., ru_utime.
| # include <sys/resource.h>
| #endif
|
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
|
| #define LIMIT(WHAT) do { if (getrlimit(WHAT, &t) != 0) return false; t.rlim_cur = bytes; if (setrlimit(WHAT, &t) != 0) return false; } while (0)
|
| bool
| limit_memory(unsigned long bytes) {
| struct rlimit t;
| #if HAVE_DECL_RLIMIT_DATA
| // Limit heap size.
| LIMIT(RLIMIT_DATA);
| #endif
| #if HAVE_DECL_RLIMIT_RSS
| // Limit resident set size.
| LIMIT(RLIMIT_RSS);
| #endif
| #if HAVE_DECL_RLIMIT_VMEM
| // Limit mapped memory (brk + mmap).
| LIMIT(RLIMIT_VMEM);
| #endif
| #if HAVE_DECL_RLIMIT_AS
| // Limit virtual memory.
| LIMIT(RLIMIT_AS);
| #endif
| return true;
| }
|
| int
| main() try {
| if (!limit_memory(10000))
| return 1;
| (void) new char[20000];
| return 1;
| }
| catch (std::bad_alloc) {
| return 0;
| }
| catch (...) {
| return 1;
| }
|
configure:32124: result: no
configure:32652: creating ./config.status
## ---------------------- ##
## Running config.status. ##
## ---------------------- ##
This file was extended by the Parma Polyhedra Library config.status 0.10.2, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES =
CONFIG_HEADERS =
CONFIG_LINKS =
CONFIG_COMMANDS =
$ ./config.status
on be1005en.ucar.edu
config.status:1353: creating Makefile
config.status:1353: creating ppl.lsm
config.status:1353: creating src/Makefile
config.status:1353: creating src/version.hh
config.status:1353: creating src/ppl-config.cc
config.status:1353: creating tests/Makefile
config.status:1353: creating tests/BD_Shape/Makefile
config.status:1353: creating tests/Box/Makefile
config.status:1353: creating tests/Grid/Makefile
config.status:1353: creating tests/MIP_Problem/Makefile
config.status:1353: creating tests/Octagonal_Shape/Makefile
config.status:1353: creating tests/Partially_Reduced_Product/Makefile
config.status:1353: creating tests/Polyhedron/Makefile
config.status:1353: creating tests/Powerset/Makefile
config.status:1353: creating utils/Makefile
config.status:1353: creating m4/Makefile
config.status:1353: creating demos/Makefile
config.status:1353: creating demos/ppl_lcdd/Makefile
config.status:1353: creating demos/ppl_lcdd/examples/Makefile
config.status:1353: creating demos/ppl_lpsol/Makefile
config.status:1353: creating demos/ppl_lpsol/examples/Makefile
config.status:1353: creating doc/Makefile
config.status:1353: creating doc/user.doxyconf-latex
config.status:1353: creating doc/devref.doxyconf-latex
config.status:1353: creating doc/user.doxyconf-html
config.status:1353: creating doc/devref.doxyconf-html
config.status:1353: creating doc/user-language-interface.doxyconf
config.status:1353: creating doc/devref-language-interface.doxyconf
config.status:1353: creating interfaces/Makefile
config.status:1353: creating interfaces/C/Makefile
config.status:1353: creating interfaces/C/ppl_c_version.h
config.status:1353: creating interfaces/C/tests/Makefile
config.status:1353: creating interfaces/Java/Makefile
config.status:1353: creating interfaces/Java/jni/Makefile
config.status:1353: creating interfaces/Java/tests/Makefile
config.status:1353: creating interfaces/Java/parma_polyhedra_library/Makefile
config.status:1353: creating interfaces/OCaml/Makefile
config.status:1353: creating interfaces/OCaml/tests/Makefile
config.status:1353: creating interfaces/Prolog/Makefile
config.status:1353: creating interfaces/Prolog/Ciao/Makefile
config.status:1353: creating interfaces/Prolog/GNU/Makefile
config.status:1353: creating interfaces/Prolog/SICStus/Makefile
config.status:1353: creating interfaces/Prolog/SWI/Makefile
config.status:1353: creating interfaces/Prolog/XSB/Makefile
config.status:1353: creating interfaces/Prolog/YAP/Makefile
config.status:1353: creating interfaces/Prolog/tests/Makefile
config.status:1353: creating config.h
config.status:1627: executing depfiles commands
config.status:1627: executing libtool commands
configure:35242: === configuring in Watchdog (/ptmp/ddvento/install/ppl-0.10.2/Watchdog)
configure:35345: running /bin/sh ./configure --disable-option-checking '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC' --cache-file=/dev/null --srcdir=.
## ---------------- ##
## Cache variables. ##
## ---------------- ##
ac_cv_build=powerpc-ibm-aix5.3.0.0
ac_cv_c_bigendian=yes
ac_cv_c_compiler_gnu=no
ac_cv_c_const=yes
ac_cv_c_inline=inline
ac_cv_c_typeof=__typeof__
ac_cv_can_control_fpu=1
ac_cv_cxx_compiler_gnu=no
ac_cv_cxx_has_remainder_bug=yes
ac_cv_env_CCC_set=''
ac_cv_env_CCC_value=''
ac_cv_env_CC_set=set
ac_cv_env_CC_value=xlc
ac_cv_env_CFLAGS_set=''
ac_cv_env_CFLAGS_value=''
ac_cv_env_CPPFLAGS_set=''
ac_cv_env_CPPFLAGS_value=''
ac_cv_env_CPP_set=''
ac_cv_env_CPP_value=''
ac_cv_env_CXXCPP_set=''
ac_cv_env_CXXCPP_value=''
ac_cv_env_CXXFLAGS_set=''
ac_cv_env_CXXFLAGS_value=''
ac_cv_env_CXX_set=set
ac_cv_env_CXX_value=xlC
ac_cv_env_LDFLAGS_set=''
ac_cv_env_LDFLAGS_value=''
ac_cv_env_LIBS_set=''
ac_cv_env_LIBS_value=''
ac_cv_env_M4_set=''
ac_cv_env_M4_value=''
ac_cv_env_build_alias_set=''
ac_cv_env_build_alias_value=''
ac_cv_env_host_alias_set=''
ac_cv_env_host_alias_value=''
ac_cv_env_target_alias_set=''
ac_cv_env_target_alias_value=''
ac_cv_func_dlopen=yes
ac_cv_func_setitimer=yes
ac_cv_func_shl_load=no
ac_cv_gmp_supports_exceptions=yes
ac_cv_have_decl_RLIMIT_AS=yes
ac_cv_have_decl_RLIMIT_DATA=yes
ac_cv_have_decl_RLIMIT_RSS=yes
ac_cv_have_decl_RLIMIT_VMEM=no
ac_cv_have_decl_ffs=yes
ac_cv_have_decl_fma=yes
ac_cv_have_decl_fmaf=yes
ac_cv_have_decl_fmal=yes
ac_cv_have_decl_getenv=yes
ac_cv_have_decl_getrusage=yes
ac_cv_have_decl_rintf=yes
ac_cv_have_decl_rintl=yes
ac_cv_have_decl_strtod=yes
ac_cv_have_decl_strtof=yes
ac_cv_have_decl_strtold=yes
ac_cv_have_decl_strtoll=yes
ac_cv_have_decl_strtoull=yes
ac_cv_have_gmp=yes
ac_cv_header_dlfcn_h=yes
ac_cv_header_fenv_h=yes
ac_cv_header_getopt_h=no
ac_cv_header_glpk_glpk_h=no
ac_cv_header_glpk_h=no
ac_cv_header_ieeefp_h=no
ac_cv_header_inttypes_h=yes
ac_cv_header_memory_h=yes
ac_cv_header_signal_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_resource_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_time_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_unistd_h=yes
ac_cv_host=powerpc-ibm-aix5.3.0.0
ac_cv_javac_supports_enums=yes
ac_cv_lib_dld_shl_load=no
ac_cv_libgmp_cppflags=-I/contrib/gmp-4.3.1//include
ac_cv_libgmp_libs=/contrib/gmp-4.3.1//lib/libgmp.a
ac_cv_libgmp_ltlibs='-L/contrib/gmp-4.3.1//lib -lgmp'
ac_cv_libgmpxx_cppflags=''
ac_cv_libgmpxx_libs='/contrib/gmp-4.3.1//lib/libgmpxx.a /contrib/gmp-4.3.1//lib/libgmp.a'
ac_cv_libgmpxx_ltlibs='-L/contrib/gmp-4.3.1//lib -lgmpxx -L/contrib/gmp-4.3.1//lib -lgmp'
ac_cv_member___mpz_struct__mp_alloc=yes
ac_cv_member___mpz_struct__mp_d=yes
ac_cv_member___mpz_struct__mp_size=yes
ac_cv_objext=o
ac_cv_path_EGREP='/usr/local/bin//grep -E'
ac_cv_path_FGREP='/usr/local/bin//grep -F'
ac_cv_path_GREP=/usr/local/bin//grep
ac_cv_path_JAR=/usr/java5//bin/jar
ac_cv_path_JAVA=/usr/java5//bin/java
ac_cv_path_JAVAC=/usr/java5//bin/javac
ac_cv_path_JAVAH=/usr/java5//bin/javah
ac_cv_path_M4=/usr/local/bin//m4
ac_cv_path_PERL=/usr/bin/perl
ac_cv_path_SED=/usr/bin/sed
ac_cv_path_install='/usr/local/bin//install -c'
ac_cv_path_mkdir=/usr/local/bin//mkdir
ac_cv_prog_AWK=nawk
ac_cv_prog_CPP='xlc -E'
ac_cv_prog_CXXCPP='xlC -E'
ac_cv_prog_MD5SUM=md5sum
ac_cv_prog_ac_ct_AR=ar
ac_cv_prog_ac_ct_CC=xlc
ac_cv_prog_ac_ct_RANLIB=ranlib
ac_cv_prog_ac_ct_STRIP=strip
ac_cv_prog_cc_c89=''
ac_cv_prog_cc_g=yes
ac_cv_prog_cxx_g=yes
ac_cv_prog_gnu_m4_debugfile=--debugfile
ac_cv_prog_java_works=yes
ac_cv_prog_make_make_set=yes
ac_cv_prog_text_md5sum='md5sum -t'
ac_cv_prog_uudecode=yes
ac_cv_prog_uudecode_base64=yes
ac_cv_sizeof_char=1
ac_cv_sizeof_double=8
ac_cv_sizeof_float=4
ac_cv_sizeof_fp=8
ac_cv_sizeof_int=4
ac_cv_sizeof_intp=8
ac_cv_sizeof_long=8
ac_cv_sizeof_long_double=8
ac_cv_sizeof_long_long=8
ac_cv_sizeof_mp_limb_t=8
ac_cv_sizeof_short=2
ac_cv_sizeof_size_t=8
ac_cv_type_int_fast16_t=yes
ac_cv_type_int_fast32_t=yes
ac_cv_type_int_fast64_t=yes
ac_cv_type_siginfo_t=yes
ac_cv_type_timeval=yes
ac_cv_type_uint_fast16_t=yes
ac_cv_type_uint_fast32_t=yes
ac_cv_type_uint_fast64_t=yes
acl_cv_hardcode_direct=yes
acl_cv_hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/vac/lib:/usr/lib:/lib '
acl_cv_hardcode_libdir_separator=:
acl_cv_hardcode_minus_L=no
acl_cv_libext=a
acl_cv_libname_spec='lib$name'
acl_cv_library_names_spec='$libname$shrext'
acl_cv_path_LD=/usr/bin/ld
acl_cv_prog_gnu_ld=no
acl_cv_rpath=done
acl_cv_shlibext=so
acl_cv_wl=-Wl,
am_cv_CC_dependencies_compiler_type=aix
am_cv_CXX_dependencies_compiler_type=aix
am_cv_prog_tar_ustar=gnutar
lt_cv_deplibs_check_method=pass_all
lt_cv_dlopen=dlopen
lt_cv_dlopen_libs=''
lt_cv_dlopen_self=yes
lt_cv_dlopen_self_static=yes
lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=''
lt_cv_ld_reload_flag=-r
lt_cv_nm_interface='BSD nm'
lt_cv_objdir=.libs
lt_cv_path_LD=/usr/bin/ld
lt_cv_path_LDCXX=''
lt_cv_path_NM='/usr/bin/nm -B'
lt_cv_prog_compiler_c_o=yes
lt_cv_prog_compiler_c_o_CXX=yes
lt_cv_prog_compiler_pic_works=yes
lt_cv_prog_compiler_pic_works_CXX=yes
lt_cv_prog_compiler_static_works=no
lt_cv_prog_compiler_static_works_CXX=no
lt_cv_prog_gnu_ld=no
lt_cv_prog_gnu_ldcxx=''
lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([BCDT][BCDT]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'
lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[BCDT]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[BCDT]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[BCDT]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\'
lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[BCDT]* .* \(.*\)$/extern char \1;/p'\'
lt_cv_sys_max_cmd_len=307200
## ----------------- ##
## Output variables. ##
## ----------------- ##
ACLOCAL='${SHELL} /ptmp/ddvento/install/ppl-0.10.2/missing --run aclocal-1.10'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='${SHELL} /ptmp/ddvento/install/ppl-0.10.2/missing --run tar'
AR='ar'
ASSERTIONS_ENABLED_FALSE=''
ASSERTIONS_ENABLED_TRUE='#'
AUTOCONF='${SHELL} /ptmp/ddvento/install/ppl-0.10.2/missing --run autoconf'
AUTOHEADER='${SHELL} /ptmp/ddvento/install/ppl-0.10.2/missing --run autoheader'
AUTOMAKE='${SHELL} /ptmp/ddvento/install/ppl-0.10.2/missing --run automake-1.10'
AWK='nawk'
BUILD_CIAO_PROLOG_INTERFACE_FALSE=''
BUILD_CIAO_PROLOG_INTERFACE_TRUE='#'
BUILD_CXX_INTERFACE_FALSE='#'
BUILD_CXX_INTERFACE_TRUE=''
BUILD_C_INTERFACE_FALSE='#'
BUILD_C_INTERFACE_TRUE=''
BUILD_GNU_PROLOG_INTERFACE_FALSE=''
BUILD_GNU_PROLOG_INTERFACE_TRUE='#'
BUILD_JAVA_INTERFACE_FALSE='#'
BUILD_JAVA_INTERFACE_TRUE=''
BUILD_OCAML_INTERFACE_FALSE=''
BUILD_OCAML_INTERFACE_TRUE='#'
BUILD_PPL_LCDD_FALSE='#'
BUILD_PPL_LCDD_TRUE=''
BUILD_PPL_LPSOL_FALSE='#'
BUILD_PPL_LPSOL_TRUE=''
BUILD_SICSTUS_PROLOG_INTERFACE_FALSE=''
BUILD_SICSTUS_PROLOG_INTERFACE_TRUE='#'
BUILD_SOME_PROLOG_INTERFACES_FALSE=''
BUILD_SOME_PROLOG_INTERFACES_TRUE='#'
BUILD_SWI_PROLOG_INTERFACE_FALSE=''
BUILD_SWI_PROLOG_INTERFACE_TRUE='#'
BUILD_WATCHDOG_LIBRARY_FALSE='#'
BUILD_WATCHDOG_LIBRARY_TRUE=''
BUILD_XSB_PROLOG_INTERFACE_FALSE=''
BUILD_XSB_PROLOG_INTERFACE_TRUE='#'
BUILD_YAP_PROLOG_INTERFACE_FALSE=''
BUILD_YAP_PROLOG_INTERFACE_TRUE='#'
CAN_CONTROL_FPU_FALSE='#'
CAN_CONTROL_FPU_TRUE=''
CC='xlc'
CCDEPMODE='depmode=aix'
CFLAGS=' -g -O2 '
CIAO_PROLOG=''
CIAO_PROLOG_INCLUDE_OPTIONS=''
CONFIGURE_OPTIONS=''
CPP='xlc -E'
CPPFLAGS='-I/contrib/gmp-4.3.1//include'
CXX='xlC'
CXXCPP='xlC -E'
CXXDEPMODE='depmode=aix'
CXXFLAGS=' -g -O2 '
CYGPATH_W='echo'
DEBUGGING_ENABLED_FALSE='#'
DEBUGGING_ENABLED_TRUE=''
DEFS='-DHAVE_CONFIG_H'
DEPDIR='.deps'
DSYMUTIL=''
DUMPBIN=''
ECHO_C='\c'
ECHO_N=''
ECHO_T=''
EGREP='/usr/local/bin//grep -E'
ENABLE_SHARED_FALSE='#'
ENABLE_SHARED_TRUE=''
ENABLE_STATIC_FALSE=''
ENABLE_STATIC_TRUE='#'
EXEEXT=''
FGREP='/usr/local/bin//grep -F'
GCC_FALSE=''
GCC_TRUE='#'
GNU_PROLOG=''
GREP='/usr/local/bin//grep'
HAVE_GLPK_FALSE=''
HAVE_GLPK_TRUE='#'
HAVE_MD5SUM_FALSE='#'
HAVE_MD5SUM_TRUE=''
HAVE_OCAMLC_FALSE=''
HAVE_OCAMLC_TRUE='#'
HAVE_OCAMLOPT_FALSE=''
HAVE_OCAMLOPT_TRUE='#'
HAVE_PERL_FALSE='#'
HAVE_PERL_TRUE=''
HOST_CPU_X86_64_FALSE=''
HOST_CPU_X86_64_TRUE='#'
HOST_OS_CYGWIN_FALSE=''
HOST_OS_CYGWIN_TRUE='#'
HOST_OS_DARWIN_FALSE=''
HOST_OS_DARWIN_TRUE='#'
HOST_OS_MINGW_FALSE=''
HOST_OS_MINGW_TRUE='#'
HOST_OS_SOLARIS_FALSE=''
HOST_OS_SOLARIS_TRUE='#'
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
ISODATE='2009-09-08'
JAR='/usr/java5//bin/jar'
JAVA='/usr/java5//bin/java'
JAVAC='/usr/java5//bin/javac'
JAVAH='/usr/java5//bin/javah'
JNIFLAGS='-I/usr/java5//include -I/usr/java5//include/aix'
LD='/usr/bin/ld'
LDFLAGS=''
LIBEXT='a'
LIBGMP='/contrib/gmp-4.3.1//lib/libgmp.a'
LIBGMPXX='/contrib/gmp-4.3.1//lib/libgmpxx.a /contrib/gmp-4.3.1//lib/libgmp.a'
LIBOBJS=''
LIBS=''
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
LIPO=''
LN_S='ln -s'
LTLIBGMP='-L/contrib/gmp-4.3.1//lib -lgmp'
LTLIBGMPXX='-L/contrib/gmp-4.3.1//lib -lgmpxx -L/contrib/gmp-4.3.1//lib -lgmp'
LTLIBOBJS=''
M4='/usr/local/bin//m4'
M4_DEBUGFILE='--debugfile'
MAKEINFO='${SHELL} /ptmp/ddvento/install/ppl-0.10.2/missing --run makeinfo'
MD5SUM='md5sum'
MKDIR_P='/usr/local/bin//mkdir -p'
NM='/usr/bin/nm -B'
NMEDIT=''
NO_UNDEFINED_FALSE=''
NO_UNDEFINED_TRUE='#'
OBJDUMP='false'
OBJEXT='o'
OCAMLC=''
OCAMLOPT=''
OTOOL64=''
OTOOL=''
PACKAGE='ppl'
PACKAGE_BUGREPORT='ppl-devel(a)cs.unipr.it'
PACKAGE_NAME='the Parma Polyhedra Library'
PACKAGE_STRING='the Parma Polyhedra Library 0.10.2'
PACKAGE_TARNAME='ppl'
PACKAGE_VERSION='0.10.2'
PATH_SEPARATOR=':'
PERL='/usr/bin/perl'
PPL_VERSION_BETA='0'
PPL_VERSION_MAJOR='0'
PPL_VERSION_MINOR='10'
PPL_VERSION_REVISION='2'
RANLIB='ranlib'
SED='/usr/bin/sed'
SET_MAKE=''
SHELL='/bin/sh'
SHREXT='.so'
SICSTUS_PROLOG_INCLUDE_OPTIONS=''
STRIP='strip'
SUPPORTED_DOUBLE_FALSE=''
SUPPORTED_DOUBLE_TRUE='#'
SUPPORTED_FLOAT_FALSE=''
SUPPORTED_FLOAT_TRUE='#'
SUPPORTED_LONG_DOUBLE_FALSE=''
SUPPORTED_LONG_DOUBLE_TRUE='#'
SWI_PROLOG=''
SWI_PROLOG_INCLUDE_OPTIONS=''
SWI_PROLOG_LD_OPTIONS=''
TEXT_MD5SUM='md5sum -t'
THOROUGH_MAKE_CHECK_FALSE=''
THOROUGH_MAKE_CHECK_TRUE='#'
USE_CHECKED_INTEGERS_FALSE=''
USE_CHECKED_INTEGERS_TRUE='#'
USE_GMP_INTEGERS_FALSE='#'
USE_GMP_INTEGERS_TRUE=''
USE_INT16_FALSE=''
USE_INT16_TRUE='#'
USE_INT32_FALSE=''
USE_INT32_TRUE='#'
USE_INT64_FALSE=''
USE_INT64_TRUE='#'
USE_INT8_FALSE=''
USE_INT8_TRUE='#'
USE_NATIVE_INTEGERS_FALSE=''
USE_NATIVE_INTEGERS_TRUE='#'
USE_PRECOMPILED_HEADERS_FALSE=''
USE_PRECOMPILED_HEADERS_TRUE='#'
VALGRIND=''
VALGRIND_TESTS_ENABLED_FALSE=''
VALGRIND_TESTS_ENABLED_TRUE='#'
VERSION='0.10.2'
XSB_PROLOG_INCLUDE_OPTIONS=''
YAP_PROLOG=''
ac_ct_CC='xlc'
ac_ct_CXX=''
ac_ct_DUMPBIN=''
am__fastdepCC_FALSE=''
am__fastdepCC_TRUE='#'
am__fastdepCXX_FALSE=''
am__fastdepCXX_TRUE='#'
am__include='include'
am__isrc=''
am__leading_dot='.'
am__quote=''
am__tar='gtar --format=ustar -chf - "$$tardir"'
am__untar='gtar -xf -'
bindir='${exec_prefix}/bin'
build='powerpc-ibm-aix5.3.0.0'
build_alias=''
build_cpu='powerpc'
build_os='aix5.3.0.0'
build_vendor='ibm'
ciao_prolog=''
coefficient_mnemonic='mpz'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
debug_flag='-DNDEBUG=1'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='${prefix}'
extra_includes=''
extra_libraries=' -lm -L/contrib/gmp-4.3.1//lib -lgmpxx -L/contrib/gmp-4.3.1//lib -lgmp'
host='powerpc-ibm-aix5.3.0.0'
host_alias=''
host_cpu='powerpc'
host_os='aix5.3.0.0'
host_vendor='ibm'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='$(SHELL) /ptmp/ddvento/install/ppl-0.10.2/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
lt_ECHO='/usr/local/bin//echo'
mandir='${datarootdir}/man'
mkdir_p='/usr/local/bin//mkdir -p'
mlgmp_dir='+gmp'
ocamlc_root=''
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/contrib/ppl-0.10.2'
program_transform_name='s,x,x,'
psdir='${docdir}'
required_instantiations='Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@BD_Shape<mpq_class>@Octagonal_Shape<mpz_class>@Octagonal_Shape<mpq_class>@Constraints_Product<C_Polyhedron,Grid>@Pointset_Powerset<C_Polyhedron>@Pointset_Powerset<NNC_Polyhedron>'
required_instantiations_c_cxx_headers='ppl_c_Polyhedron.hh ppl_c_Grid.hh ppl_c_Rational_Box.hh ppl_c_BD_Shape_mpz_class.hh ppl_c_BD_Shape_mpq_class.hh ppl_c_Octagonal_Shape_mpz_class.hh ppl_c_Octagonal_Shape_mpq_class.hh ppl_c_Constraints_Product_C_Polyhedron_Grid.hh ppl_c_Pointset_Powerset_C_Polyhedron.hh ppl_c_Pointset_Powerset_NNC_Polyhedron.hh'
required_instantiations_c_cxx_objects='ppl_c_Polyhedron.lo ppl_c_Grid.lo ppl_c_Rational_Box.lo ppl_c_BD_Shape_mpz_class.lo ppl_c_BD_Shape_mpq_class.lo ppl_c_Octagonal_Shape_mpz_class.lo ppl_c_Octagonal_Shape_mpq_class.lo ppl_c_Constraints_Product_C_Polyhedron_Grid.lo ppl_c_Pointset_Powerset_C_Polyhedron.lo ppl_c_Pointset_Powerset_NNC_Polyhedron.lo'
required_instantiations_c_cxx_sources='ppl_c_Polyhedron.cc ppl_c_Grid.cc ppl_c_Rational_Box.cc ppl_c_BD_Shape_mpz_class.cc ppl_c_BD_Shape_mpq_class.cc ppl_c_Octagonal_Shape_mpz_class.cc ppl_c_Octagonal_Shape_mpq_class.cc ppl_c_Constraints_Product_C_Polyhedron_Grid.cc ppl_c_Pointset_Powerset_C_Polyhedron.cc ppl_c_Pointset_Powerset_NNC_Polyhedron.cc'
required_instantiations_canonical_names='Polyhedron@Grid@Rational_Box@BD_Shape_mpz_class@BD_Shape_mpq_class@Octagonal_Shape_mpz_class@Octagonal_Shape_mpq_class@Constraints_Product_C_Polyhedron_Grid@Pointset_Powerset_C_Polyhedron@Pointset_Powerset_NNC_Polyhedron'
required_instantiations_java_classes='Polyhedron.class C_Polyhedron.class NNC_Polyhedron.class Grid.class Rational_Box.class BD_Shape_mpz_class.class BD_Shape_mpq_class.class Octagonal_Shape_mpz_class.class Octagonal_Shape_mpq_class.class Constraints_Product_C_Polyhedron_Grid.class Pointset_Powerset_C_Polyhedron.class Pointset_Powerset_C_Polyhedron_Iterator.class Pointset_Powerset_NNC_Polyhedron.class Pointset_Powerset_NNC_Polyhedron_Iterator.class'
required_instantiations_java_cxx_headers='parma_polyhedra_library.Polyhedron parma_polyhedra_library.C_Polyhedron parma_polyhedra_library.NNC_Polyhedron parma_polyhedra_library.Grid parma_polyhedra_library.Rational_Box parma_polyhedra_library.BD_Shape_mpz_class parma_polyhedra_library.BD_Shape_mpq_class parma_polyhedra_library.Octagonal_Shape_mpz_class parma_polyhedra_library.Octagonal_Shape_mpq_class parma_polyhedra_library.Constraints_Product_C_Polyhedron_Grid parma_polyhedra_library.Pointset_Powerset_C_Polyhedron parma_polyhedra_library.Pointset_Powerset_C_Polyhedron_Iterator parma_polyhedra_library.Pointset_Powerset_NNC_Polyhedron parma_polyhedra_library.Pointset_Powerset_NNC_Polyhedron_Iterator'
required_instantiations_java_cxx_headers_sources='parma_polyhedra_library_Polyhedron.h parma_polyhedra_library_C_Polyhedron.h parma_polyhedra_library_NNC_Polyhedron.h parma_polyhedra_library_Grid.h parma_polyhedra_library_Rational_Box.h parma_polyhedra_library_BD_Shape_mpz_class.h parma_polyhedra_library_BD_Shape_mpq_class.h parma_polyhedra_library_Octagonal_Shape_mpz_class.h parma_polyhedra_library_Octagonal_Shape_mpq_class.h parma_polyhedra_library_Constraints_Product_C_Polyhedron_Grid.h parma_polyhedra_library_Pointset_Powerset_C_Polyhedron.h parma_polyhedra_library_Pointset_Powerset_C_Polyhedron_Iterator.h parma_polyhedra_library_Pointset_Powerset_NNC_Polyhedron.h parma_polyhedra_library_Pointset_Powerset_NNC_Polyhedron_Iterator.h'
required_instantiations_java_cxx_objects='ppl_java_Polyhedron.lo ppl_java_Grid.lo ppl_java_Rational_Box.lo ppl_java_BD_Shape_mpz_class.lo ppl_java_BD_Shape_mpq_class.lo ppl_java_Octagonal_Shape_mpz_class.lo ppl_java_Octagonal_Shape_mpq_class.lo ppl_java_Constraints_Product_C_Polyhedron_Grid.lo ppl_java_Pointset_Powerset_C_Polyhedron.lo ppl_java_Pointset_Powerset_NNC_Polyhedron.lo'
required_instantiations_java_cxx_sources='ppl_java_Polyhedron.cc ppl_java_Grid.cc ppl_java_Rational_Box.cc ppl_java_BD_Shape_mpz_class.cc ppl_java_BD_Shape_mpq_class.cc ppl_java_Octagonal_Shape_mpz_class.cc ppl_java_Octagonal_Shape_mpq_class.cc ppl_java_Constraints_Product_C_Polyhedron_Grid.cc ppl_java_Pointset_Powerset_C_Polyhedron.cc ppl_java_Pointset_Powerset_NNC_Polyhedron.cc'
required_instantiations_java_sources='Polyhedron.java C_Polyhedron.java NNC_Polyhedron.java Grid.java Rational_Box.java BD_Shape_mpz_class.java BD_Shape_mpq_class.java Octagonal_Shape_mpz_class.java Octagonal_Shape_mpq_class.java Constraints_Product_C_Polyhedron_Grid.java Pointset_Powerset_C_Polyhedron.java Pointset_Powerset_C_Polyhedron_Iterator.java Pointset_Powerset_NNC_Polyhedron.java Pointset_Powerset_NNC_Polyhedron_Iterator.java'
required_instantiations_ocaml_cxx_headers='ppl_ocaml_Polyhedron.hh ppl_ocaml_Grid.hh ppl_ocaml_Rational_Box.hh ppl_ocaml_BD_Shape_mpz_class.hh ppl_ocaml_BD_Shape_mpq_class.hh ppl_ocaml_Octagonal_Shape_mpz_class.hh ppl_ocaml_Octagonal_Shape_mpq_class.hh ppl_ocaml_Constraints_Product_C_Polyhedron_Grid.hh ppl_ocaml_Pointset_Powerset_C_Polyhedron.hh ppl_ocaml_Pointset_Powerset_NNC_Polyhedron.hh'
required_instantiations_ocaml_cxx_objects='ppl_ocaml_Polyhedron.o ppl_ocaml_Grid.o ppl_ocaml_Rational_Box.o ppl_ocaml_BD_Shape_mpz_class.o ppl_ocaml_BD_Shape_mpq_class.o ppl_ocaml_Octagonal_Shape_mpz_class.o ppl_ocaml_Octagonal_Shape_mpq_class.o ppl_ocaml_Constraints_Product_C_Polyhedron_Grid.o ppl_ocaml_Pointset_Powerset_C_Polyhedron.o ppl_ocaml_Pointset_Powerset_NNC_Polyhedron.o'
required_instantiations_ocaml_cxx_sources='ppl_ocaml_Polyhedron.cc ppl_ocaml_Grid.cc ppl_ocaml_Rational_Box.cc ppl_ocaml_BD_Shape_mpz_class.cc ppl_ocaml_BD_Shape_mpq_class.cc ppl_ocaml_Octagonal_Shape_mpz_class.cc ppl_ocaml_Octagonal_Shape_mpq_class.cc ppl_ocaml_Constraints_Product_C_Polyhedron_Grid.cc ppl_ocaml_Pointset_Powerset_C_Polyhedron.cc ppl_ocaml_Pointset_Powerset_NNC_Polyhedron.cc'
required_instantiations_prolog_cxx_headers='ppl_prolog_Polyhedron.hh ppl_prolog_Grid.hh ppl_prolog_Rational_Box.hh ppl_prolog_BD_Shape_mpz_class.hh ppl_prolog_BD_Shape_mpq_class.hh ppl_prolog_Octagonal_Shape_mpz_class.hh ppl_prolog_Octagonal_Shape_mpq_class.hh ppl_prolog_Constraints_Product_C_Polyhedron_Grid.hh ppl_prolog_Pointset_Powerset_C_Polyhedron.hh ppl_prolog_Pointset_Powerset_NNC_Polyhedron.hh'
required_instantiations_prolog_cxx_objects='ppl_prolog_Polyhedron.lo ppl_prolog_Grid.lo ppl_prolog_Rational_Box.lo ppl_prolog_BD_Shape_mpz_class.lo ppl_prolog_BD_Shape_mpq_class.lo ppl_prolog_Octagonal_Shape_mpz_class.lo ppl_prolog_Octagonal_Shape_mpq_class.lo ppl_prolog_Constraints_Product_C_Polyhedron_Grid.lo ppl_prolog_Pointset_Powerset_C_Polyhedron.lo ppl_prolog_Pointset_Powerset_NNC_Polyhedron.lo'
required_instantiations_prolog_cxx_sources='ppl_prolog_Polyhedron.cc ppl_prolog_Grid.cc ppl_prolog_Rational_Box.cc ppl_prolog_BD_Shape_mpz_class.cc ppl_prolog_BD_Shape_mpq_class.cc ppl_prolog_Octagonal_Shape_mpz_class.cc ppl_prolog_Octagonal_Shape_mpq_class.cc ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc ppl_prolog_Pointset_Powerset_C_Polyhedron.cc ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc'
required_instantiations_prolog_generated_test_sources='ppl_prolog_generated_test_Polyhedron.pl ppl_prolog_generated_test_Grid.pl ppl_prolog_generated_test_Rational_Box.pl ppl_prolog_generated_test_BD_Shape_mpz_class.pl ppl_prolog_generated_test_BD_Shape_mpq_class.pl ppl_prolog_generated_test_Octagonal_Shape_mpz_class.pl ppl_prolog_generated_test_Octagonal_Shape_mpq_class.pl ppl_prolog_generated_test_Constraints_Product_C_Polyhedron_Grid.pl ppl_prolog_generated_test_Pointset_Powerset_C_Polyhedron.pl ppl_prolog_generated_test_Pointset_Powerset_NNC_Polyhedron.pl'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sicstus_prolog=''
subdirs=' Watchdog'
swi_prolog=''
sysconfdir='${prefix}/etc'
target_alias=''
uudecode='yes'
xsb_prolog=''
## ----------- ##
## confdefs.h. ##
## ----------- ##
#define PACKAGE_NAME "the Parma Polyhedra Library"
#define PACKAGE_TARNAME "ppl"
#define PACKAGE_VERSION "0.10.2"
#define PACKAGE_STRING "the Parma Polyhedra Library 0.10.2"
#define PACKAGE_BUGREPORT "ppl-devel(a)cs.unipr.it"
#define PPL_CONFIGURE_OPTIONS " '--prefix=/contrib/ppl-0.10.2' '--with-libgmp-prefix=/contrib/gmp-4.3.1/' '--with-java=/usr/java5/' '--enable-cxx' 'CC=xlc' 'CXX=xlC'"
#define PPL_NDEBUG 1
#define PPL_FPMATH_MAY_USE_387 1
#define PPL_FPMATH_MAY_USE_SSE 1
#define PPL_COEFFICIENT_TYPE mpz_class
#define PPL_COEFFICIENT_BITS 0
#define PPL_GMP_INTEGERS 1
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define WORDS_BIGENDIAN 1
#define HAVE_TYPEOF 1
#define typeof __typeof__
#define SIZEOF_CHAR 1
#define SIZEOF_SHORT 2
#define SIZEOF_INT 4
#define SIZEOF_LONG 8
#define SIZEOF_LONG_LONG 8
#define SIZEOF_SIZE_T 8
#define SIZEOF_FLOAT 4
#define SIZEOF_DOUBLE 8
#define SIZEOF_LONG_DOUBLE 8
#define SIZEOF_INTP 8
#define SIZEOF_FP 8
#define HAVE_FENV_H 1
#define PPL_CAN_CONTROL_FPU 1
#define PPL_CXX_PROVIDES_PROPER_LONG_DOUBLE 0
#define PPL_CXX_FLOAT_BINARY_FORMAT PPL_FLOAT_IEEE754_SINGLE
#define PPL_CXX_FLOAT_EXACT_OUTPUT 0
#define PPL_SUPPORTED_FLOAT 0
#define PPL_CXX_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
#define PPL_CXX_DOUBLE_EXACT_OUTPUT 0
#define PPL_SUPPORTED_DOUBLE 0
#define PPL_CXX_LONG_DOUBLE_BINARY_FORMAT PPL_FLOAT_IEEE754_DOUBLE
#define PPL_CXX_LONG_DOUBLE_EXACT_OUTPUT 0
#define PPL_SUPPORTED_LONG_DOUBLE 0
#define PPL_CXX_SUPPORTS_FLEXIBLE_ARRAYS 1
#define PPL_CXX_SUPPORTS_IEEE_INEXACT_FLAG 1
#define PPL_CXX_HAS_REMAINDER_BUG 1
#define PPL_CXX_SUPPORTS_ATTRIBUTE_WEAK 1
#define HAVE_FENV_H 1
#define HAVE_SIGNAL_H 1
#define HAVE_STRING_H 1
#define HAVE_STRINGS_H 1
#define HAVE_SYS_RESOURCE_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_UNISTD_H 1
#define HAVE_DECL_FFS 1
#define HAVE_DECL_GETENV 1
#define HAVE_DECL_STRTOF 1
#define HAVE_DECL_STRTOD 1
#define HAVE_DECL_STRTOLD 1
#define HAVE_DECL_STRTOLL 1
#define HAVE_DECL_STRTOULL 1
#define HAVE_DECL_FMA 1
#define HAVE_DECL_FMAF 1
#define HAVE_DECL_FMAL 1
#define HAVE_DECL_RINTF 1
#define HAVE_DECL_RINTL 1
#define HAVE_INT_FAST16_T 1
#define HAVE_INT_FAST32_T 1
#define HAVE_INT_FAST64_T 1
#define HAVE_UINT_FAST16_T 1
#define HAVE_UINT_FAST32_T 1
#define HAVE_UINT_FAST64_T 1
#define SIZEOF_MP_LIMB_T 8
#define PPL_GMP_SUPPORTS_EXCEPTIONS 1
#define HAVE___MPZ_STRUCT__MP_ALLOC 1
#define HAVE___MPZ_STRUCT__MP_SIZE 1
#define HAVE___MPZ_STRUCT__MP_D 1
#define HAVE_SETITIMER 1
#define PPL_WATCHDOG_LIBRARY_ENABLED 1
#define HAVE_DLFCN_H 1
#define LT_OBJDIR ".libs/"
#define HAVE_DECL_RLIMIT_DATA 1
#define HAVE_DECL_RLIMIT_RSS 1
#define HAVE_DECL_RLIMIT_VMEM 0
#define HAVE_DECL_RLIMIT_AS 1
#define HAVE_DECL_GETRUSAGE 1
#define HAVE_TIMEVAL 1
#define HAVE_SIGINFO_T 1
#define PPL_CXX_SUPPORTS_LIMITING_MEMORY 0
configure: exit 0
gmake all-recursive
gmake[1]: Entering directory `/ptmp/ddvento/install/ppl-0.10.2'
Making all in .
gmake[2]: Entering directory `/ptmp/ddvento/install/ppl-0.10.2'
/usr/bin/sed -f ./ppl-config.sed config.h >ppl-config.h
gmake[2]: Leaving directory `/ptmp/ddvento/install/ppl-0.10.2'
Making all in utils
gmake[2]: Entering directory `/ptmp/ddvento/install/ppl-0.10.2/utils'
source='timings.cc' object='timings.o' libtool=no \
DEPDIR=.deps depmode=aix /bin/sh ../depcomp \
xlC -DHAVE_CONFIG_H -I. -I.. -I/contrib/gmp-4.3.1//include -g -O2 -c -o timings.o timings.cc
rm -f libppl_utils.a
ar cru libppl_utils.a timings.o
ranlib libppl_utils.a
/usr/bin/sed -e 's,[@]PERL[@],/usr/bin/perl,g' -e 's,[@]generated_automatically[@],Generated automatically: do not modify; modify the .in file instead.,g' < ./build_header.in > build_header
chmod +x build_header
/usr/bin/sed -e 's,[@]PERL[@],/usr/bin/perl,g' -e 's,[@]generated_automatically[@],Generated automatically: do not modify; modify the .in file instead.,g' < ./text2cxxarray.in > text2cxxarray
chmod +x text2cxxarray
gmake[2]: Leaving directory `/ptmp/ddvento/install/ppl-0.10.2/utils'
Making all in src
gmake[2]: Entering directory `/ptmp/ddvento/install/ppl-0.10.2/src'
for file in namespaces.hh compiler.hh meta_programming.hh Slow_Copy.hh Has_Assign_Or_Swap.hh assign_or_swap.hh mp_std_bits.defs.hh mp_std_bits.inlines.hh Temp.defs.hh Temp.inlines.hh Temp.templates.hh Coefficient_traits_template.hh Checked_Number.types.hh GMP_Integer.types.hh Coefficient.types.hh stdiobuf.types.hh c_streambuf.types.hh globals.types.hh iterator_to_const.types.hh distances.types.hh Interval_Info.types.hh Interval.types.hh Box.types.hh Constraint.types.hh Generator.types.hh Grid_Generator.types.hh Congruence.types.hh Init.types.hh Row.types.hh Linear_Row.types.hh Matrix.types.hh Variable.types.hh Variables_Set.types.hh Linear_Expression.types.hh Linear_System.types.hh Bit_Row.types.hh Bit_Matrix.types.hh Constraint_System.types.hh Generator_System.types.hh Grid_Generator_System.types.hh Congruence_System.types.hh Scalar_Products.types.hh MIP_Problem.types.hh Poly_Con_Relation.types.hh Poly_Gen_Relation.types.hh BHRZ03_Certificate.types.hh H79_Certificate.types.hh Grid_Certificate.types.hh Polyhedron.types.hh C_Polyhedron.types.hh NNC_Polyhedron.types.hh Grid.types.hh Ptr_Iterator.types.hh DB_Row.types.hh DB_Matrix.types.hh BD_Shape.types.hh OR_Matrix.types.hh Octagonal_Shape.types.hh fpu.types.hh Float.defs.hh Float.inlines.hh C_Integer.hh fpu.defs.hh fpu-c99.inlines.hh fpu-ia32.inlines.hh fpu-none.inlines.hh fpu-sparc.inlines.hh Rounding_Dir.defs.hh Rounding_Dir.inlines.hh Result.defs.hh Result.inlines.hh Numeric_Format.defs.hh checked.defs.hh checked.inlines.hh checked_int.inlines.hh checked_float.inlines.hh checked_mpz.inlines.hh checked_mpq.inlines.hh checked_ext.inlines.hh Checked_Number.defs.hh Checked_Number.inlines.hh Checked_Number.templates.hh checked_numeric_limits.hh GMP_Integer.defs.hh GMP_Integer.inlines.hh Coefficient.defs.hh Coefficient.inlines.hh stdiobuf.defs.hh stdiobuf.inlines.hh c_streambuf.defs.hh c_streambuf.inlines.hh globals.defs.hh globals.inlines.hh math_utilities.defs.hh math_utilities.inlines.hh iterator_to_const.defs.hh iterator_to_const.inlines.hh distances.defs.hh distances.inlines.hh Boundary.defs.hh Interval_Info.defs.hh Interval_Info.inlines.hh Interval_Restriction.defs.hh Interval.defs.hh Interval.inlines.hh Interval.templates.hh Box.defs.hh Box_Status.inlines.hh Box.inlines.hh Box.templates.hh Rational_Interval.hh Rational_Box.hh Variable.defs.hh Variable.inlines.hh Variables_Set.defs.hh Variables_Set.inlines.hh Init.defs.hh Init.inlines.hh initializer.hh Topology.hh Row.defs.hh Row.inlines.hh Linear_Row.defs.hh Linear_Row.inlines.hh Matrix.defs.hh Matrix.inlines.hh Bit_Row.defs.hh Bit_Row.inlines.hh Linear_System.defs.hh Linear_System.inlines.hh Bit_Matrix.defs.hh Bit_Matrix.inlines.hh Constraint_System.defs.hh Generator_System.defs.hh Grid_Generator_System.defs.hh Congruence_System.defs.hh Linear_Expression.defs.hh Linear_Expression.inlines.hh Constraint.defs.hh Constraint.inlines.hh Constraint_System.inlines.hh Generator.defs.hh Generator.inlines.hh Grid_Generator.defs.hh Grid_Generator.inlines.hh Congruence.defs.hh Congruence.inlines.hh Generator_System.inlines.hh Grid_Generator_System.inlines.hh Congruence_System.inlines.hh Scalar_Products.defs.hh Scalar_Products.inlines.hh MIP_Problem.defs.hh MIP_Problem.inlines.hh MIP_Problem.templates.hh Poly_Con_Relation.defs.hh Poly_Con_Relation.inlines.hh Poly_Gen_Relation.defs.hh Poly_Gen_Relation.inlines.hh BHRZ03_Certificate.defs.hh BHRZ03_Certificate.inlines.hh H79_Certificate.defs.hh H79_Certificate.inlines.hh Grid_Certificate.defs.hh Grid_Certificate.inlines.hh Polyhedron.defs.hh Ph_Status.inlines.hh Polyhedron.inlines.hh Polyhedron.templates.hh Grid.defs.hh Grid_Status.inlines.hh Grid.inlines.hh Grid.templates.hh C_Polyhedron.defs.hh C_Polyhedron.inlines.hh NNC_Polyhedron.defs.hh NNC_Polyhedron.inlines.hh Widening_Function.types.hh Widening_Function.defs.hh Widening_Function.inlines.hh Ptr_Iterator.defs.hh Ptr_Iterator.inlines.hh DB_Row.defs.hh DB_Row.inlines.hh DB_Row.templates.hh DB_Matrix.defs.hh DB_Matrix.inlines.hh DB_Matrix.templates.hh BD_Shape.defs.hh BDS_Status.inlines.hh BD_Shape.inlines.hh BD_Shape.templates.hh OR_Matrix.defs.hh OR_Matrix.inlines.hh OR_Matrix.templates.hh Octagonal_Shape.defs.hh Og_Status.inlines.hh Octagonal_Shape.inlines.hh Octagonal_Shape.templates.hh Determinate.types.hh Determinate.defs.hh Determinate.inlines.hh Powerset.types.hh Powerset.defs.hh Powerset.inlines.hh Powerset.templates.hh Pointset_Powerset.types.hh Pointset_Powerset.defs.hh Pointset_Powerset.inlines.hh Pointset_Powerset.templates.hh Partially_Reduced_Product.types.hh Partially_Reduced_Product.defs.hh Partially_Reduced_Product.inlines.hh Partially_Reduced_Product.templates.hh max_space_dimension.hh algorithms.hh wrap.hh ; \
do \
i="#include \"$file\"" ; \
( cd ../src ; /usr/local/bin//grep -F -q "$i" namespaces.hh compiler.hh meta_programming.hh Slow_Copy.hh Has_Assign_Or_Swap.hh assign_or_swap.hh mp_std_bits.defs.hh mp_std_bits.inlines.hh Temp.defs.hh Temp.inlines.hh Temp.templates.hh Coefficient_traits_template.hh Checked_Number.types.hh GMP_Integer.types.hh Coefficient.types.hh stdiobuf.types.hh c_streambuf.types.hh globals.types.hh iterator_to_const.types.hh distances.types.hh Interval_Info.types.hh Interval.types.hh Box.types.hh Constraint.types.hh Generator.types.hh Grid_Generator.types.hh Congruence.types.hh Init.types.hh Row.types.hh Linear_Row.types.hh Matrix.types.hh Variable.types.hh Variables_Set.types.hh Linear_Expression.types.hh Linear_System.types.hh Bit_Row.types.hh Bit_Matrix.types.hh Constraint_System.types.hh Generator_System.types.hh Grid_Generator_System.types.hh Congruence_System.types.hh Scalar_Products.types.hh MIP_Problem.types.hh Poly_Con_Relation.types.hh Poly_Gen_Relation.types.hh BHRZ03_Certificate.types.hh H79_Certificate.types.hh Grid_Certificate.types.hh Polyhedron.types.hh C_Polyhedron.types.hh NNC_Polyhedron.types.hh Grid.types.hh Ptr_Iterator.types.hh DB_Row.types.hh DB_Matrix.types.hh BD_Shape.types.hh OR_Matrix.types.hh Octagonal_Shape.types.hh fpu.types.hh Float.defs.hh Float.inlines.hh C_Integer.hh fpu.defs.hh fpu-c99.inlines.hh fpu-ia32.inlines.hh fpu-none.inlines.hh fpu-sparc.inlines.hh Rounding_Dir.defs.hh Rounding_Dir.inlines.hh Result.defs.hh Result.inlines.hh Numeric_Format.defs.hh checked.defs.hh checked.inlines.hh checked_int.inlines.hh checked_float.inlines.hh checked_mpz.inlines.hh checked_mpq.inlines.hh checked_ext.inlines.hh Checked_Number.defs.hh Checked_Number.inlines.hh Checked_Number.templates.hh checked_numeric_limits.hh GMP_Integer.defs.hh GMP_Integer.inlines.hh Coefficient.defs.hh Coefficient.inlines.hh stdiobuf.defs.hh stdiobuf.inlines.hh c_streambuf.defs.hh c_streambuf.inlines.hh globals.defs.hh globals.inlines.hh math_utilities.defs.hh math_utilities.inlines.hh iterator_to_const.defs.hh iterator_to_const.inlines.hh distances.defs.hh distances.inlines.hh Boundary.defs.hh Interval_Info.defs.hh Interval_Info.inlines.hh Interval_Restriction.defs.hh Interval.defs.hh Interval.inlines.hh Interval.templates.hh Box.defs.hh Box_Status.inlines.hh Box.inlines.hh Box.templates.hh Rational_Interval.hh Rational_Box.hh Variable.defs.hh Variable.inlines.hh Variables_Set.defs.hh Variables_Set.inlines.hh Init.defs.hh Init.inlines.hh initializer.hh Topology.hh Row.defs.hh Row.inlines.hh Linear_Row.defs.hh Linear_Row.inlines.hh Matrix.defs.hh Matrix.inlines.hh Bit_Row.defs.hh Bit_Row.inlines.hh Linear_System.defs.hh Linear_System.inlines.hh Bit_Matrix.defs.hh Bit_Matrix.inlines.hh Constraint_System.defs.hh Generator_System.defs.hh Grid_Generator_System.defs.hh Congruence_System.defs.hh Linear_Expression.defs.hh Linear_Expression.inlines.hh Constraint.defs.hh Constraint.inlines.hh Constraint_System.inlines.hh Generator.defs.hh Generator.inlines.hh Grid_Generator.defs.hh Grid_Generator.inlines.hh Congruence.defs.hh Congruence.inlines.hh Generator_System.inlines.hh Grid_Generator_System.inlines.hh Congruence_System.inlines.hh Scalar_Products.defs.hh Scalar_Products.inlines.hh MIP_Problem.defs.hh MIP_Problem.inlines.hh MIP_Problem.templates.hh Poly_Con_Relation.defs.hh Poly_Con_Relation.inlines.hh Poly_Gen_Relation.defs.hh Poly_Gen_Relation.inlines.hh BHRZ03_Certificate.defs.hh BHRZ03_Certificate.inlines.hh H79_Certificate.defs.hh H79_Certificate.inlines.hh Grid_Certificate.defs.hh Grid_Certificate.inlines.hh Polyhedron.defs.hh Ph_Status.inlines.hh Polyhedron.inlines.hh Polyhedron.templates.hh Grid.defs.hh Grid_Status.inlines.hh Grid.inlines.hh Grid.templates.hh C_Polyhedron.defs.hh C_Polyhedron.inlines.hh NNC_Polyhedron.defs.hh NNC_Polyhedron.inlines.hh Widening_Function.types.hh Widening_Function.defs.hh Widening_Function.inlines.hh Ptr_Iterator.defs.hh Ptr_Iterator.inlines.hh DB_Row.defs.hh DB_Row.inlines.hh DB_Row.templates.hh DB_Matrix.defs.hh DB_Matrix.inlines.hh DB_Matrix.templates.hh BD_Shape.defs.hh BDS_Status.inlines.hh BD_Shape.inlines.hh BD_Shape.templates.hh OR_Matrix.defs.hh OR_Matrix.inlines.hh OR_Matrix.templates.hh Octagonal_Shape.defs.hh Og_Status.inlines.hh Octagonal_Shape.inlines.hh Octagonal_Shape.templates.hh Determinate.types.hh Determinate.defs.hh Determinate.inlines.hh Powerset.types.hh Powerset.defs.hh Powerset.inlines.hh Powerset.templates.hh Pointset_Powerset.types.hh Pointset_Powerset.defs.hh Pointset_Powerset.inlines.hh Pointset_Powerset.templates.hh Partially_Reduced_Product.types.hh Partially_Reduced_Product.defs.hh Partially_Reduced_Product.inlines.hh Partially_Reduced_Product.templates.hh max_space_dimension.hh algorithms.hh wrap.hh ) || echo "$i" ; \
done > ppl_include_files.hh
../utils/build_header \
-I .. -I ../src \
../src/ppl_header.hh >ppl.hh
../utils/text2cxxarray --name=BUGS_array \
../BUGS >BUGS.cc
../utils/text2cxxarray --name=COPYING_array \
../COPYING >COPYING.cc
../utils/text2cxxarray --name=CREDITS_array \
../CREDITS >CREDITS.cc
gmake all-am
gmake[3]: Entering directory `/ptmp/ddvento/install/ppl-0.10.2/src'
source='Box.cc' object='Box.lo' libtool=yes \
DEPDIR=.deps depmode=aix /bin/sh ../depcomp \
/bin/sh ../libtool --tag=CXX --mode=compile xlC -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -I/contrib/gmp-4.3.1//include -g -O2 -c -o Box.lo Box.cc
libtool: compile: xlC -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -I/contrib/gmp-4.3.1//include -g -O2 -c -M Box.cc -DPIC -o .libs/Box.o
"Row.defs.hh", line 88.46: 1540-0063 (S) The text "Row_Impl_Handler" is unexpected.
"Linear_Row.defs.hh", line 124.52: 1540-0063 (S) The text "Row" is unexpected.
"Linear_Expression.defs.hh", line 236.60: 1540-0063 (S) The text "Linear_Row" is unexpected.
"Linear_System.defs.hh", line 54.55: 1540-0063 (S) The text "Matrix" is unexpected.
"Constraint_System.defs.hh", line 127.60: 1540-0063 (S) The text "Linear_System" is unexpected.
"Constraint.defs.hh", line 260.53: 1540-0063 (S) The text "Linear_Row" is unexpected.
"Congruence_System.defs.hh", line 120.60: 1540-0063 (S) The text "Matrix" is unexpected.
"Congruence.defs.hh", line 210.53: 1540-0063 (S) The text "Row" is unexpected.
"Variables_Set.defs.hh", line 47.21: 1540-0274 (S) The name lookup for "dimension_type" did not find a declaration.
"Generator_System.defs.hh", line 183.61: 1540-0063 (S) The text "Linear_System" is unexpected.
"Generator.defs.hh", line 243.52: 1540-0063 (S) The text "Linear_Row" is unexpected.
"Grid_Generator_System.defs.hh", line 178.13: 1540-0063 (S) The text "Generator_System" is unexpected.
"Grid_Generator.defs.hh", line 227.57: 1540-0063 (S) The text "Generator" is unexpected.
"C_Polyhedron.defs.hh", line 58.54: 1540-0063 (S) The text "Polyhedron" is unexpected.
"Interval_Restriction.defs.hh", line 55.31: 1540-0064 (S) Syntax error: ")" was expected but "," was found.
"Linear_Row.inlines.hh", line 260.32: 1540-0216 (S) An expression of type "const Parma_Polyhedra_Library::Linear_Row" cannot be converted to type "const Parma_Polyhedra_Library::Row &".
"Linear_Row.inlines.hh", line 260.62: 1540-0216 (S) An expression of type "const Parma_Polyhedra_Library::Linear_Row" cannot be converted to type "const Parma_Polyhedra_Library::Row &".
"Linear_Expression.inlines.hh", line 140.4: 1540-0218 (S) The call does not match any parameter list for "operator[]".
"Linear_Expression.inlines.hh", line 147.4: 1540-0218 (S) The call does not match any parameter list for "operator[]".
gmake[3]: *** [Box.lo] Error 1
gmake[3]: Leaving directory `/ptmp/ddvento/install/ppl-0.10.2/src'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/ptmp/ddvento/install/ppl-0.10.2/src'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/ptmp/ddvento/install/ppl-0.10.2'
gmake: *** [all] Error 2
3
10

[GIT] ppl/ppl(floating_point): Added a first implementation of tests on Octagon and Polyhedra.
by Roberto Amadini 28 Sep '09
by Roberto Amadini 28 Sep '09
28 Sep '09
Module: ppl/ppl
Branch: floating_point
Commit: 1565eb930cb7282655d60e44770f010dba80ad8f
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=1565eb930cb7…
Author: Roberto Amadini <r.amadini(a)virgilio.it>
Date: Mon Sep 28 23:45:09 2009 +0200
Added a first implementation of tests on Octagon and Polyhedra.
---
tests/Floating_Point_Expression/digitalfilters1.cc | 113 ++++++++++++++++++--
1 files changed, 104 insertions(+), 9 deletions(-)
diff --git a/tests/Floating_Point_Expression/digitalfilters1.cc b/tests/Floating_Point_Expression/digitalfilters1.cc
index 2df3586..9061076 100644
--- a/tests/Floating_Point_Expression/digitalfilters1.cc
+++ b/tests/Floating_Point_Expression/digitalfilters1.cc
@@ -51,17 +51,18 @@ test01() {
Variable X(0); //input
Variable D(1); //input
Variable Y(2); //output
- Variable S(3);
- Variable R(4);
+ Variable S(3); //last output
+ Variable R(4); //actual rate
FP_Interval_Abstract_Store abstract_store(5);
FP_Interval tmp(-128);
tmp.join_assign(128);
abstract_store.set_interval(X, tmp);
- abstract_store.set_interval(Y, tmp);
tmp.lower() = 0;
tmp.upper() = 16;
abstract_store.set_interval(D, tmp);
+ nout << "*** for each n ***" << endl;
+
//if (R <= -D) Y = S - D;
FP_Interval_Abstract_Store as_then(abstract_store);
as_then.refine_with_constraint(R <= -D);
@@ -78,8 +79,9 @@ test01() {
abstract_store.refine_with_constraint(R > D);
abstract_store.upper_bound_assign(as_then);
- nout << "Y in " << abstract_store.get_interval(Y) << endl;
- return true;
+ tmp = abstract_store.get_interval(Y);
+ nout << "Y in " << tmp << endl;
+ return !tmp.is_bounded();
}
// tests rate limiter using bounded differences abstract domain.
@@ -92,15 +94,108 @@ test02() {
// tests rate limiter using octagons abstract domain.
bool
test03() {
+ Variable X(0); //input
+ Variable D(1); //input
+ Variable Y(2); //output
+ Variable S(3); //last output
+ Variable R(4); //actual rate
+ FP_Interval_Abstract_Store abstract_store(5);
+ FP_Interval tmp(-128);
+ tmp.join_assign(128);
+ abstract_store.set_interval(X, tmp);
+ tmp.lower() = 0;
+ tmp.upper() = 16;
+ abstract_store.set_interval(D, tmp);
+ FP_Octagonal_Shape oc(abstract_store);
+ FP_Linear_Form ld(D);
- return true;
+ nout << "*** n = 0 ***" << endl;
+
+ //S = Y; R = X - S; Y = X;
+ oc.affine_image(S, FP_Linear_Form(Y));
+ oc.affine_image(R, FP_Linear_Form(X - S));
+ oc.affine_image(Y, FP_Linear_Form(X));
+
+ //if (R <= -D) Y = S - D;
+ FP_Linear_Form lr(R);
+ FP_Octagonal_Shape oc_then(oc);
+ oc_then.refine_with_linear_form_inequality(lr, -ld);
+ oc_then.affine_image(Y, FP_Linear_Form(S - D));
+ oc.refine_with_linear_form_inequality(-ld, lr);
+ oc.upper_bound_assign(oc_then);
+ oc.refine_fp_interval_abstract_store(abstract_store);
+
+ //if (R >= D) Y = S + D;
+ oc_then = oc;
+ oc_then.refine_with_linear_form_inequality(ld, lr);
+ oc_then.affine_image(Y, FP_Linear_Form(S + D));
+ oc.refine_with_linear_form_inequality(lr, ld);
+ oc.upper_bound_assign(oc_then);
+ oc.refine_fp_interval_abstract_store(abstract_store);
+
+ tmp = abstract_store.get_interval(Y);
+ nout << "Y in " << tmp << endl;
+
+ return tmp.is_bounded();
}
// tests rate limiter using polyhedra abstract domain.
bool
test04() {
+ Variable X(0); //input
+ Variable D(1); //input
+ Variable Y(2); //output
+ Variable S(3); //last output
+ Variable R(4); //actual rate
+ FP_Interval_Abstract_Store abstract_store(5);
+ FP_Interval tmp(-128);
+ tmp.join_assign(128);
+ abstract_store.set_interval(X, tmp);
+ tmp.lower() = 0;
+ tmp.upper() = 16;
+ abstract_store.set_interval(D, tmp);
+ FP_Linear_Form ld(D);
+ //FIXME: Dirty values, but abstract store must be bounded!
+ tmp.lower() = -std::numeric_limits<ANALYZER_FP_FORMAT>::max();
+ tmp.upper() = std::numeric_limits<ANALYZER_FP_FORMAT>::max();
+ abstract_store.set_interval(Y, tmp);
+ abstract_store.set_interval(S, tmp);
+ abstract_store.set_interval(R, tmp);
+ C_Polyhedron ph(abstract_store);
- return true;
+ nout << "*** n = 0 ***" << endl;
+
+ //S = Y; R = X - S; Y = X;
+ ph.affine_image(S, FP_Linear_Form(Y), abstract_store);
+ ph.affine_image(R, FP_Linear_Form(X - S), abstract_store);
+ ph.affine_image(Y, FP_Linear_Form(X), abstract_store);
+
+ //if (R <= -D) Y = S - D;
+ FP_Linear_Form lr(R);
+ C_Polyhedron ph_then(ph);
+ FP_Interval_Abstract_Store as_then(abstract_store);
+ ph_then.refine_with_linear_form_inequality(lr, -ld, as_then);
+ ph_then.affine_image(Y, FP_Linear_Form(S - D), as_then);
+ ph.generalized_refine_with_linear_form_inequality(
+ -ld, lr, LESS_THAN, abstract_store);
+ ph.upper_bound_assign(ph_then);
+ abstract_store.upper_bound_assign(as_then);
+ ph.refine_fp_interval_abstract_store(abstract_store);
+
+ //if (R >= D) Y = S + D;
+ ph_then = ph;
+ as_then = abstract_store;
+ ph_then.refine_with_linear_form_inequality(ld, lr, as_then);
+ ph_then.affine_image(Y, FP_Linear_Form(S + D), as_then);
+ ph.generalized_refine_with_linear_form_inequality(
+ lr, ld, LESS_THAN, abstract_store);
+ ph.upper_bound_assign(ph_then);
+ abstract_store.upper_bound_assign(as_then);
+ ph.refine_fp_interval_abstract_store(abstract_store);
+
+ tmp = abstract_store.get_interval(Y);
+ nout << "Y in " << tmp << endl;
+ return tmp.is_bounded();
}
} // namespace
@@ -108,6 +203,6 @@ test04() {
BEGIN_MAIN
DO_TEST(test01);
//DO_TEST(test02);
- //DO_TEST(test03);
- //DO_TEST(test04);
+ DO_TEST(test03);
+ DO_TEST(test04);
END_MAIN
1
0
Module: ppl/ppl
Branch: floating_point
Commit: 540fd61d15e0bc88a94c2e18ed223082b892c45b
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=540fd61d15e0…
Author: Fabio Biselli <fabio.biselli(a)studenti.unipr.it>
Date: Tue Sep 29 00:04:10 2009 +0200
Deleted a useless tests file.
---
tests/Floating_Point_Expression/refinebdshape1.cc | 110 ---------------------
1 files changed, 0 insertions(+), 110 deletions(-)
diff --git a/tests/Floating_Point_Expression/refinebdshape1.cc b/tests/Floating_Point_Expression/refinebdshape1.cc
deleted file mode 100644
index f4132c7..0000000
--- a/tests/Floating_Point_Expression/refinebdshape1.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Test BD_Shape::refine_wiht_linear_form_inequaity on interval linear forms.
- Copyright (C) 2001-2009 Roberto Bagnara <bagnara(a)cs.unipr.it>
-
-This file is part of the Parma Polyhedra Library (PPL).
-
-The PPL is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-The PPL is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software Foundation,
-Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
-
-For the most up-to-date information see the Parma Polyhedra Library
-site: http://www.cs.unipr.it/ppl/ . */
-
-#include "ppl_test.hh"
-
-namespace {
-
-// tests trivial cases
-bool
-test01() {
- Variable A(0);
- Variable B(1);
- FP_BD_Shape bd1(0);
- bool ok1 = false;
- FP_Linear_Form l1(A);
- FP_Linear_Form l2(B);
-
- try {
- bd1.refine_with_linear_form_inequality(l1,l2);
- }
- catch(std::invalid_argument e) {
- nout << "bd1_space_dim < lf_space_dim" << endl;
- ok1 = true;
- }
-
- bool ok2 = false;
- FP_BD_Shape bd2(1);
-
- try {
- bd2.refine_with_linear_form_inequality(l1,l2);
- }
- catch(std::invalid_argument e) {
- nout << "space_dim < var_id + 1" << endl;
- oc2.refine_with_linear_form_inequality(l1, l1);
- oc2.refine_with_linear_form_inequality(-l1, l1);
- oc2.refine_with_linear_form_inequality(l1, -l1);
- FP_Interval tmp(0);
- l1 -= A;
- l1 += tmp;
- l2 += tmp;
- oc2.refine_with_linear_form_inequality(l1, l2);
- ok2 = true;
- }
-
- return ok1 && ok2;
-}
-
-// tests [-1, 2] <= [-4, -1] + A and [-4, -1] + A <= [-1, 2]
-bool
-test02() {
- Variable A(0);
- Variable B(1);
-
- FP_BD_Shape oc1(2);
- oc1.add_constraint(A <= 2);
- oc1.add_constraint(A - B <= 3);
- oc1.add_constraint(B <= 2);
- FP_BD_Shape known_result(oc1);
- FP_Interval tmp(-1);
- tmp.join_assign(2);
- FP_Linear_Form l1(tmp);
- FP_Linear_Form l2(A);
- tmp.lower() = -4;
- tmp.upper() = -1;
- l2 += tmp;
- oc1.refine_with_linear_form_inequality(l1, l2);
- print_constraints(oc1, "*** [-1, 2] <= [-4, -1] + A ***");
-
- known_result.add_constraint(-A <= 0);
- print_constraints(known_result, "*** known_result1 ***");
-
- bool ok1 = (oc1 == known_result);
-
- oc1.refine_with_linear_form_inequality(l2, l1);
- print_constraints(oc1, "*** [-4, -1] + A <= [-1, 2] ***");
-
- known_result.add_constraint(A <= 6);
- print_constraints(known_result, "*** known_result2 ***");
-
- bool ok2 = (oc1 == known_result);
-
- return ok1 && ok2;
-
-}
-
-} // namespace
-
-BEGIN_MAIN
- DO_TEST(test01);
- DO_TEST(test02);
-END_MAIN
1
0

[GIT] ppl/ppl(floating_point): Started to test analysis on digital filters.
by Roberto Amadini 28 Sep '09
by Roberto Amadini 28 Sep '09
28 Sep '09
Module: ppl/ppl
Branch: floating_point
Commit: dc276e0c0a15896719a929593f63414b32703952
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=dc276e0c0a15…
Author: Roberto Amadini <r.amadini(a)virgilio.it>
Date: Mon Sep 28 20:03:16 2009 +0200
Started to test analysis on digital filters.
Temporarily modified tests/Floating_Point_Expression/Makefile.am
---
tests/Floating_Point_Expression/Makefile.am | 9 +-
tests/Floating_Point_Expression/digitalfilters1.cc | 113 ++++++++++++++++++++
tests/Floating_Point_Expression/octagonalshape2.cc | 1 -
3 files changed, 119 insertions(+), 4 deletions(-)
diff --git a/tests/Floating_Point_Expression/Makefile.am b/tests/Floating_Point_Expression/Makefile.am
index d2f12e8..fd77e8a 100644
--- a/tests/Floating_Point_Expression/Makefile.am
+++ b/tests/Floating_Point_Expression/Makefile.am
@@ -50,7 +50,8 @@ $(top_builddir)/tests/libppl_tests.a \
$(top_builddir)/src/libppl.la \
@extra_libraries@
-ORIGINAL_TESTS = polyhedron2
+ORIGINAL_TESTS = \
+digitalfilters1
#bdshape1 \
#floatingpointexpr1 \
@@ -58,7 +59,7 @@ ORIGINAL_TESTS = polyhedron2
#octagonalshape1 \
#octagonalshape2 \
#polyhedron1 \
-polyhedron2
+#polyhedron2
@@ -131,7 +132,9 @@ print_INSTANCES:
# Sources for the tests
#
-polyhedron2_SOURCES = polyhedron2.cc
+digitalfilters1_SOURCES = digitalfilters1.cc
+
+#polyhedron2_SOURCES = polyhedron2.cc
#polyhedron1_SOURCES = polyhedron1.cc
diff --git a/tests/Floating_Point_Expression/digitalfilters1.cc b/tests/Floating_Point_Expression/digitalfilters1.cc
new file mode 100644
index 0000000..2df3586
--- /dev/null
+++ b/tests/Floating_Point_Expression/digitalfilters1.cc
@@ -0,0 +1,113 @@
+/* Test Rate Limiter on differents abstract domains.
+ Copyright (C) 2001-2009 Roberto Bagnara <bagnara(a)cs.unipr.it>
+
+This file is part of the Parma Polyhedra Library (PPL).
+
+The PPL is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The PPL is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
+
+For the most up-to-date information see the Parma Polyhedra Library
+site: http://www.cs.unipr.it/ppl/ . */
+
+#include "ppl_test.hh"
+
+namespace {
+
+/*
+This file tests a rate limiter that, given random input flows of floating
+point values X and D, bounded respectively by [-128, 128] and [0, 16],
+computes an output flow Y that tries to follow X while having a change rate
+limited by D. The pseudo-code of such rate limiter is the following:
+
+input X, D;
+output Y;
+R = (-inf, +inf);
+S = (-inf, +inf);
+for (n = 0; n < N; ++n) {
+ S = Y;
+ R = X - S;
+ Y = X;
+ if (R <= -D)
+ Y = S - D;
+ if (R >= D)
+ Y = S + D;
+}
+*/
+
+// tests rate limiter using intervals abstract domain.
+bool
+test01() {
+ Variable X(0); //input
+ Variable D(1); //input
+ Variable Y(2); //output
+ Variable S(3);
+ Variable R(4);
+ FP_Interval_Abstract_Store abstract_store(5);
+ FP_Interval tmp(-128);
+ tmp.join_assign(128);
+ abstract_store.set_interval(X, tmp);
+ abstract_store.set_interval(Y, tmp);
+ tmp.lower() = 0;
+ tmp.upper() = 16;
+ abstract_store.set_interval(D, tmp);
+
+ //if (R <= -D) Y = S - D;
+ FP_Interval_Abstract_Store as_then(abstract_store);
+ as_then.refine_with_constraint(R <= -D);
+ as_then.set_interval(Y, abstract_store.get_interval(S)
+ - abstract_store.get_interval(D));
+ abstract_store.refine_with_constraint(R > -D);
+ abstract_store.upper_bound_assign(as_then);
+
+ //if (R >= D) Y = S + D;
+ as_then = abstract_store;
+ as_then.refine_with_constraint(R >= D);
+ as_then.set_interval(Y, abstract_store.get_interval(S)
+ + abstract_store.get_interval(D));
+ abstract_store.refine_with_constraint(R > D);
+ abstract_store.upper_bound_assign(as_then);
+
+ nout << "Y in " << abstract_store.get_interval(Y) << endl;
+ return true;
+}
+
+// tests rate limiter using bounded differences abstract domain.
+bool
+test02() {
+
+ return true;
+}
+
+// tests rate limiter using octagons abstract domain.
+bool
+test03() {
+
+ return true;
+}
+
+// tests rate limiter using polyhedra abstract domain.
+bool
+test04() {
+
+ return true;
+}
+
+} // namespace
+
+BEGIN_MAIN
+ DO_TEST(test01);
+ //DO_TEST(test02);
+ //DO_TEST(test03);
+ //DO_TEST(test04);
+END_MAIN
diff --git a/tests/Floating_Point_Expression/octagonalshape2.cc b/tests/Floating_Point_Expression/octagonalshape2.cc
index 5a869ec..8c8ac96 100644
--- a/tests/Floating_Point_Expression/octagonalshape2.cc
+++ b/tests/Floating_Point_Expression/octagonalshape2.cc
@@ -29,7 +29,6 @@ namespace {
bool
test01() {
Variable A(0);
- Variable B(1);
FP_Octagonal_Shape oc1(0);
bool ok1 = false;
FP_Linear_Form l1(A);
1
0

[GIT] ppl/ppl(floating_point): Fixed few bugs in inhomogeneous_refine();
by Fabio Biselli 28 Sep '09
by Fabio Biselli 28 Sep '09
28 Sep '09
Module: ppl/ppl
Branch: floating_point
Commit: a5ef5d5cfc41fdbeff5cbb8f89d015bed7b9899c
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=a5ef5d5cfc41…
Author: Fabio Biselli <fabio.biselli(a)studenti.unipr.it>
Date: Mon Sep 28 20:37:16 2009 +0200
Fixed few bugs in inhomogeneous_refine();
---
src/BD_Shape.templates.hh | 30 +++--
tests/Floating_Point_Expression/Makefile.am | 3 +
tests/Floating_Point_Expression/bdshape2.cc | 147 +++++++++++++++++++++
tests/Floating_Point_Expression/refinebdshape1.cc | 110 +++++++++++++++
4 files changed, 276 insertions(+), 14 deletions(-)
Diff: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commitdiff;h=a5ef5d5c…
1
0