This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Rs6000 infrastructure cleanup (switches), revised patch #2f


Mike,

This patch is okay with the appropriate changes to adapt to the common
infrastructure improvements.

We will continue to iterate on this.

Are there any testcases that would be useful? A lot of other testcases
use target flags, so those probably will point out problems.

Thanks, David

On Tue, Oct 16, 2012 at 11:56 AM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:
> While Joseph and I are iterating on global changes to the options machinery,
> David had said patch #2b was ok for just powerpc specific changes.  I took
> patch #2b, and adjusted it for the 3 patches I already checked in.  I rewrote
> the ChangeLog entries to try and be more explicit in what was going on.  This
> bootstraped and had no regressions.  Is this ok to check in?
>
> 2012-10-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
>
>         * 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 (OPTION_MFCRF): Replace TARGET_<xxx> with
>         OPTION_<xxx> if the assembler doesn't support mfcrf, popcntb,
>         fprnd, cmpb, mfpgpr, dfp, popcntd instructions.
>         (TARGET_MFCRF): Likewise.
>         (OPTION_POPCNTB): Likewise.
>         (TARGET_POPCNTB): Likewise.
>         (OPTION_FPRND): Likewise.
>         (TARGET_FPRND): Likewise.
>         (OPTION_CMPB): Likewise.
>         (TARGET_CMPB): Likewise.
>         (OPTION_HARD_DFP): Likewise.
>         (TARGET_HARD_DFP): Likewise.
>         (OPTION_POPCNTD): Likewise.
>         (TARGET_POPCNTD): LIkewise.
>         (TARGET_ALTIVEC): In moving to using Var(...) for all of the isa
>         switches, the options machinery now uses OPTION_<xxx> instead of
>         TARGET_<xxx> for whether the switch was set, 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.
>         (TARGET_CMPB): Likewise.
>         (TARGET_DFP): Likewise.
>         (TARGET_DLMZB): Likewise.
>         (TARGET_EABI): Likewise.
>         (TARGET_FPRND): Likewise.
>         (TARGET_HARD_FLOAT): Likewise.
>         (TARGET_ISEL): Likewise.
>         (TARGET_MFCRF): Likewise.
>         (TARGET_MFPGPR): Likewise.
>         (TARGET_MULHW): Likewise.
>         (TARGET_MULTIPLE): Likewise.
>         (TARGET_NO_UPDATE): Likewise.
>         (TARGET_POPCNTB): Likewise.
>         (TARGET_POPCNTD): Likewise.
>         (TARGET_PPC_GFXOPT): Likewise.
>         (TARGET_PPC_GPOPT): Likewise.
>         (TARGET_RECIP_PRECISION): Likewise.
>         (TARGET_SOFT_FLOAT): Likewise.
>         (TARGET_STRICT_ALIGN): Likewise.
>         (TARGET_STRING): Likewise.
>         (TARGET_UPDATE): Likewise.
>         (TARGET_VSX): Likewise.
>         (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.
>         (TARGET_POWERPC64): Likewise.
>         (MASK_POWERPC64): Likewise.
>         (TARGET_64BIT): Likewise.
>         (MASK_64BIT): Likewise.
>         (TARGET_RELOCATABLE): Likewise.
>         (MASK_RELOCATABLE): Likewise.
>         (TARGET_LITTLE_ENDIAN): Likewise.
>         (MASK_LITTLE_ENDIAN): Likewise.
>         (TARGET_MINIMAL_TOC): Likewise.
>         (MASK_MINIMAL_TOC): Likewise.
>         (TARGET_REGNAMES): Likewise.
>         (MASK_REGNAMES): Likewise.
>         (TARGET_PROTOTYPE): 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.
>
> --
> Michael Meissner, IBM
> 5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
> meissner@linux.vnet.ibm.com     fax +1 (978) 399-6899


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]