diff options
author | Doug Evans <dje@gnu.org> | 1996-07-12 21:15:05 +0000 |
---|---|---|
committer | Doug Evans <dje@gnu.org> | 1996-07-12 21:15:05 +0000 |
commit | 821581e4157fb400dfeb1a8927df0ef988800b8d (patch) | |
tree | 3dcaa5ce386e1eeaa1712ba6af361d7a11ad9799 /gcc/config/arm | |
parent | 6b67c5a30bb85859732e789b6a7bd84d8414cdcc (diff) | |
download | gcc-821581e4157fb400dfeb1a8927df0ef988800b8d.zip gcc-821581e4157fb400dfeb1a8927df0ef988800b8d.tar.gz gcc-821581e4157fb400dfeb1a8927df0ef988800b8d.tar.bz2 |
(ASM_OUTPUT_MI_THUNK): Handle fns returning structures.
From-SVN: r12438
Diffstat (limited to 'gcc/config/arm')
-rw-r--r-- | gcc/config/arm/arm.h | 6 |
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); \ |