On Mon, Mar 02, 2015 at 01:08:13PM +0000, Maxim Kuvyrkov wrote: > > On Mar 2, 2015, at 4:44 AM, Terry Guo <terry....@arm.com> wrote: > > > > Hi there, > > > > If target mode isn't specified via either gcc configuration option > > --with-mode or command line, this patch intends to improve gcc driver to > > automatically add option -mthumb for thumb-only target. Tested with gcc > > regression test for various arm targets, no regression. Is it OK? > > > > BR, > > Terry > > > > gcc/ChangeLog: > > > > 2015-03-02 Terry Guo <terry....@arm.com> > > > > * common/config/arm/arm-common.c (arm_is_target_thumb_only): New > > function. > > * config/arm/arm-protos.h (FL_ Macros): Move to ... > > * config/arm/arm-opts.h (FL_ Macros): ... here. > > (struct arm_arch_core_flag): New struct. > > (arm_arch_core_flags): New array for arch/core and flag map. > > * config/arm/arm.h (MODE_SET_SPEC_FUNCTIONS): Define new SPEC > > function. > > (EXTRA_SPEC_FUNCTIONS): Include new SPEC function. > > (MODE_SET_SPECS): New SPEC. > > (DRIVER_SELF_SPECS): Include new SPEC.<gcc-mthumb-option-v5.txt> > > Did you consider approach of implementing this purely inside cc1 rather than > driver? > > We do not seem to need to pass -mthumb to assembler or linker since those > will pick up ARM-ness / Thumb-ness from function annotations. Therefore we > need to handle -marm / -mthumb for cc1 only. What am I missing?
I recently had a similar argument with myself regarding the usefulness of rewriting -mcpu values in the driver before handing them off the assembler (as we do for big.LITTLE systems), we could just rely on the .arch directives in the assembler files. The problem with this argument, and the one you make here, is that it doesn't cover users driving the assembler with a GCC command to assemble hand-rolled files without directives. i.e. gcc foo.s bar.c -mthumb -mcpu=cortex-a57.cortex-a53 Should have the effect when assembling foo.s of enforcing thumb mode, and permitting ARMv8-A instructions, regardless whether foo.s explicitly enables these through directives. Cheers, James