diff options
author | chrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-11-13 15:19:19 +0000 |
---|---|---|
committer | chrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-11-13 15:19:19 +0000 |
commit | 783bc931cc27f3f59ecfb84e43b61a3a34506ecc (patch) | |
tree | 5a50d13438174722c8bc6b3d676beb54b3a92462 /gcc/config/arm | |
parent | 22646b86690b53496c9d004308d4dad0c3cad0a6 (diff) | |
download | gcc-783bc931cc27f3f59ecfb84e43b61a3a34506ecc.tar.gz |
2015-11-13 Christian Bruel <christian.bruel@st.com>
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230327 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm')
-rw-r--r-- | gcc/config/arm/arm.c | 36 | ||||
-rw-r--r-- | gcc/config/arm/arm.opt | 2 |
2 files changed, 18 insertions, 20 deletions
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 |