aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>2004-01-15 14:58:06 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2004-01-15 14:58:06 +0000
commit2fabc3d68e20fdc8b9298ec387d3b36b56b2568e (patch)
treeb1fb08c929d872b45bf4140dacbc9cd51a3abd93 /gcc
parent2ff3688d31131447a9542eae962f5a579093601a (diff)
downloadgcc-2fabc3d68e20fdc8b9298ec387d3b36b56b2568e.zip
gcc-2fabc3d68e20fdc8b9298ec387d3b36b56b2568e.tar.gz
gcc-2fabc3d68e20fdc8b9298ec387d3b36b56b2568e.tar.bz2
re PR rtl-optimization/12372 (miscompilation of execute/20030307-1.c at -O2 and -Os)
PR optimization/12372 * calls.c (expand_call): Add call_fusage data for stack arguments in constant calls. From-SVN: r75926
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/calls.c8
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 51b568c..5ae1456 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-01-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR optimization/12372
+ * calls.c (expand_call): Add call_fusage data for stack arguments in
+ constant calls.
+
2004-01-15 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/rs6000.c (uses_TOC): Correct comment. Make static.
diff --git a/gcc/calls.c b/gcc/calls.c
index 1be581c..f0a59bb 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -3025,6 +3025,14 @@ expand_call (tree exp, rtx target, int ignore)
&& check_sibcall_argument_overlap (before_arg,
&args[i], 1)))
sibcall_failure = 1;
+
+ if (flags & ECF_CONST
+ && args[i].stack
+ && args[i].value == args[i].stack)
+ call_fusage = gen_rtx_EXPR_LIST (VOIDmode,
+ gen_rtx_USE (VOIDmode,
+ args[i].value),
+ call_fusage);
}
/* If we have a parm that is passed in registers but not in memory