function.c (stack_protect_prologue): Don't bypass expand_expr for stack_protect_guard...
authorRichard Henderson <rth@redhat.com>
Fri, 13 Nov 2009 19:10:45 +0000 (11:10 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 13 Nov 2009 19:10:45 +0000 (11:10 -0800)
        * function.c (stack_protect_prologue): Don't bypass expand_expr
        for stack_protect_guard and guard_decl.
        (stack_protect_epilogue): Likewise.

From-SVN: r154168

gcc/ChangeLog
gcc/function.c

index f2a0da5078f75d2b0549d0e2da6c037aa3014e50..22640faf9a249687c51e713e2d524c8636ce60e5 100644 (file)
@@ -1,3 +1,9 @@
+2009-11-13  Richard Henderson  <rth@redhat.com>
+
+       * function.c (stack_protect_prologue): Don't bypass expand_expr
+       for stack_protect_guard and guard_decl.
+       (stack_protect_epilogue): Likewise.
+
 2009-11-13  Jan Hubicka  <jh@suse.cz>
 
        * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
index ca578892869ccc3c509ec05d2682a20d136d217a..60c199f4298d0f010bc1d26e51fc8211e2c7b0c6 100644 (file)
@@ -4269,12 +4269,8 @@ stack_protect_prologue (void)
   tree guard_decl = targetm.stack_protect_guard ();
   rtx x, y;
 
-  /* Avoid expand_expr here, because we don't want guard_decl pulled
-     into registers unless absolutely necessary.  And we know that
-     crtl->stack_protect_guard is a local stack slot, so this skips
-     all the fluff.  */
-  x = validize_mem (DECL_RTL (crtl->stack_protect_guard));
-  y = validize_mem (DECL_RTL (guard_decl));
+  x = expand_normal (crtl->stack_protect_guard);
+  y = expand_normal (guard_decl);
 
   /* Allow the target to copy from Y to X without leaking Y into a
      register.  */
@@ -4307,12 +4303,8 @@ stack_protect_epilogue (void)
   rtx label = gen_label_rtx ();
   rtx x, y, tmp;
 
-  /* Avoid expand_expr here, because we don't want guard_decl pulled
-     into registers unless absolutely necessary.  And we know that
-     crtl->stack_protect_guard is a local stack slot, so this skips
-     all the fluff.  */
-  x = validize_mem (DECL_RTL (crtl->stack_protect_guard));
-  y = validize_mem (DECL_RTL (guard_decl));
+  x = expand_normal (crtl->stack_protect_guard);
+  y = expand_normal (guard_decl);
 
   /* Allow the target to compare Y with X without leaking either into
      a register.  */