Commit 08d4cc33 by Richard Henderson Committed by Richard Henderson

function.c (stack_protect_prologue): Don't bypass expand_expr for…

function.c (stack_protect_prologue): Don't bypass expand_expr for stack_protect_guard and guard_decl.

        * function.c (stack_protect_prologue): Don't bypass expand_expr
        for stack_protect_guard and guard_decl.
        (stack_protect_epilogue): Likewise.

From-SVN: r154168
parent 589520b6
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> 2009-11-13 Jan Hubicka <jh@suse.cz>
* ipa.c (function_and_variable_visibility): Clear COMDAT on functions * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
...@@ -4269,12 +4269,8 @@ stack_protect_prologue (void) ...@@ -4269,12 +4269,8 @@ stack_protect_prologue (void)
tree guard_decl = targetm.stack_protect_guard (); tree guard_decl = targetm.stack_protect_guard ();
rtx x, y; rtx x, y;
/* Avoid expand_expr here, because we don't want guard_decl pulled x = expand_normal (crtl->stack_protect_guard);
into registers unless absolutely necessary. And we know that y = expand_normal (guard_decl);
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));
/* Allow the target to copy from Y to X without leaking Y into a /* Allow the target to copy from Y to X without leaking Y into a
register. */ register. */
...@@ -4307,12 +4303,8 @@ stack_protect_epilogue (void) ...@@ -4307,12 +4303,8 @@ stack_protect_epilogue (void)
rtx label = gen_label_rtx (); rtx label = gen_label_rtx ();
rtx x, y, tmp; rtx x, y, tmp;
/* Avoid expand_expr here, because we don't want guard_decl pulled x = expand_normal (crtl->stack_protect_guard);
into registers unless absolutely necessary. And we know that y = expand_normal (guard_decl);
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));
/* Allow the target to compare Y with X without leaking either into /* Allow the target to compare Y with X without leaking either into
a register. */ a register. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment