From 74641843a04eb3c3bc6fd23f2267edabade504f7 Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Tue, 3 Nov 1998 08:00:15 +0000 Subject: arm.c (add_constant): When taking the address of an item in the pool, get the mode of the item addressed. * arm.c (add_constant): When taking the address of an item in the pool, get the mode of the item addressed. * arm.c (final_prescan_insn case INSN): If an insn doesn't contain a SET or a PARALLEL, don't consider it for conditional execution. Restore ABI compatibility for NetBSD. * arm/netbsd.h (DEFAULT_PCC_STRUCT_RETURN): Override setting in arm.h (RETURN_IN_MEMORY): Likewise. From-SVN: r23510 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/config/arm/arm.c | 7 ++++--- gcc/config/arm/netbsd.h | 9 +++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 48fa0a3..4dd177d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +Tue Nov 3 07:51:43 1998 Richard Earnshaw (rearnsha@arm.com) + + * arm.c (add_constant): When taking the address of an item in the + pool, get the mode of the item addressed. + + * arm.c (final_prescan_insn case INSN): If an insn doesn't + contain a SET or a PARALLEL, don't consider it for conditional + execution. + + Restore ABI compatibility for NetBSD. + * arm/netbsd.h (DEFAULT_PCC_STRUCT_RETURN): Override setting in + arm.h + (RETURN_IN_MEMORY): Likewise. + Mon Nov 2 11:46:17 1998 Doug Evans * m32r/m32r.c (m32r_expand_block_move): Fix byte count computations. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 3cfdeb3..7d0f5ca 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -3488,6 +3488,7 @@ add_constant (x, mode, address_only) else if (GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P(x)) { *address_only = 1; + mode = get_pool_mode (x); x = get_pool_constant (x); } #ifndef AOF_ASSEMBLER @@ -5933,9 +5934,9 @@ final_prescan_insn (insn, opvec, noperands) /* Instructions using or affecting the condition codes make it fail. */ scanbody = PATTERN (this_insn); - if ((GET_CODE (scanbody) == SET - || GET_CODE (scanbody) == PARALLEL) - && get_attr_conds (this_insn) != CONDS_NOCOND) + if (! (GET_CODE (scanbody) == SET + || GET_CODE (scanbody) == PARALLEL) + || get_attr_conds (this_insn) != CONDS_NOCOND) fail = TRUE; break; diff --git a/gcc/config/arm/netbsd.h b/gcc/config/arm/netbsd.h index 374d5bf..c97cd02 100644 --- a/gcc/config/arm/netbsd.h +++ b/gcc/config/arm/netbsd.h @@ -116,6 +116,15 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #undef TYPE_OPERAND_FMT #define TYPE_OPERAND_FMT "%%%s" +/* NetBSD uses the old PCC style aggregate returning conventions. */ +#undef DEFAULT_PCC_STRUCT_RETURN +#define DEFAULT_PCC_STRUCT_RETURN 1 + +/* Although not normally relevant (since by default, all aggregates + are returned in memory) compiling some parts of libc requires + non-APCS style struct returns. */ +#undef RETURN_IN_MEMORY + /* VERY BIG NOTE : Change of structure alignment for RiscBSD. There are consequences you should be aware of... -- cgit v1.1