Commit b20a9cca by Alan Modra Committed by Alan Modra

linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Choose MASK_ALIGN_NATURAL if…

linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Choose MASK_ALIGN_NATURAL if rs6000_alignment_string not given.

	* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Choose
	MASK_ALIGN_NATURAL if rs6000_alignment_string not given.  Don't
	assign DEFAULT_ABI.
	(ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Update comment.
	* config/rs6000/rs6000.c: Formatting.
	(rs6000_parse_alignment_option): Only set rs6000_alignment_flags
	when rs6000_alignment_string given.

From-SVN: r72431
parent 776fd336
2003-10-14 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Choose
MASK_ALIGN_NATURAL if rs6000_alignment_string not given. Don't
assign DEFAULT_ABI.
(ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Update comment.
* config/rs6000/rs6000.c: Formatting.
(rs6000_parse_alignment_option): Only set rs6000_alignment_flags
when rs6000_alignment_string given.
2003-10-13 Eric Botcazou <ebotcazou@libertysurf.fr> 2003-10-13 Eric Botcazou <ebotcazou@libertysurf.fr>
PR target/12538 PR target/12538
......
...@@ -65,11 +65,13 @@ ...@@ -65,11 +65,13 @@
#define SUBSUBTARGET_OVERRIDE_OPTIONS \ #define SUBSUBTARGET_OVERRIDE_OPTIONS \
do \ do \
{ \ { \
if (rs6000_alignment_string == 0) \
rs6000_alignment_flags = MASK_ALIGN_NATURAL; \
if (TARGET_64BIT) \ if (TARGET_64BIT) \
{ \ { \
if (DEFAULT_ABI != ABI_AIX) \ if (DEFAULT_ABI != ABI_AIX) \
{ \ { \
DEFAULT_ABI = ABI_AIX; \ rs6000_current_abi = ABI_AIX; \
error (INVALID_64BIT, "call"); \ error (INVALID_64BIT, "call"); \
} \ } \
if (TARGET_RELOCATABLE) \ if (TARGET_RELOCATABLE) \
...@@ -202,8 +204,7 @@ ...@@ -202,8 +204,7 @@
/* We don't need to generate entries in .fixup. */ /* We don't need to generate entries in .fixup. */
#undef RELOCATABLE_NEEDS_FIXUP #undef RELOCATABLE_NEEDS_FIXUP
/* This now supports a natural alignment mode. */ /* PowerPC64 Linux word-aligns FP doubles when -malign-power is given. */
/* AIX word-aligns FP doubles but doubleword-aligns 64-bit ints. */
#undef ADJUST_FIELD_ALIGN #undef ADJUST_FIELD_ALIGN
#define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \ #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \ ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
...@@ -216,8 +217,8 @@ ...@@ -216,8 +217,8 @@
? MIN ((COMPUTED), 32) \ ? MIN ((COMPUTED), 32) \
: (COMPUTED)) : (COMPUTED))
/* AIX increases natural record alignment to doubleword if the first /* PowerPC64 Linux increases natural record alignment to doubleword if
field is an FP double while the FP fields remain word aligned. */ the first field is an FP double. */
#undef ROUND_TYPE_ALIGN #undef ROUND_TYPE_ALIGN
#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \ #define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
((TARGET_ALTIVEC && TREE_CODE (STRUCT) == VECTOR_TYPE) \ ((TARGET_ALTIVEC && TREE_CODE (STRUCT) == VECTOR_TYPE) \
......
...@@ -217,8 +217,8 @@ static void rs6000_emit_stack_tie (void); ...@@ -217,8 +217,8 @@ static void rs6000_emit_stack_tie (void);
static void rs6000_frame_related (rtx, rtx, HOST_WIDE_INT, rtx, rtx); static void rs6000_frame_related (rtx, rtx, HOST_WIDE_INT, rtx, rtx);
static rtx spe_synthesize_frame_save (rtx); static rtx spe_synthesize_frame_save (rtx);
static bool spe_func_has_64bit_regs_p (void); static bool spe_func_has_64bit_regs_p (void);
static void emit_frame_save (rtx, rtx, enum machine_mode, static void emit_frame_save (rtx, rtx, enum machine_mode, unsigned int,
unsigned int, int, int); int, int);
static rtx gen_frame_mem_offset (enum machine_mode, rtx, int); static rtx gen_frame_mem_offset (enum machine_mode, rtx, int);
static void rs6000_emit_allocate_stack (HOST_WIDE_INT, int); static void rs6000_emit_allocate_stack (HOST_WIDE_INT, int);
static unsigned rs6000_hash_constant (rtx); static unsigned rs6000_hash_constant (rtx);
...@@ -243,8 +243,8 @@ extern const struct attribute_spec rs6000_attribute_table[]; ...@@ -243,8 +243,8 @@ extern const struct attribute_spec rs6000_attribute_table[];
static void rs6000_set_default_type_attributes (tree); static void rs6000_set_default_type_attributes (tree);
static void rs6000_output_function_prologue (FILE *, HOST_WIDE_INT); static void rs6000_output_function_prologue (FILE *, HOST_WIDE_INT);
static void rs6000_output_function_epilogue (FILE *, HOST_WIDE_INT); static void rs6000_output_function_epilogue (FILE *, HOST_WIDE_INT);
static void rs6000_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, static void rs6000_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT,
HOST_WIDE_INT, tree); tree);
static rtx rs6000_emit_set_long_const (rtx, HOST_WIDE_INT, HOST_WIDE_INT); static rtx rs6000_emit_set_long_const (rtx, HOST_WIDE_INT, HOST_WIDE_INT);
static bool rs6000_return_in_memory (tree, tree); static bool rs6000_return_in_memory (tree, tree);
static void rs6000_file_start (void); static void rs6000_file_start (void);
...@@ -294,8 +294,8 @@ static void altivec_init_builtins (void); ...@@ -294,8 +294,8 @@ static void altivec_init_builtins (void);
static void rs6000_common_init_builtins (void); static void rs6000_common_init_builtins (void);
static void rs6000_init_libfuncs (void); static void rs6000_init_libfuncs (void);
static void enable_mask_for_builtins (struct builtin_description *, static void enable_mask_for_builtins (struct builtin_description *, int,
int, enum rs6000_builtins, enum rs6000_builtins,
enum rs6000_builtins); enum rs6000_builtins);
static void spe_init_builtins (void); static void spe_init_builtins (void);
static rtx spe_expand_builtin (tree, rtx, bool *); static rtx spe_expand_builtin (tree, rtx, bool *);
...@@ -975,8 +975,9 @@ rs6000_parse_abi_options (void) ...@@ -975,8 +975,9 @@ rs6000_parse_abi_options (void)
static void static void
rs6000_parse_alignment_option (void) rs6000_parse_alignment_option (void)
{ {
if (rs6000_alignment_string == 0 if (rs6000_alignment_string == 0)
|| ! strcmp (rs6000_alignment_string, "power")) return;
else if (! strcmp (rs6000_alignment_string, "power"))
rs6000_alignment_flags = MASK_ALIGN_POWER; rs6000_alignment_flags = MASK_ALIGN_POWER;
else if (! strcmp (rs6000_alignment_string, "natural")) else if (! strcmp (rs6000_alignment_string, "natural"))
rs6000_alignment_flags = MASK_ALIGN_NATURAL; rs6000_alignment_flags = MASK_ALIGN_NATURAL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment