OSDN Git Service

* function.c (stack_protect_prologue): Don't bypass expand_expr
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Nov 2009 19:10:45 +0000 (19:10 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Nov 2009 19:10:45 +0000 (19:10 +0000)
        for stack_protect_guard and guard_decl.
        (stack_protect_epilogue): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154168 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/function.c

index f2a0da5..22640fa 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 ca57889..60c199f 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.  */