aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-09-05 20:01:32 +0000
committerRichard Stallman <rms@gnu.org>1993-09-05 20:01:32 +0000
commitcb61f66f5bc01f6728773ac38dbb36f5110a53d4 (patch)
tree3fbf42eb9cd004b4106ef3b5a0d733fa56afa3b7
parent76229ac8db9be933046d0cb365a727bf449b13b3 (diff)
downloadgcc-cb61f66f5bc01f6728773ac38dbb36f5110a53d4.zip
gcc-cb61f66f5bc01f6728773ac38dbb36f5110a53d4.tar.gz
gcc-cb61f66f5bc01f6728773ac38dbb36f5110a53d4.tar.bz2
(assign_parms): When parm needs conversion on entry,
don't store it back in the slot where it was passed. From-SVN: r5261
-rw-r--r--gcc/function.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 4a0425a..f58b472 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -3145,6 +3145,13 @@ assign_parms (fndecl, second_time)
stack_parm = 0;
}
+ /* If parm was passed in memory, and we need to convert it on entry,
+ don't store it back in that same slot. */
+ if (entry_parm != 0
+ && nominal_mode != BLKmode && nominal_mode != passed_mode)
+ stack_parm = 0;
+
+#if 0
/* Now adjust STACK_PARM to the mode and precise location
where this parameter should live during execution,
if we discover that it must live in the stack during execution.
@@ -3174,6 +3181,7 @@ assign_parms (fndecl, second_time)
mark it as such for cse and loop optimize. */
MEM_IN_STRUCT_P (stack_parm) = aggregate;
}
+#endif /* 0 */
/* ENTRY_PARM is an RTX for the parameter as it arrives,
in the mode in which it arrives.