> 2012-10-17 Michael Meissner <[email protected]>
>
> * config/rs6000/rs6000.opt (rs6000_isa_flags): New flag word to
> replace target_flags that gives us 63 possible switches.
> (x_rs6000_isa_flags): Save area for rs6000_isa_flags.
> (x_rs6000_isa_flags_explicit): Save area for
> rs6000_isa_flags_explicit.
> (rs6000_target_flags_explicit): Delete in favor of
> x_rs6000_isa_flags_explicit.
> (-mpowerpc64): Change all switches that used to be in target_flags
> to now be in rs6000_isa_flags. In using rs6000_isa_flags, the
> options machinary will generate names of the form OPITON_<xxx>
> instead of TARGET_<xxx> and OPTION_MASK_<xxx> instead of
> MASK_<xxx>.
> (-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.
> (-mrecip-precision): Likewise.
> (-mminimal-toc): Likewise.
> (-misel): Likewise.
> * config/rs6000/aix64.opt (-maix64): Likewise.
> (-maix32): 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/darwin.opt (-m64): Likewise.
> (-m32): Likewise.
>
> * config/rs6000/rs6000-cpus.def (ISA_2_1_MASKS): Move the various
> masks used in rs6000.c here, since they are more logically in this
> file. Convert from being enums to just #defines, since the types
> of these masks is now HOST_WIDE_INT instead of int. For
> POWERPC_MASKS, add MASK_SOFT_FLOAT, since the only use case or'ed
> in the mask. Change the use in rs6000.c not to do the OR of
> MASK_SOFT_FLOAT.
> (ISA_2_1_MASKS): Likewise.
> (ISA_2_2_MASKS): Likewise.
> (ISA_2_4_MASKS): Likewise.
> (ISA_2_5_MASKS_EMBEDDED): Likewise.
> (ISA_2_5_MASKS_SERVER): Likewise.
> (POWERPC_7400_MASK): Likewise.
> (POWERPC_MASKS): Likewise.
> * config/rs6000/rs6000.c (ISA_2_1_MASKS): Likewise.
> (ISA_2_1_MASKS): Likewise.
> (ISA_2_2_MASKS): Likewise.
> (ISA_2_4_MASKS): Likewise.
> (ISA_2_5_MASKS_EMBEDDED): Likewise.
> (ISA_2_5_MASKS_SERVER): Likewise.
> (POWERPC_7400_MASK): Likewise.
> (POWERPC_MASKS): Likewise.
> (rs6000_option_override_internal): Likewise.
>
> * config/rs6000/rs6000.c (darwin_rs6000_override_options): Change
> all uses of target_flags to rs6000_isa_flags. Change all uses of
> target_flags_explicit to rs6000_isa_flags_explicit. Change the
> use of MASK_<xxx> to OPTION_MASK_<xxx> that options.h defines when
> we use a secondary flags word. Save/restore/print the new flags
> word when switching contexts with different target attributes.
> (rs6000_option_override_internal): Likewise.
> (rs6000_darwin_file_start): Likewise.
> (rs6000_opt_masks): 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.
> * config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
> Likewise.
> (rs6000_cpu_cpp_builtins): Likewise.
> * common/config/rs6000/rs6000-driver.c (rs6000_handle_option):
> Likewise.
>
> * config/rs6000/rs6000.h (MASK_ALTIVEC): In moving to using
> Var(...) for all of the isa switches, the options machinery now
> uses OPTION_MASK_<xxx> instead of MASK_<xxx> for the mask name.
> Use #define to map the old name into the new name. For switches
> that are defined in aix64.opt, sysv4.opt, and darwin.opt, only do
> the definition if those switches were defined.
> (MASK_ALTIVEC): Likewise.
> (MASK_CMPB): Likewise.
> (MASK_DFP): Likewise.
> (MASK_DLMZB): Likewise.
> (MASK_EABI): Likewise.
> (MASK_FPRND): Likewise.
> (MASK_HARD_FLOAT): Likewise.
> (MASK_ISEL): Likewise.
> (MASK_MFCRF): Likewise.
> (MASK_MFPGPR): Likewise.
> (MASK_MULHW): Likewise.
> (MASK_MULTIPLE): Likewise.
> (MASK_NO_UPDATE): Likewise.
> (MASK_POPCNTB): Likewise.
> (MASK_POPCNTD): Likewise.
> (MASK_PPC_GFXOPT): Likewise.
> (MASK_PPC_GPOPT): Likewise.
> (MASK_RECIP_PRECISION): Likewise.
> (MASK_SOFT_FLOAT): Likewise.
> (MASK_STRICT_ALIGN): Likewise.
> (MASK_STRING): Likewise.
> (MASK_UPDATE): Likewise.
> (MASK_VSX): Likewise.
> (MASK_POWERPC64): Likewise.
> (MASK_64BIT): Likewise.
> (MASK_RELOCATABLE): Likewise.
> (MASK_LITTLE_ENDIAN): Likewise.
> (MASK_MINIMAL_TOC): Likewise.
> (MASK_REGNAMES): Likewise.
> (MASK_PROTOTYPE): Likewise.
> (rs6000_isa_flags_explicit): Define in terms of the
> global_options_set structure.
>
> * gcc/config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS):
> Change use of target_flags to rs6000_isa_flags,
> target_flags_explicit to rs6000_isa_flags_explicit, and MASK_<xxx>
> to OPTION_MASK_<xxx>.
> * gcc/config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS):
> Likewise.
> * gcc/config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS):
> Likewise.
> * gcc/config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS):
> Likewise.
> * gcc/config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS):
> Likewise.
> * gcc/config/rs6000/freebsd64.h (RELOCATABLE_NEEDS_FIXUP):
> Likewise.
> (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
> * gcc/config/rs6000/freebsd.h (RELOCATABLE_NEEDS_FIXUP):
> Likewise.
> * gcc/config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP):
> Likewise.
> (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
> (OPTION_LITTLE_ENDIAN): Likewise.
> (OPTION_RELOCATABLE): Likewise.
> (OPTION_EABI): Likewise.
> (OPTION_PROTOTYPE): Likewise.
> * gcc/config/rs6000/linux.h (RELOCATABLE_NEEDS_FIXUP): Likewise.
> * gcc/config/rs6000/option-defaults.h (OPTION_MASK_64BIT):
> Likewise.
> (OPT_ARCH32): Likewise.
> (OPT_ARCH64): Likewise.
> * gcc/config/rs6000/sysv4.h (TARGET_TOC): Likewise.
> (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
> (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
> (TARGET_OS_SYSV_CPP_BUILTINS): Likewise.
>
> * config/rs6000/t-rs6000 (rs6000.o): Add rs6000-cpus.def as a
> dependency.
This apparently breaks bootstrap on PowerPC/Linux:
libtool: compile: /nile.build/botcazou/gcc-head/powerpc-linux-gnu/./gcc/xgcc
-B/nile.build/botcazou/gcc-head/powerpc-linux-gnu/./gcc/ -
B/nile.build/botcazou/gcc-head/install_ppc/powerpc-linux-gnu/bin/ -
B/nile.build/botcazou/gcc-head/install_ppc/powerpc-linux-gnu/lib/ -isystem
/nile.build/botcazou/gcc-head/install_ppc/powerpc-linux-gnu/include -isystem
/nile.build/botcazou/gcc-head/install_ppc/powerpc-linux-gnu/sys-include
/nile.build/botcazou/gcc-head/src/libobjc/encoding.c -c -I. -
I/nile.build/botcazou/gcc-head/src/libobjc -g -O2 -W -Wall -Wwrite-strings -
Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions
-I/nile.build/botcazou/gcc-head/src/libobjc/../gcc -I/nile.build/botcazou/gcc-
head/src/libobjc/../gcc/config -I../.././gcc -I/nile.build/botcazou/gcc-
head/src/libobjc/../libgcc -I../libgcc -I/nile.build/botcazou/gcc-
head/src/libobjc/../include -fPIC -DPIC -o .libs/encoding.o
In file included from ../.././gcc/tm.h:19:0,
from /nile.build/botcazou/gcc-head/src/libobjc/encoding.c:37:
/nile.build/botcazou/gcc-head/src/libobjc/encoding.c: In function
'objc_layout_structure_next_member':
../.././gcc/options.h:4286:26: error: 'rs6000_isa_flags' undeclared (first use
in this function)
#define TARGET_ALTIVEC ((rs6000_isa_flags & OPTION_MASK_ALTIVEC) != 0)
^
/nile.build/botcazou/gcc-head/src/libobjc/../gcc/config/rs6000/sysv4.h:301:4:
note: in expansion of macro 'TARGET_ALTIVEC'
((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
^
/nile.build/botcazou/gcc-head/src/libobjc/encoding.c:1138:19: note: in
expansion of macro 'ADJUST_FIELD_ALIGN'
desired_align = ADJUST_FIELD_ALIGN (type, desired_align);
^
../.././gcc/options.h:4286:26: note: each undeclared identifier is reported
only once for each function it appears in
#define TARGET_ALTIVEC ((rs6000_isa_flags & OPTION_MASK_ALTIVEC) != 0)
^
/nile.build/botcazou/gcc-head/src/libobjc/../gcc/config/rs6000/sysv4.h:301:4:
note: in expansion of macro 'TARGET_ALTIVEC'
((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
^
/nile.build/botcazou/gcc-head/src/libobjc/encoding.c:1138:19: note: in
expansion of macro 'ADJUST_FIELD_ALIGN'
desired_align = ADJUST_FIELD_ALIGN (type, desired_align);
^
../.././gcc/options.h:4255:30: error: 'HOST_WIDE_INT_1' undeclared (first use
in this function)
#define OPTION_MASK_ALTIVEC (HOST_WIDE_INT_1 << 1)
^
../.././gcc/options.h:4286:45: note: in expansion of macro
'OPTION_MASK_ALTIVEC'
#define TARGET_ALTIVEC ((rs6000_isa_flags & OPTION_MASK_ALTIVEC) != 0)
^
/nile.build/botcazou/gcc-head/src/libobjc/../gcc/config/rs6000/sysv4.h:301:4:
note: in expansion of macro 'TARGET_ALTIVEC'
((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
^
/nile.build/botcazou/gcc-head/src/libobjc/encoding.c:1138:19: note: in
expansion of macro 'ADJUST_FIELD_ALIGN'
desired_align = ADJUST_FIELD_ALIGN (type, desired_align);
^
make[1]: *** [encoding.lo] Error 1
make[1]: Leaving directory `/nfs/nile/nile.build/botcazou/gcc-head/powerpc-
linux-gnu/powerpc-linux-gnu/libobjc'
make: *** [all-target-libobjc] Error 2
--
Eric Botcazou