aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@gnu.org>1996-07-12 21:15:05 +0000
committerDoug Evans <dje@gnu.org>1996-07-12 21:15:05 +0000
commit821581e4157fb400dfeb1a8927df0ef988800b8d (patch)
tree3dcaa5ce386e1eeaa1712ba6af361d7a11ad9799
parent6b67c5a30bb85859732e789b6a7bd84d8414cdcc (diff)
downloadgcc-821581e4157fb400dfeb1a8927df0ef988800b8d.zip
gcc-821581e4157fb400dfeb1a8927df0ef988800b8d.tar.gz
gcc-821581e4157fb400dfeb1a8927df0ef988800b8d.tar.bz2
(ASM_OUTPUT_MI_THUNK): Handle fns returning structures.
From-SVN: r12438
-rw-r--r--gcc/config/arm/arm.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index d7a22a1..ab9fbc1 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -1697,6 +1697,8 @@ do { \
int mi_delta = (DELTA); \
char *mi_op = mi_delta < 0 ? "sub" : "add"; \
int shift = 0; \
+ int this_regno = (aggregate_value_p (TREE_TYPE (TREE_TYPE (FUNCTION))) \
+ ? 1 : 0); \
if (mi_delta < 0) mi_delta = -mi_delta; \
while (mi_delta != 0) \
{ \
@@ -1705,8 +1707,8 @@ do { \
else \
{ \
fprintf (FILE, "\t%s\t%s%s, %s%s, #%d\n", \
- mi_op, REGISTER_PREFIX, reg_names[0], \
- REGISTER_PREFIX, reg_names[0], \
+ mi_op, REGISTER_PREFIX, reg_names[this_regno], \
+ REGISTER_PREFIX, reg_names[this_regno], \
mi_delta & (0xff << shift)); \
arm_increase_location (4); \
mi_delta &= ~(0xff << shift); \