|
1 # |
|
2 # Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. |
|
3 # Copyright 2012, 2013 SAP AG. All rights reserved. |
|
4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
5 # |
|
6 # This code is free software; you can redistribute it and/or modify it |
|
7 # under the terms of the GNU General Public License version 2 only, as |
|
8 # published by the Free Software Foundation. |
|
9 # |
|
10 # This code is distributed in the hope that it will be useful, but WITHOUT |
|
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
13 # version 2 for more details (a copy is included in the LICENSE file that |
|
14 # accompanied this code). |
|
15 # |
|
16 # You should have received a copy of the GNU General Public License version |
|
17 # 2 along with this work; if not, write to the Free Software Foundation, |
|
18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
19 # |
|
20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
21 # or visit www.oracle.com if you need additional information or have any |
|
22 # questions. |
|
23 # |
|
24 # |
|
25 |
|
26 # Produce 64 bits object files. |
|
27 CFLAGS += -q64 |
|
28 |
|
29 # Balanced tuning for recent versions of the POWER architecture (if supported by xlc). |
|
30 QTUNE=$(if $(CXX_SUPPORTS_BALANCED_TUNING),balanced,pwr5) |
|
31 |
|
32 # Try to speed up the interpreter: use ppc64 instructions and inline |
|
33 # glue code for external functions. |
|
34 OPT_CFLAGS += -qarch=ppc64 -qtune=$(QTUNE) -qinlglue |
|
35 |
|
36 # We need variable length arrays |
|
37 CFLAGS += -qlanglvl=c99vla |
|
38 # Just to check for unwanted macro redefinitions |
|
39 CFLAGS += -qlanglvl=noredefmac |
|
40 |
|
41 # Suppress those "implicit private" warnings xlc gives. |
|
42 # - The omitted keyword "private" is assumed for base class "...". |
|
43 CFLAGS += -qsuppress=1540-0198 |
|
44 |
|
45 # Suppress the following numerous warning: |
|
46 # - 1540-1090 (I) The destructor of "..." might not be called. |
|
47 # - 1500-010: (W) WARNING in ...: Infinite loop. Program may not stop. |
|
48 # There are several infinite loops in the vm, suppress. |
|
49 CFLAGS += -qsuppress=1540-1090 -qsuppress=1500-010 |
|
50 |
|
51 # Suppress |
|
52 # - 540-1088 (W) The exception specification is being ignored. |
|
53 # caused by throw() in declaration of new() in nmethod.hpp. |
|
54 CFLAGS += -qsuppress=1540-1088 |
|
55 |
|
56 # Turn off floating-point optimizations that may alter program semantics |
|
57 OPT_CFLAGS += -qstrict |
|
58 |
|
59 # Disable aggressive optimizations for functions in sharedRuntimeTrig.cpp |
|
60 # and sharedRuntimeTrans.cpp on ppc64. |
|
61 # -qstrict turns off the following optimizations: |
|
62 # * Performing code motion and scheduling on computations such as loads |
|
63 # and floating-point computations that may trigger an exception. |
|
64 # * Relaxing conformance to IEEE rules. |
|
65 # * Reassociating floating-point expressions. |
|
66 # When using '-qstrict' there still remains one problem |
|
67 # in javasoft.sqe.tests.api.java.lang.Math.sin5Tests when run in compile-all |
|
68 # mode, so don't optimize sharedRuntimeTrig.cpp at all. |
|
69 OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT) |
|
70 OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT) |
|
71 |
|
72 # xlc 10.01 parameters for ipa compile. |
|
73 QIPA_COMPILE=$(if $(CXX_IS_V10),-qipa) |
|
74 |
|
75 # Xlc 10.1 parameters for aggressive optimization: |
|
76 # - qhot=level=1: Most aggressive loop optimizations. |
|
77 # - qignerrno: Assume errno is not modified by system calls. |
|
78 # - qinline: Inline method calls. No suboptions for c++ compiles. |
|
79 # - qxflag=ASMMIDCOALFIX: Activate fix for -O3 problem in interpreter loop. |
|
80 # - qxflag=asmfastsync: Activate fix for performance problem with inline assembler with memory clobber. |
|
81 QV10_OPT=$(if $(CXX_IS_V10),-qxflag=ASMMIDCOALFIX -qxflag=asmfastsync) |
|
82 QV10_OPT_AGGRESSIVE=$(if $(CXX_IS_V10),-qhot=level=1 -qignerrno -qinline) |
|
83 QV10_OPT_CONSERVATIVE=$(if $(CXX_IS_V10),-qhot=level=1 -qignerrno -qinline) |
|
84 |
|
85 # Disallow inlining for synchronizer.cpp, but perform O3 optimizations. |
|
86 OPT_CFLAGS/synchronizer.o = $(OPT_CFLAGS) -qnoinline |
|
87 |
|
88 # Set all the xlC V10.1 options here. |
|
89 OPT_CFLAGS += $(QIPA_COMPILE) $(QV10_OPT) $(QV10_OPT_AGGRESSIVE) |
|
90 |
|
91 export OBJECT_MODE=64 |
|
92 |
|
93 # Also build launcher as 64 bit executable. |
|
94 LAUNCHERFLAGS += -q64 |