On 12/10/11 01:48, Ramana Radhakrishnan wrote: >> Any objections to this version of the patch ? > > Fine with me though I think it's worthwhile to have such comments > without -dA but that's my personal impression. I don't care either > way. > > cheers > Ramana >
Why not define an enum in arm.h with the EABI attributes, then you can write #define EMIT_EABI_ATTRIBUTE(NAME,VAL) \ do \ { \ asm_fprintf (asm_out_file, "\t.eabi_attribute %d, %d", NAME, VAL); \ if (flag_verbose_asm || flag_debug_asm) \ asm_fprintf (asm_out_file, "\t%s " #NAME, ASM_COMMENT_START); \ asm_fprintf (asm_out_file, "\n"); \ } \ while (0) >> >> Cheers >> Nick >> >> gcc/ChangeLog >> 2011-10-05 Nick Clifton <ni...@redhat.com> >> >> * config/arm/arm.c (EMIT_EABI_ATTRIBUTE): New macro. Used to >> emit a .eabi_attribute assembler directive, possibly with a >> comment attached. >> (asm_file_start): Use the new macro. >> >> >> Index: gcc/config/arm/arm.c >> =================================================================== >> --- gcc/config/arm/arm.c (revision 179554) >> +++ gcc/config/arm/arm.c (working copy) >> @@ -22243,6 +22243,21 @@ >> asm_fprintf (stream, "%U%s", name); >> } >> >> +/* This macro is used to emit an EABI tag and its associated value. >> + We emit the numerical value of the tag in case the assembler does not >> + support textual tags. (Eg gas prior to 2.20). If requested we include >> + the tag name in a comment so that anyone reading the assembler output >> + will know which tag is being set. */ >> +#define EMIT_EABI_ATTRIBUTE(NAME,NUM,VAL) \ >> + do \ >> + { \ >> + asm_fprintf (asm_out_file, "\t.eabi_attribute %d, %d", NUM, VAL); \ >> + if (flag_verbose_asm || flag_debug_asm) \ >> + asm_fprintf (asm_out_file, "\t%s " #NAME, ASM_COMMENT_START); \ >> + asm_fprintf (asm_out_file, "\n"); >> \ >> + } \ >> + while (0) >> + >> static void >> arm_file_start (void) >> { >> @@ -22274,9 +22289,9 @@ >> if (arm_fpu_desc->model == ARM_FP_MODEL_VFP) >> { >> if (TARGET_HARD_FLOAT) >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 27, 3\n"); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_HardFP_use, 27, 3); >> if (TARGET_HARD_FLOAT_ABI) >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 28, 1\n"); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_VFP_args, 28, 1); >> } >> } >> asm_fprintf (asm_out_file, "\t.fpu %s\n", fpu_name); >> @@ -22285,31 +22300,24 @@ >> are used. However we don't have any easy way of figuring this out. >> Conservatively record the setting that would have been used. */ >> >> - /* Tag_ABI_FP_rounding. */ >> if (flag_rounding_math) >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 19, 1\n"); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_rounding, 19, 1); >> + >> if (!flag_unsafe_math_optimizations) >> { >> - /* Tag_ABI_FP_denomal. */ >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 20, 1\n"); >> - /* Tag_ABI_FP_exceptions. */ >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 21, 1\n"); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_denormal, 20, 1); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_exceptions, 21, 1); >> } >> - /* Tag_ABI_FP_user_exceptions. */ >> if (flag_signaling_nans) >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 22, 1\n"); >> - /* Tag_ABI_FP_number_model. */ >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 23, %d\n", >> - flag_finite_math_only ? 1 : 3); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_user_exceptions, 22, 1); >> >> - /* Tag_ABI_align8_needed. */ >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 24, 1\n"); >> - /* Tag_ABI_align8_preserved. */ >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 25, 1\n"); >> - /* Tag_ABI_enum_size. */ >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 26, %d\n", >> - flag_short_enums ? 1 : 2); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_number_model, 23, >> + flag_finite_math_only ? 1 : 3); >> >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_align8_needed, 24, 1); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_align8_preserved, 25, 1); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_enum_size, 26, flag_short_enums ? 1 : 2); >> + >> /* Tag_ABI_optimization_goals. */ >> if (optimize_size) >> val = 4; >> @@ -22319,16 +22327,12 @@ >> val = 1; >> else >> val = 6; >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 30, %d\n", val); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_optimization_goals, 30, val); >> >> - /* Tag_CPU_unaligned_access. */ >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 34, %d\n", >> - unaligned_access); >> + EMIT_EABI_ATTRIBUTE (Tag_CPU_unaligned_access, 34, unaligned_access); >> >> - /* Tag_ABI_FP_16bit_format. */ >> if (arm_fp16_format) >> - asm_fprintf (asm_out_file, "\t.eabi_attribute 38, %d\n", >> - (int)arm_fp16_format); >> + EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_16bit_format, 38, (int) >> arm_fp16_format); >> >> if (arm_lang_output_object_attributes_hook) >> arm_lang_output_object_attributes_hook(); >> >