arm.h (EMIT_EABI_ATTRIBUTE): Remove.

* config/arm/arm.h (EMIT_EABI_ATTRIBUTE): Remove.
	* config/arm/arm.c: Do not include c-pragma.h.
	(arm_emit_eabi_attribute): New function based on EMIT_EABI_ATTRIBUTE.
	(arm_file_start): Replace uses of EMIT_EABI_ATTRIBUTE with calls
	to arm_emit_eabi_attribute.
	* arm-c.c: Do not include output.h.
	(arm_output_c_attributes): Replace use of EMIT_EABI_ATTRIBUTE with a
	call to arm_emit_eabi_attribute.
	* config/arm/arm-protos.h (arm_emit_eabi_attribute): Prototype it.

From-SVN: r188823
This commit is contained in:
Steven Bosscher 2012-06-20 10:18:08 +00:00
parent f89dcfd816
commit 34dd397b05
5 changed files with 49 additions and 32 deletions

View File

@ -1,3 +1,15 @@
2012-06-20 Steven Bosscher <steven@gcc.gnu.org>
* config/arm/arm.h (EMIT_EABI_ATTRIBUTE): Remove.
* config/arm/arm.c: Do not include c-pragma.h.
(arm_emit_eabi_attribute): New function based on EMIT_EABI_ATTRIBUTE.
(arm_file_start): Replace uses of EMIT_EABI_ATTRIBUTE with calls
to arm_emit_eabi_attribute.
* arm-c.c: Do not include output.h.
(arm_output_c_attributes): Replace use of EMIT_EABI_ATTRIBUTE with a
call to arm_emit_eabi_attribute.
* config/arm/arm-protos.h (arm_emit_eabi_attribute): Prototype it.
2012-06-20 Richard Guenther <rguenther@suse.de>
* tree-vect-data-refs.c (vect_can_force_dr_alignment_p):

View File

@ -22,7 +22,6 @@
#include "tm.h"
#include "tm_p.h"
#include "tree.h"
#include "output.h"
#include "c-family/c-common.h"
/* Output C specific EABI object attributes. These can not be done in
@ -31,8 +30,8 @@
static void
arm_output_c_attributes (void)
{
EMIT_EABI_ATTRIBUTE (Tag_ABI_PCS_wchar_t, 18,
(int)(TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT));
int wchar_size = (int)(TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT);
arm_emit_eabi_attribute ("Tag_ABI_PCS_wchar_t", 18, wchar_size);
}

View File

@ -260,4 +260,6 @@ extern bool arm_expand_vec_perm_const (rtx target, rtx op0, rtx op1, rtx sel);
extern bool arm_autoinc_modes_ok_p (enum machine_mode, enum arm_auto_incmodes);
extern void arm_emit_eabi_attribute (const char *, int, int);
#endif /* ! GCC_ARM_PROTOS_H */

View File

@ -45,7 +45,6 @@
#include "cgraph.h"
#include "ggc.h"
#include "except.h"
#include "c-family/c-pragma.h" /* ??? */
#include "tm_p.h"
#include "target.h"
#include "target-def.h"
@ -23580,6 +23579,23 @@ arm_asm_output_labelref (FILE *stream, const char *name)
asm_fprintf (stream, "%U%s", name);
}
/* This function 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.
This function is not static because arm-c.c needs it too. */
void
arm_emit_eabi_attribute (const char *name, int num, int val)
{
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 %s", ASM_COMMENT_START, name);
asm_fprintf (asm_out_file, "\n");
}
static void
arm_file_start (void)
{
@ -23611,9 +23627,9 @@ arm_file_start (void)
if (arm_fpu_desc->model == ARM_FP_MODEL_VFP)
{
if (TARGET_HARD_FLOAT)
EMIT_EABI_ATTRIBUTE (Tag_ABI_HardFP_use, 27, 3);
arm_emit_eabi_attribute ("Tag_ABI_HardFP_use", 27, 3);
if (TARGET_HARD_FLOAT_ABI)
EMIT_EABI_ATTRIBUTE (Tag_ABI_VFP_args, 28, 1);
arm_emit_eabi_attribute ("Tag_ABI_VFP_args", 28, 1);
}
}
asm_fprintf (asm_out_file, "\t.fpu %s\n", fpu_name);
@ -23623,22 +23639,23 @@ arm_file_start (void)
Conservatively record the setting that would have been used. */
if (flag_rounding_math)
EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_rounding, 19, 1);
arm_emit_eabi_attribute ("Tag_ABI_FP_rounding", 19, 1);
if (!flag_unsafe_math_optimizations)
{
EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_denormal, 20, 1);
EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_exceptions, 21, 1);
arm_emit_eabi_attribute ("Tag_ABI_FP_denormal", 20, 1);
arm_emit_eabi_attribute ("Tag_ABI_FP_exceptions", 21, 1);
}
if (flag_signaling_nans)
EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_user_exceptions, 22, 1);
arm_emit_eabi_attribute ("Tag_ABI_FP_user_exceptions", 22, 1);
EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_number_model, 23,
arm_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);
arm_emit_eabi_attribute ("Tag_ABI_align8_needed", 24, 1);
arm_emit_eabi_attribute ("Tag_ABI_align8_preserved", 25, 1);
arm_emit_eabi_attribute ("Tag_ABI_enum_size", 26,
flag_short_enums ? 1 : 2);
/* Tag_ABI_optimization_goals. */
if (optimize_size)
@ -23649,12 +23666,14 @@ arm_file_start (void)
val = 1;
else
val = 6;
EMIT_EABI_ATTRIBUTE (Tag_ABI_optimization_goals, 30, val);
arm_emit_eabi_attribute ("Tag_ABI_optimization_goals", 30, val);
EMIT_EABI_ATTRIBUTE (Tag_CPU_unaligned_access, 34, unaligned_access);
arm_emit_eabi_attribute ("Tag_CPU_unaligned_access", 34,
unaligned_access);
if (arm_fp16_format)
EMIT_EABI_ATTRIBUTE (Tag_ABI_FP_16bit_format, 38, (int) arm_fp16_format);
arm_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();

View File

@ -2191,21 +2191,6 @@ extern int making_const_table;
" %{mcpu=generic-*:-march=%*;" \
" :%{mcpu=*:-mcpu=%*} %{march=*:-march=%*}}"
/* 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)
/* -mcpu=native handling only makes sense with compiler running on
an ARM chip. */
#if defined(__arm__)