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: r154172
This commit is contained in:
Richard Henderson 2009-11-13 11:57:51 -08:00 committed by Richard Henderson
parent 155110b804
commit 46cc0cba50
2 changed files with 10 additions and 12 deletions

View 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 Uros Bizjak <ubizjak@gmail.com>
PR target/41900

View File

@ -4274,12 +4274,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. */
@ -4312,12 +4308,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. */