I decided to see if it was possible to simplify the change over by adding
another flag word in the .opt handling to give the old names (TARGET_<xxx> and
MASK_<xxx>). For Joseph Myers and Neil Booth, the issue is when changing all
of the switches that use Mask(xxx) and InverseMask(xxx) to also use Var(xxx),
the option machinery changes the names of the macros to OPTION_<xxx> and
OPTION_MASK_<xxx>, which in turn causes lots and lots of changes for patch
review. Some can't be omitted, where we referred to the 'target_flags' and
'target_flags_explicit' fields, but at least it reduces the number of other
changes.
Before doing these patches, I experimented with automatically changing
target_flags to HOST_WIDE_INT if we had more than 31 switches, but when I
defined a few extra switches to push the powerpc over the limit, I couldn't get
the compiler to bootstrap. I figure there were some 'int' variables that need
to be changed to the type I created, but I wasn't able to find it.
So, I added a TargetName flag to the options. If TargetName is used, the
options machinery generates the old names. I have bootstrapped and run the
compiler test suite without regressions. If the option handling maintainers
agree this is worthwhile, I would like to check it in (or iterate to fix any
issues). If it is not acceptible, I will do by changing all of the names, as
I've done in previous iterations of this patch.
I'm including two attachments. The first (363c) is the changes to the machine
independent files, and the second (363d) are the changes to the rs6000 files.
2012-10-12 Michael Meissner <[email protected]>
* opt-functions.awk (var_set): Move selection of TARGET_
vs. OPTION_ prefix to the opt_prefix_target function. Move
selection of MASK_ vs. OPTION_MASK_ prefix to opt_prefix_mask
function. If the TargetName flag was set, generate TARGET_ and
MASK_ prefixes for Mask/InverseMask options that use a secondary
flags variable.
(opt_prefix_target): Likewise.
(opt_prefix_mask): Likewise.
* opth-gen.awk (creation of TARGET_<xxx>/OPTION_<xxx> macros):
Likewise.
(creation of MASK_<xxx>/OPTION_MASK_<xxx> macros): Likewise.
* doc/options.texi (Mask): Add documentation for TargetName which
allows the user to use Mask/InverseMask along with Var, and
generate the traditional TARGET_<xxx> and MASK_<xxx> values
instead of OPTION_<xxx> and OPTION_MASK_<xxx>.
(InverseMask): Likewise.
(TargetName): Likewise.
* config/rs6000/rs6000.opt (rs6000_flags): New HOST_WIDE_INT flag
word to replace target_flags and give us 63 ISA options.
(x_rs6000_flags): Location to save/restore rs6000_flags.
(x_rs6000_flags_explicit): Location to save/restore
rs6000_flags_explicit.
(rs6000_taret_flags_explicit): Rename to x_rs6000_flags_explicit.
(-mpowerpc64): Change all Mask switches to use rs6000_flags.
(-mpowerpc-gpopt): Likewise.
(-mpowerpc-gfxopt): Likewise.
(-mmfcrf): Likewise.
(-mpopcntb): Likewise.
(-mfprnd): Likewise.
(-mcmpb): Likewise.
(-mmfpgpr): Likewise.
(-maltivec): Likewise.
(-mhard-dfp): Likewise.
(-mmulhw): Likewise.
(-mdlmzb): Likewise.
(-mmultiple): Likewise.
(-mstring): Likewise.
(-msoft-float): Likewise.
(-mhard-float): Likewise.
(-mpopcntd): Likewise.
(-mvsx): Likewise.
(-mno-update): Likewise.
(-mupdate): Likewise.
(-mminimal-toc): Likewise.
(-misel): Likewise.
* config/rs6000/darwin.opt (-m64): Likewise.
(-m32): Likewise.
* config/rs6000/aix64.opt (-m64): Likewise.
(-m32): Likewise.
* config/rs6000/sysv4.opt (-mstrict-align): Likewise.
(-mrelocatable): Likewise.
(-mlittle-endian): Likewise.
(-mlittle): Likewise.
(-mbig-endian): Likewise.
(-mbig): Likewise.
(-meabi): Likewise.
(-m64): Likewise.
(-m32): Likewise.
* config/rs6000/rs6000.c (rs6000_debug_reg_global): Change all
uses of target_flags to rs6000_flags, and target_flags_explicit.
Update saving/restoring/printing these flags values.
(darwin_rs6000_override_options): Likewise.
(rs6000_option_override_internal): Likewise.
(rs6000_darwin_file_start): Likewise.
(rs6000_inner_target_options): Likewise.
(rs6000_pragma_target_parse): Likewise.
(rs6000_set_current_function): Likewise.
(rs6000_function_specific_save): Likewise.
(rs6000_function_specific_restore): Likewise.
(rs6000_function_specific_print): Likewise.
(rs6000_can_inline_p): Likewise.
* common/config/rs6000/rs6000-common.c (rs6000_handle_option):
Likewise.
* config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
* config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
* config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
* config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
* config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
* config/rs6000/freebsd.h (RELOCATABLE_NEEDS_FIXUP): Likewise.
* config/rs6000/freebsd64.h (RELOCATABLE_NEEDS_FIXUP): Likewise.
(SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
* config/rs6000/linux.h (RELOCATABLE_NEEDS_FIXUP): Likewise.
* config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP): Likewise.
(SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
Likewise.
(rs6000_cpu_cpp_builtins): Likewise.
* config/rs6000/rs6000.h: Change comments refering to
target_flags.
* config/rs6000/sysv4.h (TARGET_TOC): Likewise.
(SUBTARGET_OVERRIDE_OPTIONS): Likewise.
(SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
(TARGET_OS_SYSV_CPP_BUILTINS): Likewise.
* config/rs6000/rs6000-opts.h (rs6000_flags_explicit): Define in
terms of global_options_set.x_rs6000_flags.
--
Michael Meissner, IBM
5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
[email protected] fax +1 (978) 399-6899
Index: gcc/opth-gen.awk
===================================================================
--- gcc/opth-gen.awk (revision 192400)
+++ gcc/opth-gen.awk (working copy)
@@ -332,10 +332,9 @@ for (i = 0; i < n_opts; i++) {
if (name != "" && mask_bits[name] == 0) {
mask_bits[name] = 1
vname = var_name(flags[i])
- mask = "MASK_"
+ mask = opt_prefix_mask(flags[i])
mask_1 = "1"
if (vname != "") {
- mask = "OPTION_MASK_"
if (host_wide_int[vname] == "yes")
mask_1 = "HOST_WIDE_INT_1"
} else
@@ -375,14 +374,13 @@ for (i = 0; i < n_opts; i++) {
if (name != "" && mask_macros[name] == 0) {
mask_macros[name] = 1
vname = var_name(flags[i])
- macro = "OPTION_"
- mask = "OPTION_MASK_"
+ macro = opt_prefix_target(name)
+ mask = opt_prefix_mask(name)
if (vname == "") {
vname = "target_flags"
- macro = "TARGET_"
- mask = "MASK_"
extra_mask_macros[name] = 1
}
+
print "#define " macro name \
" ((" vname " & " mask name ") != 0)"
}
@@ -398,13 +396,12 @@ for (i = 0; i < n_opts; i++) {
opt = opt_args("InverseMask", flags[i])
if (opt ~ ",") {
vname = var_name(flags[i])
- macro = "OPTION_"
- mask = "OPTION_MASK_"
+ macro = opt_prefix_target(flags[i])
+ mask = opt_prefix_mask(flags[i])
if (vname == "") {
vname = "target_flags"
- macro = "TARGET_"
- mask = "MASK_"
}
+
print "#define " macro nth_arg(1, opt) \
" ((" vname " & " mask nth_arg(0, opt) ") == 0)"
}
Index: gcc/opt-functions.awk
===================================================================
--- gcc/opt-functions.awk (revision 192400)
+++ gcc/opt-functions.awk (working copy)
@@ -242,18 +242,14 @@ function var_set(flags)
s = opt_args("Mask", flags);
if (s != "") {
vn = var_name(flags);
- if (vn)
- return "0, CLVC_BIT_SET, OPTION_MASK_" s
- else
- return "0, CLVC_BIT_SET, MASK_" s
+ mask = opt_prefix_mask(flags)
+ return "0, CLVC_BIT_SET, " mask s
}
s = nth_arg(0, opt_args("InverseMask", flags));
if (s != "") {
vn = var_name(flags);
- if (vn)
- return "0, CLVC_BIT_CLEAR, OPTION_MASK_" s
- else
- return "0, CLVC_BIT_CLEAR, MASK_" s
+ mask = opt_prefix_mask(flags)
+ return "0, CLVC_BIT_CLEAR, " mask s
}
if (flag_set_p("Enum.*", flags)) {
en = opt_args("Enum", flags);
@@ -297,3 +293,25 @@ function lang_sanitized_name(name)
gsub( "[^" alnum "_]", "X", name )
return name
}
+
+# Given the option called NAME which is a mask argument, return the prefix for
+# the option (i.e. TARGET_ or OPTION_).
+function opt_prefix_target(name)
+{
+ variable = var_name(name)
+ if (variable == "" || flag_set_p("TargetName", name))
+ return "TARGET_";
+ else
+ return "OPTION_";
+}
+
+# Given the option called NAME which is a mask argument, return the prefix for
+# the mask name (i.e. MASK_ or OPTION_MASK_).
+function opt_prefix_mask(name)
+{
+ variable = var_name(name)
+ if (variable == "" || flag_set_p("TargetName", name))
+ return "MASK_";
+ else
+ return "OPTION_MASK_";
+}
Index: gcc/doc/options.texi
===================================================================
--- gcc/doc/options.texi (revision 192400)
+++ gcc/doc/options.texi (working copy)
@@ -339,12 +339,14 @@ You may also specify @code{Var} to selec
@code{target_flags}.
The options-processing script will automatically allocate a unique bit
-for the option. If the option is attached to @samp{target_flags},
-the script will set the macro @code{MASK_@var{name}} to the appropriate
-bitmask. It will also declare a @code{TARGET_@var{name}} macro that has
-the value 1 when the option is active and 0 otherwise. If you use @code{Var}
-to attach the option to a different variable, the associated macros are
-called @code{OPTION_MASK_@var{name}} and @code{OPTION_@var{name}} respectively.
+for the option. If the option is attached to @samp{target_flags}, the
+script will set the macro @code{MASK_@var{name}} to the appropriate
+bitmask. It will also declare a @code{TARGET_@var{name}} macro that
+has the value 1 when the option is active and 0 otherwise. If you use
+@code{Var} to attach the option to a different variable and do not
+used the @code{TargetName} opiton, the associated macros are called
+@code{OPTION_MASK_@var{name}} and @code{OPTION_@var{name}}
+respectively.
@item InverseMask(@var{othername})
@itemx InverseMask(@var{othername}, @var{thisname})
@@ -472,4 +474,10 @@ format}.
@item NoDWARFRecord
The option is omitted from the producer string written by
@option{-grecord-gcc-switches}.
+
+@item TargetName
+If the option was declared with @code{Mask} or @code{InverseMask} and
+also @code{Var} to specify an alternative flag word, the
+@code{TARGET_@var{name}} and @code{MASK_@var{name}} macros will be
+created of @code{OPTION_@var{name}} and @code{OPTION_MASK_@var{name}}.
@end table
Index: gcc/config/rs6000/rs6000.opt
===================================================================
--- gcc/config/rs6000/rs6000.opt (revision 192400)
+++ gcc/config/rs6000/rs6000.opt (working copy)
@@ -86,80 +86,88 @@ HOST_WIDE_INT rs6000_builtin_mask
TargetVariable
unsigned int rs6000_debug
-;; Save for target_flags_explicit
+;; Replacement for target_flags that gives us more options.
+Variable
+HOST_WIDE_INT rs6000_flags = TARGET_DEFAULT
+
+;; Save for rs6000_flags
+TargetSave
+HOST_WIDE_INT x_rs6000_flags
+
+;; Save for rs6000_flags_explicit
TargetSave
-int rs6000_target_flags_explicit
+HOST_WIDE_INT x_rs6000_flags_explicit
;; This option existed in the past, but now is always on.
mpowerpc
Target RejectNegative Undocumented Ignore
mpowerpc64
-Target Report Mask(POWERPC64)
+Target Report Mask(POWERPC64) TargetName Var(rs6000_flags)
Use PowerPC-64 instruction set
mpowerpc-gpopt
-Target Report Mask(PPC_GPOPT) Save
+Target Report Mask(PPC_GPOPT) TargetName Var(rs6000_flags)
Use PowerPC General Purpose group optional instructions
mpowerpc-gfxopt
-Target Report Mask(PPC_GFXOPT) Save
+Target Report Mask(PPC_GFXOPT) TargetName Var(rs6000_flags)
Use PowerPC Graphics group optional instructions
mmfcrf
-Target Report Mask(MFCRF) Save
+Target Report Mask(MFCRF) TargetName Var(rs6000_flags)
Use PowerPC V2.01 single field mfcr instruction
mpopcntb
-Target Report Mask(POPCNTB) Save
+Target Report Mask(POPCNTB) TargetName Var(rs6000_flags)
Use PowerPC V2.02 popcntb instruction
mfprnd
-Target Report Mask(FPRND) Save
+Target Report Mask(FPRND) TargetName Var(rs6000_flags)
Use PowerPC V2.02 floating point rounding instructions
mcmpb
-Target Report Mask(CMPB) Save
+Target Report Mask(CMPB) TargetName Var(rs6000_flags)
Use PowerPC V2.05 compare bytes instruction
mmfpgpr
-Target Report Mask(MFPGPR) Save
+Target Report Mask(MFPGPR) TargetName Var(rs6000_flags)
Use extended PowerPC V2.05 move floating point to/from GPR instructions
maltivec
-Target Report Mask(ALTIVEC) Save
+Target Report Mask(ALTIVEC) TargetName Var(rs6000_flags)
Use AltiVec instructions
mhard-dfp
-Target Report Mask(DFP) Save
+Target Report Mask(DFP) TargetName Var(rs6000_flags)
Use decimal floating point instructions
mmulhw
-Target Report Mask(MULHW) Save
+Target Report Mask(MULHW) TargetName Var(rs6000_flags)
Use 4xx half-word multiply instructions
mdlmzb
-Target Report Mask(DLMZB) Save
+Target Report Mask(DLMZB) TargetName Var(rs6000_flags)
Use 4xx string-search dlmzb instruction
mmultiple
-Target Report Mask(MULTIPLE) Save
+Target Report Mask(MULTIPLE) TargetName Var(rs6000_flags)
Generate load/store multiple instructions
mstring
-Target Report Mask(STRING) Save
+Target Report Mask(STRING) TargetName Var(rs6000_flags)
Generate string instructions for block moves
msoft-float
-Target Report RejectNegative Mask(SOFT_FLOAT)
+Target Report RejectNegative Mask(SOFT_FLOAT) TargetName Var(rs6000_flags)
Do not use hardware floating point
mhard-float
-Target Report RejectNegative InverseMask(SOFT_FLOAT, HARD_FLOAT)
+Target Report RejectNegative InverseMask(SOFT_FLOAT, HARD_FLOAT) TargetName
Var(rs6000_flags)
Use hardware floating point
mpopcntd
-Target Report Mask(POPCNTD) Save
+Target Report Mask(POPCNTD) TargetName Var(rs6000_flags)
Use PowerPC V2.06 popcntd instruction
mfriz
@@ -171,7 +179,7 @@ Target RejectNegative Joined Var(rs6000_
Vector library ABI to use
mvsx
-Target Report Mask(VSX) Save
+Target Report Mask(VSX) TargetName Var(rs6000_flags)
Use vector/scalar (VSX) instructions
mvsx-scalar-double
@@ -211,11 +219,11 @@ Target Undocumented Report Var(TARGET_VE
; Explicitly control whether we vectorize the builtins or not.
mno-update
-Target Report RejectNegative Mask(NO_UPDATE) Save
+Target Report RejectNegative Mask(NO_UPDATE) TargetName Var(rs6000_flags)
Do not generate load/store with update instructions
mupdate
-Target Report RejectNegative InverseMask(NO_UPDATE, UPDATE)
+Target Report RejectNegative InverseMask(NO_UPDATE, UPDATE) TargetName
Var(rs6000_flags)
Generate load/store with update instructions
msingle-pic-base
@@ -258,7 +266,7 @@ Target Report RejectNegative Joined Var(
Generate software reciprocal divide and square root for better throughput.
mrecip-precision
-Target Report Mask(RECIP_PRECISION) Save
+Target Report Mask(RECIP_PRECISION) TargetName Var(rs6000_flags)
Assume that the reciprocal estimate instructions provide more accuracy.
mno-fp-in-toc
@@ -285,7 +293,7 @@ Place symbol+offset constants in TOC
; This is at the cost of having 2 extra loads and one extra store per
; function, and one less allocable register.
mminimal-toc
-Target Report Mask(MINIMAL_TOC)
+Target Report Mask(MINIMAL_TOC) TargetName Var(rs6000_flags)
Use only one TOC entry per procedure
mfull-toc
@@ -309,7 +317,7 @@ Target Report Var(rs6000_block_move_inli
Specify how many bytes should be moved inline before calling out to
memcpy/memmove
misel
-Target Report Mask(ISEL) Save
+Target Report Mask(ISEL) TargetName Var(rs6000_flags)
Generate isel instructions
misel=no
Index: gcc/config/rs6000/darwin.opt
===================================================================
--- gcc/config/rs6000/darwin.opt (revision 192400)
+++ gcc/config/rs6000/darwin.opt (working copy)
@@ -34,9 +34,9 @@ findirect-data
Driver RejectNegative Alias(mfix-and-continue)
m64
-Target RejectNegative Negative(m32) Mask(64BIT)
+Target RejectNegative Negative(m32) Mask(64BIT) TargetName Var(rs6000_flags)
Generate 64-bit code
m32
-Target RejectNegative Negative(m64) InverseMask(64BIT)
+Target RejectNegative Negative(m64) InverseMask(64BIT) TargetName
Var(rs6000_flags)
Generate 32-bit code
Index: gcc/config/rs6000/aix64.opt
===================================================================
--- gcc/config/rs6000/aix64.opt (revision 192400)
+++ gcc/config/rs6000/aix64.opt (working copy)
@@ -20,11 +20,11 @@
; <http://www.gnu.org/licenses/>.
maix64
-Target Report RejectNegative Negative(maix32) Mask(64BIT)
+Target Report RejectNegative Negative(maix32) Mask(64BIT) TargetName
Var(rs6000_flags)
Compile for 64-bit pointers
maix32
-Target Report RejectNegative Negative(maix64) InverseMask(64BIT)
+Target Report RejectNegative Negative(maix64) InverseMask(64BIT) TargetName
Var(rs6000_flags)
Compile for 32-bit pointers
mpe
Index: gcc/config/rs6000/sysv4.opt
===================================================================
--- gcc/config/rs6000/sysv4.opt (revision 192400)
+++ gcc/config/rs6000/sysv4.opt (working copy)
@@ -49,12 +49,12 @@ Target Report Var(TARGET_NO_BITFIELD_TYP
Align to the base type of the bit-field
mstrict-align
-Target Report Mask(STRICT_ALIGN)
+Target Report Mask(STRICT_ALIGN) TargetName Var(rs6000_flags)
Align to the base type of the bit-field
Don't assume that unaligned accesses are handled by the system
mrelocatable
-Target Report Mask(RELOCATABLE)
+Target Report Mask(RELOCATABLE) TargetName Var(rs6000_flags)
Produce code relocatable at runtime
mrelocatable-lib
@@ -62,19 +62,19 @@ Target
Produce code relocatable at runtime
mlittle-endian
-Target Report RejectNegative Mask(LITTLE_ENDIAN)
+Target Report RejectNegative Mask(LITTLE_ENDIAN) TargetName Var(rs6000_flags)
Produce little endian code
mlittle
-Target Report RejectNegative Mask(LITTLE_ENDIAN)
+Target Report RejectNegative Mask(LITTLE_ENDIAN) TargetName Var(rs6000_flags)
Produce little endian code
mbig-endian
-Target Report RejectNegative InverseMask(LITTLE_ENDIAN)
+Target Report RejectNegative InverseMask(LITTLE_ENDIAN) TargetName
Var(rs6000_flags)
Produce big endian code
mbig
-Target Report RejectNegative InverseMask(LITTLE_ENDIAN)
+Target Report RejectNegative InverseMask(LITTLE_ENDIAN) TargetName
Var(rs6000_flags)
Produce big endian code
;; FIXME: This does nothing. What should be done?
@@ -96,7 +96,7 @@ Target RejectNegative
no description yet
meabi
-Target Report Mask(EABI)
+Target Report Mask(EABI) TargetName Var(rs6000_flags)
Use EABI
mbit-word
@@ -138,11 +138,11 @@ Target RejectNegative
no description yet
m64
-Target Report RejectNegative Negative(m32) Mask(64BIT)
+Target Report RejectNegative Negative(m32) Mask(64BIT) TargetName
Var(rs6000_flags)
Generate 64-bit code
m32
-Target Report RejectNegative Negative(m64) InverseMask(64BIT)
+Target Report RejectNegative Negative(m64) InverseMask(64BIT) TargetName
Var(rs6000_flags)
Generate 32-bit code
mnewlib
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c (revision 192400)
+++ gcc/config/rs6000/rs6000.c (working copy)
@@ -1845,10 +1845,10 @@ rs6000_debug_reg_global (void)
fprintf (stderr, DEBUG_FMT_S, "tune", "<none>");
cl_target_option_save (&cl_opts, &global_options);
- rs6000_print_isa_options (stderr, 0, "target_flags", target_flags);
+ rs6000_print_isa_options (stderr, 0, "rs6000_flags", rs6000_flags);
- rs6000_print_isa_options (stderr, 0, "target_flags_explicit",
- target_flags_explicit);
+ rs6000_print_isa_options (stderr, 0, "rs6000_flags_explicit",
+ rs6000_flags_explicit);
rs6000_print_builtin_options (stderr, 0, "rs6000_builtin_mask",
rs6000_builtin_mask);
@@ -2357,21 +2357,21 @@ darwin_rs6000_override_options (void)
if (TARGET_64BIT && ! TARGET_POWERPC64)
{
- target_flags |= MASK_POWERPC64;
+ rs6000_flags |= MASK_POWERPC64;
warning (0, "-m64 requires PowerPC64 architecture, enabling");
}
if (flag_mkernel)
{
rs6000_default_long_calls = 1;
- target_flags |= MASK_SOFT_FLOAT;
+ rs6000_flags |= MASK_SOFT_FLOAT;
}
/* Make -m64 imply -maltivec. Darwin's 64-bit ABI includes
Altivec. */
if (!flag_mkernel && !flag_apple_kext
&& TARGET_64BIT
- && ! (target_flags_explicit & MASK_ALTIVEC))
- target_flags |= MASK_ALTIVEC;
+ && ! (rs6000_flags_explicit & MASK_ALTIVEC))
+ rs6000_flags |= MASK_ALTIVEC;
/* Unless the user (not the configurer) has explicitly overridden
it with -mcpu=G3 or -mno-altivec, then 10.5+ targets default to
@@ -2379,10 +2379,10 @@ darwin_rs6000_override_options (void)
if (!flag_mkernel
&& !flag_apple_kext
&& strverscmp (darwin_macosx_version_min, "10.5") >= 0
- && ! (target_flags_explicit & MASK_ALTIVEC)
+ && ! (rs6000_flags_explicit & MASK_ALTIVEC)
&& ! global_options_set.x_rs6000_cpu_index)
{
- target_flags |= MASK_ALTIVEC;
+ rs6000_flags |= MASK_ALTIVEC;
}
}
#endif
@@ -2395,9 +2395,9 @@ darwin_rs6000_override_options (void)
#endif
/* Return the builtin mask of the various options used that could affect which
- builtins were used. In the past we used target_flags, but we've run out of
+ builtins were used. In the past we used rs6000_flags, but we've run out of
bits, and some options like SPE and PAIRED are no longer in
- target_flags. */
+ rs6000_flags. */
HOST_WIDE_INT
rs6000_builtin_mask_calculate (void)
@@ -2474,7 +2474,7 @@ rs6000_option_override_internal (bool gl
#endif
/* Don't override by the processor default if given explicitly. */
- set_masks &= ~target_flags_explicit;
+ set_masks &= ~rs6000_flags_explicit;
/* Process the -mcpu=<xxx> and -mtune=<xxx> argument. If the user changed
the cpu in a target attribute or pragma, but did not specify a tuning
@@ -2512,13 +2512,13 @@ rs6000_option_override_internal (bool gl
TARGET_DEFAULT. */
if (have_cpu)
{
- target_flags &= ~set_masks;
- target_flags |= (processor_target_table[cpu_index].target_enable
+ rs6000_flags &= ~set_masks;
+ rs6000_flags |= (processor_target_table[cpu_index].target_enable
& set_masks);
}
else
- target_flags |= (processor_target_table[cpu_index].target_enable
- & ~target_flags_explicit);
+ rs6000_flags |= (processor_target_table[cpu_index].target_enable
+ & ~rs6000_flags_explicit);
if (rs6000_tune_index >= 0)
tune_index = rs6000_tune_index;
@@ -2603,7 +2603,7 @@ rs6000_option_override_internal (bool gl
use instructions that would be microcoded on the Cell, use the
load/store multiple and string instructions. */
if (BYTES_BIG_ENDIAN && optimize_size && rs6000_gen_cell_microcode)
- target_flags |= ~target_flags_explicit & (MASK_MULTIPLE | MASK_STRING);
+ rs6000_flags |= ~rs6000_flags_explicit & (MASK_MULTIPLE | MASK_STRING);
/* Don't allow -mmultiple or -mstring on little endian systems
unless the cpu is a 750, because the hardware doesn't support the
@@ -2615,15 +2615,15 @@ rs6000_option_override_internal (bool gl
{
if (TARGET_MULTIPLE)
{
- target_flags &= ~MASK_MULTIPLE;
- if ((target_flags_explicit & MASK_MULTIPLE) != 0)
+ rs6000_flags &= ~MASK_MULTIPLE;
+ if ((rs6000_flags_explicit & MASK_MULTIPLE) != 0)
warning (0, "-mmultiple is not supported on little endian systems");
}
if (TARGET_STRING)
{
- target_flags &= ~MASK_STRING;
- if ((target_flags_explicit & MASK_STRING) != 0)
+ rs6000_flags &= ~MASK_STRING;
+ if ((rs6000_flags_explicit & MASK_STRING) != 0)
warning (0, "-mstring is not supported on little endian systems");
}
}
@@ -2635,10 +2635,10 @@ rs6000_option_override_internal (bool gl
if (!TARGET_HARD_FLOAT || !TARGET_FPRS
|| !TARGET_SINGLE_FLOAT || !TARGET_DOUBLE_FLOAT)
{
- if (target_flags_explicit & MASK_VSX)
+ if (rs6000_flags_explicit & MASK_VSX)
msg = N_("-mvsx requires hardware floating point");
else
- target_flags &= ~ MASK_VSX;
+ rs6000_flags &= ~ MASK_VSX;
}
else if (TARGET_PAIRED_FLOAT)
msg = N_("-mvsx and -mpaired are incompatible");
@@ -2649,9 +2649,9 @@ rs6000_option_override_internal (bool gl
msg = N_("-mvsx used with little endian code");
else if (TARGET_AVOID_XFORM > 0)
msg = N_("-mvsx needs indexed addressing");
- else if (!TARGET_ALTIVEC && (target_flags_explicit & MASK_ALTIVEC))
+ else if (!TARGET_ALTIVEC && (rs6000_flags_explicit & MASK_ALTIVEC))
{
- if (target_flags_explicit & MASK_VSX)
+ if (rs6000_flags_explicit & MASK_VSX)
msg = N_("-mvsx and -mno-altivec are incompatible");
else
msg = N_("-mno-altivec disables vsx");
@@ -2660,27 +2660,27 @@ rs6000_option_override_internal (bool gl
if (msg)
{
warning (0, msg);
- target_flags &= ~ MASK_VSX;
- target_flags_explicit |= MASK_VSX;
+ rs6000_flags &= ~ MASK_VSX;
+ rs6000_flags_explicit |= MASK_VSX;
}
}
/* For the newer switches (vsx, dfp, etc.) set some of the older options,
unless the user explicitly used the -mno-<option> to disable the code. */
if (TARGET_VSX)
- target_flags |= (ISA_2_6_MASKS_SERVER & ~target_flags_explicit);
+ rs6000_flags |= (ISA_2_6_MASKS_SERVER & ~rs6000_flags_explicit);
else if (TARGET_POPCNTD)
- target_flags |= (ISA_2_6_MASKS_EMBEDDED & ~target_flags_explicit);
+ rs6000_flags |= (ISA_2_6_MASKS_EMBEDDED & ~rs6000_flags_explicit);
else if (TARGET_DFP)
- target_flags |= (ISA_2_5_MASKS_SERVER & ~target_flags_explicit);
+ rs6000_flags |= (ISA_2_5_MASKS_SERVER & ~rs6000_flags_explicit);
else if (TARGET_CMPB)
- target_flags |= (ISA_2_5_MASKS_EMBEDDED & ~target_flags_explicit);
+ rs6000_flags |= (ISA_2_5_MASKS_EMBEDDED & ~rs6000_flags_explicit);
else if (TARGET_FPRND)
- target_flags |= (ISA_2_4_MASKS & ~target_flags_explicit);
+ rs6000_flags |= (ISA_2_4_MASKS & ~rs6000_flags_explicit);
else if (TARGET_POPCNTB)
- target_flags |= (ISA_2_2_MASKS & ~target_flags_explicit);
+ rs6000_flags |= (ISA_2_2_MASKS & ~rs6000_flags_explicit);
else if (TARGET_ALTIVEC)
- target_flags |= (MASK_PPC_GFXOPT & ~target_flags_explicit);
+ rs6000_flags |= (MASK_PPC_GFXOPT & ~rs6000_flags_explicit);
/* E500mc does "better" if we inline more aggressively. Respect the
user's opinion, though. */
@@ -2759,7 +2759,7 @@ rs6000_option_override_internal (bool gl
unless the altivec ABI was set. This is set by default for 64-bit, but
not for 32-bit. */
if (main_target_opt != NULL && !main_target_opt->x_rs6000_altivec_abi)
- target_flags &= ~((MASK_VSX | MASK_ALTIVEC) & ~target_flags_explicit);
+ rs6000_flags &= ~((MASK_VSX | MASK_ALTIVEC) & ~rs6000_flags_explicit);
/* Enable Altivec ABI for AIX -maltivec. */
if (TARGET_XCOFF && (TARGET_ALTIVEC || TARGET_VSX))
@@ -2837,14 +2837,14 @@ rs6000_option_override_internal (bool gl
rs6000_single_float = TARGET_E500_SINGLE || TARGET_E500_DOUBLE;
rs6000_double_float = TARGET_E500_DOUBLE;
- target_flags &= ~MASK_STRING;
+ rs6000_flags &= ~MASK_STRING;
break;
default:
- if (have_cpu && !(target_flags_explicit & MASK_ISEL))
- target_flags &= ~MASK_ISEL;
+ if (have_cpu && !(rs6000_flags_explicit & MASK_ISEL))
+ rs6000_flags &= ~MASK_ISEL;
break;
}
@@ -3216,9 +3216,9 @@ rs6000_option_override_internal (bool gl
}
/* Set the builtin mask of the various options used that could affect which
- builtins were used. In the past we used target_flags, but we've run out
+ builtins were used. In the past we used rs6000_flags, but we've run out
of bits, and some options like SPE and PAIRED are no longer in
- target_flags. */
+ rs6000_flags. */
rs6000_builtin_mask = rs6000_builtin_mask_calculate ();
if (TARGET_DEBUG_BUILTIN || TARGET_DEBUG_TARGET)
{
@@ -25330,7 +25330,7 @@ rs6000_darwin_file_start (void)
i = 0;
while (mapping[i].arg != NULL
&& strcmp (mapping[i].arg, cpu_id) != 0
- && (mapping[i].if_set & target_flags) == 0)
+ && (mapping[i].if_set & rs6000_flags) == 0)
i++;
fprintf (asm_out_file, "\t.machine %s\n", mapping[i].name);
@@ -27583,7 +27583,7 @@ rs6000_inner_target_options (tree args,
else
{
error_p = false;
- target_flags_explicit |= mask;
+ rs6000_flags_explicit |= mask;
/* VSX needs altivec, so -mvsx automagically sets
altivec. */
@@ -27594,9 +27594,9 @@ rs6000_inner_target_options (tree args,
invert = !invert;
if (invert)
- target_flags &= ~mask;
+ rs6000_flags &= ~mask;
else
- target_flags |= mask;
+ rs6000_flags |= mask;
}
break;
}
@@ -27851,10 +27851,10 @@ rs6000_pragma_target_parse (tree args, t
{
prev_opt = TREE_TARGET_OPTION (prev_tree);
prev_bumask = prev_opt->x_rs6000_builtin_mask;
- prev_flags = prev_opt->x_target_flags;
+ prev_flags = prev_opt->x_rs6000_flags;
cur_opt = TREE_TARGET_OPTION (cur_tree);
- cur_flags = cur_opt->x_target_flags;
+ cur_flags = cur_opt->x_rs6000_flags;
cur_bumask = cur_opt->x_rs6000_builtin_mask;
diff_bumask = (prev_bumask ^ cur_bumask);
@@ -27961,7 +27961,8 @@ rs6000_set_current_function (tree fndecl
static void
rs6000_function_specific_save (struct cl_target_option *ptr)
{
- ptr->rs6000_target_flags_explicit = target_flags_explicit;
+ ptr->x_rs6000_flags = rs6000_flags;
+ ptr->x_rs6000_flags_explicit = rs6000_flags_explicit;
}
/* Restore the current options */
@@ -27969,7 +27970,8 @@ rs6000_function_specific_save (struct cl
static void
rs6000_function_specific_restore (struct cl_target_option *ptr)
{
- target_flags_explicit = ptr->rs6000_target_flags_explicit;
+ rs6000_flags = ptr->x_rs6000_flags;
+ rs6000_flags_explicit = ptr->x_rs6000_flags_explicit;
(void) rs6000_option_override_internal (false);
}
@@ -27980,10 +27982,10 @@ rs6000_function_specific_print (FILE *fi
struct cl_target_option *ptr)
{
rs6000_print_isa_options (file, indent, "Isa options set",
- ptr->x_target_flags);
+ ptr->x_rs6000_flags);
rs6000_print_isa_options (file, indent, "Isa options explicit",
- ptr->rs6000_target_flags_explicit);
+ ptr->x_rs6000_flags_explicit);
}
/* Helper function to print the current isa or misc options on a line. */
@@ -28093,8 +28095,8 @@ rs6000_can_inline_p (tree caller, tree c
/* Callee's options should a subset of the caller's, i.e. a vsx function
can inline an altivec function but a non-vsx function can't inline a
vsx function. */
- if ((caller_opts->x_target_flags & callee_opts->x_target_flags)
- == callee_opts->x_target_flags)
+ if ((caller_opts->x_rs6000_flags & callee_opts->x_rs6000_flags)
+ == callee_opts->x_rs6000_flags)
ret = true;
}
Index: gcc/common/config/rs6000/rs6000-common.c
===================================================================
--- gcc/common/config/rs6000/rs6000-common.c (revision 192400)
+++ gcc/common/config/rs6000/rs6000-common.c (working copy)
@@ -82,23 +82,23 @@ rs6000_handle_option (struct gcc_options
switch (code)
{
case OPT_mfull_toc:
- opts->x_target_flags &= ~MASK_MINIMAL_TOC;
+ opts->x_rs6000_flags &= ~MASK_MINIMAL_TOC;
opts->x_TARGET_NO_FP_IN_TOC = 0;
opts->x_TARGET_NO_SUM_IN_TOC = 0;
- opts_set->x_target_flags |= MASK_MINIMAL_TOC;
+ opts_set->x_rs6000_flags |= MASK_MINIMAL_TOC;
#ifdef TARGET_USES_SYSV4_OPT
/* Note, V.4 no longer uses a normal TOC, so make -mfull-toc, be
just the same as -mminimal-toc. */
- opts->x_target_flags |= MASK_MINIMAL_TOC;
- opts_set->x_target_flags |= MASK_MINIMAL_TOC;
+ opts->x_rs6000_flags |= MASK_MINIMAL_TOC;
+ opts_set->x_rs6000_flags |= MASK_MINIMAL_TOC;
#endif
break;
#ifdef TARGET_USES_SYSV4_OPT
case OPT_mtoc:
/* Make -mtoc behave like -mminimal-toc. */
- opts->x_target_flags |= MASK_MINIMAL_TOC;
- opts_set->x_target_flags |= MASK_MINIMAL_TOC;
+ opts->x_rs6000_flags |= MASK_MINIMAL_TOC;
+ opts_set->x_rs6000_flags |= MASK_MINIMAL_TOC;
break;
#endif
@@ -107,9 +107,9 @@ rs6000_handle_option (struct gcc_options
#else
case OPT_m64:
#endif
- opts->x_target_flags |= MASK_POWERPC64;
- opts->x_target_flags |= ~opts_set->x_target_flags & MASK_PPC_GFXOPT;
- opts_set->x_target_flags |= MASK_POWERPC64;
+ opts->x_rs6000_flags |= MASK_POWERPC64;
+ opts->x_rs6000_flags |= ~opts_set->x_rs6000_flags & MASK_PPC_GFXOPT;
+ opts_set->x_rs6000_flags |= MASK_POWERPC64;
break;
#ifdef TARGET_USES_AIX64_OPT
@@ -117,8 +117,8 @@ rs6000_handle_option (struct gcc_options
#else
case OPT_m32:
#endif
- opts->x_target_flags &= ~MASK_POWERPC64;
- opts_set->x_target_flags |= MASK_POWERPC64;
+ opts->x_rs6000_flags &= ~MASK_POWERPC64;
+ opts_set->x_rs6000_flags |= MASK_POWERPC64;
break;
case OPT_mminimal_toc:
@@ -181,8 +181,8 @@ rs6000_handle_option (struct gcc_options
case OPT_mrelocatable:
if (value == 1)
{
- opts->x_target_flags |= MASK_MINIMAL_TOC;
- opts_set->x_target_flags |= MASK_MINIMAL_TOC;
+ opts->x_rs6000_flags |= MASK_MINIMAL_TOC;
+ opts_set->x_rs6000_flags |= MASK_MINIMAL_TOC;
opts->x_TARGET_NO_FP_IN_TOC = 1;
}
break;
@@ -190,14 +190,14 @@ rs6000_handle_option (struct gcc_options
case OPT_mrelocatable_lib:
if (value == 1)
{
- opts->x_target_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC;
- opts_set->x_target_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC;
+ opts->x_rs6000_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC;
+ opts_set->x_rs6000_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC;
opts->x_TARGET_NO_FP_IN_TOC = 1;
}
else
{
- opts->x_target_flags &= ~MASK_RELOCATABLE;
- opts_set->x_target_flags |= MASK_RELOCATABLE;
+ opts->x_rs6000_flags &= ~MASK_RELOCATABLE;
+ opts_set->x_rs6000_flags |= MASK_RELOCATABLE;
}
break;
#endif
@@ -227,15 +227,15 @@ rs6000_handle_option (struct gcc_options
"-msingle-float option equivalent to -mhard-float");
/* -msingle-float implies -mno-double-float and TARGET_HARD_FLOAT. */
opts->x_rs6000_double_float = 0;
- opts->x_target_flags &= ~MASK_SOFT_FLOAT;
- opts_set->x_target_flags |= MASK_SOFT_FLOAT;
+ opts->x_rs6000_flags &= ~MASK_SOFT_FLOAT;
+ opts_set->x_rs6000_flags |= MASK_SOFT_FLOAT;
break;
case OPT_mdouble_float:
/* -mdouble-float implies -msingle-float and TARGET_HARD_FLOAT. */
opts->x_rs6000_single_float = 1;
- opts->x_target_flags &= ~MASK_SOFT_FLOAT;
- opts_set->x_target_flags |= MASK_SOFT_FLOAT;
+ opts->x_rs6000_flags &= ~MASK_SOFT_FLOAT;
+ opts_set->x_rs6000_flags |= MASK_SOFT_FLOAT;
break;
case OPT_msimple_fpu:
@@ -259,8 +259,8 @@ rs6000_handle_option (struct gcc_options
{
/* If -mfpu is not none, then turn off SOFT_FLOAT, turn on
HARD_FLOAT. */
- opts->x_target_flags &= ~MASK_SOFT_FLOAT;
- opts_set->x_target_flags |= MASK_SOFT_FLOAT;
+ opts->x_rs6000_flags &= ~MASK_SOFT_FLOAT;
+ opts_set->x_rs6000_flags |= MASK_SOFT_FLOAT;
opts->x_rs6000_xilinx_fpu = 1;
if (fpu_type == FPU_SF_LITE || fpu_type == FPU_SF_FULL)
opts->x_rs6000_single_float = 1;
@@ -272,8 +272,8 @@ rs6000_handle_option (struct gcc_options
else
{
/* -mfpu=none is equivalent to -msoft-float. */
- opts->x_target_flags |= MASK_SOFT_FLOAT;
- opts_set->x_target_flags |= MASK_SOFT_FLOAT;
+ opts->x_rs6000_flags |= MASK_SOFT_FLOAT;
+ opts_set->x_rs6000_flags |= MASK_SOFT_FLOAT;
opts->x_rs6000_single_float = opts->x_rs6000_double_float = 0;
}
break;
@@ -298,7 +298,6 @@ rs6000_handle_option (struct gcc_options
#define TARGET_OPTION_OPTIMIZATION_TABLE rs6000_option_optimization_table
#undef TARGET_DEFAULT_TARGET_FLAGS
-#define TARGET_DEFAULT_TARGET_FLAGS \
- (TARGET_DEFAULT)
+#define TARGET_DEFAULT_TARGET_FLAGS 0
struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
Index: gcc/config/rs6000/aix43.h
===================================================================
--- gcc/config/rs6000/aix43.h (revision 192400)
+++ gcc/config/rs6000/aix43.h (working copy)
@@ -26,7 +26,7 @@
do { \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
- target_flags |= MASK_POWERPC64; \
+ rs6000_flags |= MASK_POWERPC64; \
warning (0, "-maix64 requires PowerPC64 architecture remain enabled"); \
} \
if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
Index: gcc/config/rs6000/aix51.h
===================================================================
--- gcc/config/rs6000/aix51.h (revision 192400)
+++ gcc/config/rs6000/aix51.h (working copy)
@@ -26,7 +26,7 @@
do { \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
- target_flags |= MASK_POWERPC64; \
+ rs6000_flags |= MASK_POWERPC64; \
warning (0, "-maix64 requires PowerPC64 architecture remain enabled"); \
} \
if (TARGET_POWERPC64 && ! TARGET_64BIT) \
Index: gcc/config/rs6000/aix52.h
===================================================================
--- gcc/config/rs6000/aix52.h (revision 192400)
+++ gcc/config/rs6000/aix52.h (working copy)
@@ -26,7 +26,7 @@
do { \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
- target_flags |= MASK_POWERPC64; \
+ rs6000_flags |= MASK_POWERPC64; \
warning (0, "-maix64 requires PowerPC64 architecture remain enabled"); \
} \
if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
Index: gcc/config/rs6000/aix53.h
===================================================================
--- gcc/config/rs6000/aix53.h (revision 192400)
+++ gcc/config/rs6000/aix53.h (working copy)
@@ -26,7 +26,7 @@
do { \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
- target_flags |= MASK_POWERPC64; \
+ rs6000_flags |= MASK_POWERPC64; \
warning (0, "-maix64 requires PowerPC64 architecture remain enabled"); \
} \
if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
Index: gcc/config/rs6000/aix61.h
===================================================================
--- gcc/config/rs6000/aix61.h (revision 192400)
+++ gcc/config/rs6000/aix61.h (working copy)
@@ -26,7 +26,7 @@
do { \
if (TARGET_64BIT && ! TARGET_POWERPC64) \
{ \
- target_flags |= MASK_POWERPC64; \
+ rs6000_flags |= MASK_POWERPC64; \
warning (0, "-maix64 requires PowerPC64 architecture remain enabled"); \
} \
if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
Index: gcc/config/rs6000/freebsd.h
===================================================================
--- gcc/config/rs6000/freebsd.h (revision 192400)
+++ gcc/config/rs6000/freebsd.h (working copy)
@@ -72,7 +72,7 @@
-mrelocatable or -mrelocatable-lib is given. */
#undef RELOCATABLE_NEEDS_FIXUP
#define RELOCATABLE_NEEDS_FIXUP \
- (target_flags & target_flags_explicit & MASK_RELOCATABLE)
+ (rs6000_flags & rs6000_flags_explicit & MASK_RELOCATABLE)
#define DBX_REGISTER_NUMBER(REGNO) rs6000_dbx_register_number (REGNO)
Index: gcc/config/rs6000/freebsd64.h
===================================================================
--- gcc/config/rs6000/freebsd64.h (revision 192400)
+++ gcc/config/rs6000/freebsd64.h (working copy)
@@ -57,7 +57,7 @@ extern int dot_symbols;
-mrelocatable or -mrelocatable-lib is given. */
#undef RELOCATABLE_NEEDS_FIXUP
#define RELOCATABLE_NEEDS_FIXUP \
- (target_flags & target_flags_explicit & MASK_RELOCATABLE)
+ (rs6000_flags & rs6000_flags_explicit & MASK_RELOCATABLE)
#undef RS6000_ABI_NAME
#define RS6000_ABI_NAME "freebsd"
@@ -79,14 +79,14 @@ extern int dot_symbols;
error (INVALID_64BIT, "call"); \
} \
dot_symbols = !strcmp (rs6000_abi_name, "aixdesc"); \
- if (target_flags & MASK_RELOCATABLE) \
+ if (rs6000_flags & MASK_RELOCATABLE) \
{ \
- target_flags &= ~MASK_RELOCATABLE; \
+ rs6000_flags &= ~MASK_RELOCATABLE; \
error (INVALID_64BIT, "relocatable"); \
} \
- if (target_flags & MASK_EABI) \
+ if (rs6000_flags & MASK_EABI) \
{ \
- target_flags &= ~MASK_EABI; \
+ rs6000_flags &= ~MASK_EABI; \
error (INVALID_64BIT, "eabi"); \
} \
if (TARGET_PROTOTYPE) \
@@ -94,12 +94,12 @@ extern int dot_symbols;
target_prototype = 0; \
error (INVALID_64BIT, "prototype"); \
} \
- if ((target_flags & MASK_POWERPC64) == 0) \
+ if ((rs6000_flags & MASK_POWERPC64) == 0) \
{ \
- target_flags |= MASK_POWERPC64; \
+ rs6000_flags |= MASK_POWERPC64; \
error ("-m64 requires a PowerPC64 cpu"); \
} \
- if ((target_flags_explicit & MASK_MINIMAL_TOC) != 0) \
+ if ((rs6000_flags_explicit & MASK_MINIMAL_TOC) != 0) \
{ \
if (global_options_set.x_rs6000_current_cmodel \
&& rs6000_current_cmodel != CMODEL_SMALL) \
Index: gcc/config/rs6000/linux.h
===================================================================
--- gcc/config/rs6000/linux.h (revision 192400)
+++ gcc/config/rs6000/linux.h (working copy)
@@ -109,7 +109,7 @@
-mrelocatable or -mrelocatable-lib is given. */
#undef RELOCATABLE_NEEDS_FIXUP
#define RELOCATABLE_NEEDS_FIXUP \
- (target_flags & target_flags_explicit & MASK_RELOCATABLE)
+ (rs6000_flags & rs6000_flags_explicit & MASK_RELOCATABLE)
#define TARGET_POSIX_IO
Index: gcc/config/rs6000/linux64.h
===================================================================
--- gcc/config/rs6000/linux64.h (revision 192400)
+++ gcc/config/rs6000/linux64.h (working copy)
@@ -81,7 +81,7 @@ extern int dot_symbols;
-mrelocatable or -mrelocatable-lib is given. */
#undef RELOCATABLE_NEEDS_FIXUP
#define RELOCATABLE_NEEDS_FIXUP \
- (target_flags & target_flags_explicit & MASK_RELOCATABLE)
+ (rs6000_flags & rs6000_flags_explicit & MASK_RELOCATABLE)
#undef RS6000_ABI_NAME
#define RS6000_ABI_NAME "linux"
@@ -103,14 +103,14 @@ extern int dot_symbols;
error (INVALID_64BIT, "call"); \
} \
dot_symbols = !strcmp (rs6000_abi_name, "aixdesc"); \
- if (target_flags & MASK_RELOCATABLE) \
+ if (rs6000_flags & MASK_RELOCATABLE) \
{ \
- target_flags &= ~MASK_RELOCATABLE; \
+ rs6000_flags &= ~MASK_RELOCATABLE; \
error (INVALID_64BIT, "relocatable"); \
} \
- if (target_flags & MASK_EABI) \
+ if (rs6000_flags & MASK_EABI) \
{ \
- target_flags &= ~MASK_EABI; \
+ rs6000_flags &= ~MASK_EABI; \
error (INVALID_64BIT, "eabi"); \
} \
if (TARGET_PROTOTYPE) \
@@ -118,12 +118,12 @@ extern int dot_symbols;
target_prototype = 0; \
error (INVALID_64BIT, "prototype"); \
} \
- if ((target_flags & MASK_POWERPC64) == 0) \
+ if ((rs6000_flags & MASK_POWERPC64) == 0) \
{ \
- target_flags |= MASK_POWERPC64; \
+ rs6000_flags |= MASK_POWERPC64; \
error ("-m64 requires a PowerPC64 cpu"); \
} \
- if ((target_flags_explicit & MASK_MINIMAL_TOC) != 0) \
+ if ((rs6000_flags_explicit & MASK_MINIMAL_TOC) != 0) \
{ \
if (global_options_set.x_rs6000_current_cmodel \
&& rs6000_current_cmodel != CMODEL_SMALL) \
Index: gcc/config/rs6000/rs6000-c.c
===================================================================
--- gcc/config/rs6000/rs6000-c.c (revision 192400)
+++ gcc/config/rs6000/rs6000-c.c (working copy)
@@ -295,7 +295,7 @@ rs6000_target_modify_macros (bool define
(define_p) ? "define" : "undef",
flags, bu_mask);
- /* target_flags based options. */
+ /* rs6000_flags based options. */
rs6000_define_or_undefine_macro (define_p, "_ARCH_PPC");
if ((flags & MASK_PPC_GPOPT) != 0)
rs6000_define_or_undefine_macro (define_p, "_ARCH_PPCSQ");
@@ -345,7 +345,7 @@ void
rs6000_cpu_cpp_builtins (cpp_reader *pfile)
{
/* Define all of the common macros. */
- rs6000_target_modify_macros (true, target_flags,
+ rs6000_target_modify_macros (true, rs6000_flags,
rs6000_builtin_mask_calculate ());
if (TARGET_FRE)
Index: gcc/config/rs6000/rs6000.h
===================================================================
--- gcc/config/rs6000/rs6000.h (revision 192400)
+++ gcc/config/rs6000/rs6000.h (working copy)
@@ -654,7 +654,7 @@ extern unsigned char rs6000_recip_bits[]
#define LONG_DOUBLE_TYPE_SIZE rs6000_long_double_type_size
/* Define this to set long double type size to use in libgcc2.c, which can
- not depend on target_flags. */
+ not depend on rs6000_flags. */
#ifdef __LONG_DOUBLE_128__
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 128
#else
@@ -2274,7 +2274,7 @@ extern int frame_pointer_needed;
/* Builtin targets. For now, we reuse the masks for those options that are in
target flags, and pick two random bits for SPE and paired which aren't in
- target_flags. */
+ rs6000_flags. */
#define RS6000_BTM_ALWAYS 0 /* Always enabled. */
#define RS6000_BTM_ALTIVEC MASK_ALTIVEC /* VMX/altivec vectors. */
#define RS6000_BTM_VSX MASK_VSX /* VSX (vector/scalar). */
Index: gcc/config/rs6000/rs6000-opts.h
===================================================================
--- gcc/config/rs6000/rs6000-opts.h (revision 192400)
+++ gcc/config/rs6000/rs6000-opts.h (working copy)
@@ -146,4 +146,8 @@ enum rs6000_vector {
we need to distinguish the special "native" value. */
#define RS6000_CPU_OPTION_NATIVE -1
+/* All switches explicitly set by the user on the command line (both -mswitch
+ and -mno-switch) versions. */
+#define rs6000_flags_explicit global_options_set.x_rs6000_flags
+
#endif
Index: gcc/config/rs6000/sysv4.h
===================================================================
--- gcc/config/rs6000/sysv4.h (revision 192400)
+++ gcc/config/rs6000/sysv4.h (working copy)
@@ -40,8 +40,8 @@
#undef ASM_DEFAULT_SPEC
#define ASM_DEFAULT_SPEC "-mppc"
-#define TARGET_TOC ((target_flags & MASK_64BIT)
\
- || ((target_flags & (MASK_RELOCATABLE \
+#define TARGET_TOC ((rs6000_flags & MASK_64BIT)
\
+ || ((rs6000_flags & (MASK_RELOCATABLE \
| MASK_MINIMAL_TOC)) \
&& flag_pic > 1) \
|| DEFAULT_ABI == ABI_AIX)
@@ -77,13 +77,13 @@ do {
\
else if (!strcmp (rs6000_abi_name, "sysv-noeabi")) \
{ \
rs6000_current_abi = ABI_V4; \
- target_flags &= ~ MASK_EABI; \
+ rs6000_flags &= ~ MASK_EABI; \
} \
else if (!strcmp (rs6000_abi_name, "sysv-eabi") \
|| !strcmp (rs6000_abi_name, "eabi")) \
{ \
rs6000_current_abi = ABI_V4; \
- target_flags |= MASK_EABI; \
+ rs6000_flags |= MASK_EABI; \
} \
else if (!strcmp (rs6000_abi_name, "aixdesc")) \
rs6000_current_abi = ABI_AIX; \
@@ -102,8 +102,8 @@ do {
\
else if (!strcmp (rs6000_abi_name, "i960-old")) \
{ \
rs6000_current_abi = ABI_V4; \
- target_flags |= (MASK_LITTLE_ENDIAN | MASK_EABI);
\
- target_flags &= ~MASK_STRICT_ALIGN; \
+ rs6000_flags |= (MASK_LITTLE_ENDIAN | MASK_EABI);
\
+ rs6000_flags &= ~MASK_STRICT_ALIGN; \
TARGET_NO_BITFIELD_WORD = 1; \
} \
else \
@@ -168,13 +168,13 @@ do {
\
\
if (TARGET_RELOCATABLE && !TARGET_MINIMAL_TOC) \
{ \
- target_flags |= MASK_MINIMAL_TOC;
\
+ rs6000_flags |= MASK_MINIMAL_TOC;
\
error ("-mrelocatable and -mno-minimal-toc are incompatible"); \
} \
\
if (TARGET_RELOCATABLE && rs6000_current_abi == ABI_AIX) \
{ \
- target_flags &= ~MASK_RELOCATABLE; \
+ rs6000_flags &= ~MASK_RELOCATABLE; \
error ("-mrelocatable and -mcall-%s are incompatible", \
rs6000_abi_name); \
} \
@@ -188,7 +188,7 @@ do {
\
\
if (rs6000_current_abi == ABI_AIX && TARGET_LITTLE_ENDIAN) \
{ \
- target_flags &= ~MASK_LITTLE_ENDIAN; \
+ rs6000_flags &= ~MASK_LITTLE_ENDIAN; \
error ("-mcall-aixdesc must be big endian"); \
} \
\
@@ -200,7 +200,7 @@ do {
\
/* Treat -fPIC the same as -mrelocatable. */
\
if (flag_pic > 1 && DEFAULT_ABI != ABI_AIX) \
{ \
- target_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC; \
+ rs6000_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC; \
TARGET_NO_FP_IN_TOC = 1; \
} \
\
@@ -212,9 +212,9 @@ do {
\
#ifndef RS6000_BI_ARCH
# define SUBSUBTARGET_OVERRIDE_OPTIONS \
do { \
- if ((TARGET_DEFAULT ^ target_flags) & MASK_64BIT) \
+ if ((TARGET_DEFAULT ^ rs6000_flags) & MASK_64BIT) \
error ("-m%s not supported in this configuration", \
- (target_flags & MASK_64BIT) ? "64" : "32"); \
+ (rs6000_flags & MASK_64BIT) ? "64" : "32"); \
} while (0)
#endif
@@ -500,7 +500,7 @@ extern int fixuplabelno;
#define TARGET_OS_SYSV_CPP_BUILTINS() \
do \
{ \
- if (target_flags_explicit \
+ if (rs6000_flags_explicit \
& MASK_RELOCATABLE) \
builtin_define ("_RELOCATABLE"); \
} \