From: Christian Bruel Date: Fri, 13 Nov 2015 15:19:19 +0000 (+0100) Subject: re PR target/65837 ([arm-linux-gnueabihf] lto1 target specific builtin not available) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1596d018c54213312564d4561e4487c3c4927d7a;p=gcc.git re PR target/65837 ([arm-linux-gnueabihf] lto1 target specific builtin not available) 2015-11-13 Christian Bruel PR target/65837 * config/arm/arm.c (arm_option_override): Move NEON check... (arm_option_check_internal): here (arm_file_start): Move .fpu print... (arm_declare_function_name): here (arm_option_print): Dump current fpu name. * config/arm/arm.opt (arm_fpu_index): Mark Save. From-SVN: r230327 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4d6165ecda5..60d7a4d7719 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2015-11-13 Christian Bruel + + PR target/65837 + * config/arm/arm.c (arm_option_override): Move NEON check... + (arm_option_check_internal): here + (arm_file_start): Move .fpu print... + (arm_declare_function_name): here + (arm_option_print): Dump current fpu name. + * config/arm/arm.opt (arm_fpu_index): Mark Save. + 2015-11-13 Segher Boessenkool Kyrylo Tkachov diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 709369441d0..e31be67328d 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -2704,6 +2704,12 @@ static void arm_option_check_internal (struct gcc_options *opts) { int flags = opts->x_target_flags; + const struct arm_fpu_desc *fpu_desc = &all_fpus[opts->x_arm_fpu_index]; + + /* iWMMXt and NEON are incompatible. */ + if (TARGET_IWMMXT && TARGET_VFP + && ARM_FPU_FSET_HAS (fpu_desc->features, FPU_FL_NEON)) + error ("iWMMXt and NEON are incompatible"); /* Make sure that the processor choice does not conflict with any of the other command line choices. */ @@ -3154,10 +3160,6 @@ arm_option_override (void) error ("AAPCS does not support -mcallee-super-interworking"); } - /* iWMMXt and NEON are incompatible. */ - if (TARGET_IWMMXT && TARGET_NEON) - error ("iWMMXt and NEON are incompatible"); - /* __fp16 support currently assumes the core has ldrh. */ if (!arm_arch4 && arm_fp16_format != ARM_FP16_FORMAT_NONE) sorry ("__fp16 and no ldrh"); @@ -25867,7 +25869,6 @@ arm_file_start (void) if (TARGET_BPABI) { - const char *fpu_name; if (arm_selected_arch) { /* armv7ve doesn't support any extensions. */ @@ -25911,23 +25912,14 @@ arm_file_start (void) if (print_tune_info) arm_print_tune_info (); - if (TARGET_SOFT_FLOAT) + if (! TARGET_SOFT_FLOAT && TARGET_VFP) { - fpu_name = "softvfp"; - } - else - { - fpu_name = arm_fpu_desc->name; - if (arm_fpu_desc->model == ARM_FP_MODEL_VFP) - { - if (TARGET_HARD_FLOAT && TARGET_VFP_SINGLE) - arm_emit_eabi_attribute ("Tag_ABI_HardFP_use", 27, 1); + if (TARGET_HARD_FLOAT && TARGET_VFP_SINGLE) + arm_emit_eabi_attribute ("Tag_ABI_HardFP_use", 27, 1); - if (TARGET_HARD_FLOAT_ABI) - arm_emit_eabi_attribute ("Tag_ABI_VFP_args", 28, 1); - } + if (TARGET_HARD_FLOAT_ABI) + arm_emit_eabi_attribute ("Tag_ABI_VFP_args", 28, 1); } - asm_fprintf (asm_out_file, "\t.fpu %s\n", fpu_name); /* Some of these attributes only apply when the corresponding features are used. However we don't have any easy way of figuring this out. @@ -29766,11 +29758,14 @@ static void arm_option_print (FILE *file, int indent, struct cl_target_option *ptr) { int flags = ptr->x_target_flags; + const struct arm_fpu_desc *fpu_desc = &all_fpus[ptr->x_arm_fpu_index]; fprintf (file, "%*sselected arch %s\n", indent, "", TARGET_THUMB2_P (flags) ? "thumb2" : TARGET_THUMB_P (flags) ? "thumb1" : "arm"); + + fprintf (file, "%*sselected fpu %s\n", indent, "", fpu_desc->name); } /* Hook to determine if one function can safely inline another. */ @@ -29979,6 +29974,9 @@ arm_declare_function_name (FILE *stream, const char *name, tree decl) else fprintf (stream, "\t.arm\n"); + asm_fprintf (asm_out_file, "\t.fpu %s\n", TARGET_SOFT_FLOAT + ? "softvfp" : arm_fpu_desc->name); + if (TARGET_POKE_FUNCTION_NAME) arm_poke_function_name (stream, (const char *) name); } diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt index c12f2b13a03..6f2db8f3a0d 100644 --- a/gcc/config/arm/arm.opt +++ b/gcc/config/arm/arm.opt @@ -144,7 +144,7 @@ EnumValue Enum(arm_fp16_format_type) String(alternative) Value(ARM_FP16_FORMAT_ALTERNATIVE) mfpu= -Target RejectNegative Joined Enum(arm_fpu) Var(arm_fpu_index) +Target RejectNegative Joined Enum(arm_fpu) Var(arm_fpu_index) Save Specify the name of the target floating point hardware/format. mhard-float