re PR rtl-optimization/12372 (miscompilation of execute/20030307-1.c at -O2 and -Os)
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Thu, 15 Jan 2004 14:58:06 +0000 (14:58 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Thu, 15 Jan 2004 14:58:06 +0000 (14:58 +0000)
PR optimization/12372
* calls.c (expand_call): Add call_fusage data for stack arguments in
constant calls.

From-SVN: r75926

gcc/ChangeLog
gcc/calls.c

index 51b568c368182a82b5e5e5ac35670fd847bc598f..5ae14569f41eb41370fa771bcf408430f6ccce80 100644 (file)
@@ -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.
index 1be581cfa692f87465735420ce049cbc116e5154..f0a59bbf61797408d08641cae128a8997ca085db 100644 (file)
@@ -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