aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>1998-11-03 08:00:15 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>1998-11-03 08:00:15 +0000
commit74641843a04eb3c3bc6fd23f2267edabade504f7 (patch)
tree232ddb77253391f2655a8ade5521e9677b3185bc /gcc/config
parent566f153b895a8997bcb587ebbe2bc1d744890477 (diff)
downloadgcc-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.c7
-rw-r--r--gcc/config/arm/netbsd.h9
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...