aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2009-11-13 11:10:45 -0800
committerRichard Henderson <rth@gcc.gnu.org>2009-11-13 11:10:45 -0800
commit08d4cc3365fe71486d9305604ed8590a248afd26 (patch)
treedea1dfdd654d5ec22ecbf475e45ae99f46afbd7c /gcc/function.c
parent589520b621afc3583a6bea2aeadae3825c82211e (diff)
downloadgcc-08d4cc3365fe71486d9305604ed8590a248afd26.zip
gcc-08d4cc3365fe71486d9305604ed8590a248afd26.tar.gz
gcc-08d4cc3365fe71486d9305604ed8590a248afd26.tar.bz2
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
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/gcc/function.c b/gcc/function.c
index ca57889..60c199f 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -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. */