diff options
author | Richard Earnshaw <rearnsha@arm.com> | 1998-11-03 08:00:15 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 1998-11-03 08:00:15 +0000 |
commit | 74641843a04eb3c3bc6fd23f2267edabade504f7 (patch) | |
tree | 232ddb77253391f2655a8ade5521e9677b3185bc /gcc/config | |
parent | 566f153b895a8997bcb587ebbe2bc1d744890477 (diff) | |
download | gcc-74641843a04eb3c3bc6fd23f2267edabade504f7.zip gcc-74641843a04eb3c3bc6fd23f2267edabade504f7.tar.gz gcc-74641843a04eb3c3bc6fd23f2267edabade504f7.tar.bz2 |
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
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/arm/arm.c | 7 | ||||
-rw-r--r-- | gcc/config/arm/netbsd.h | 9 |
2 files changed, 13 insertions, 3 deletions
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... |