re PR rtl-optimization/87485 (Compile time hog w/ -O2 -fschedule-insns -fno-guess-branch-probability -fno-isolate-erroneous-paths-dereference -fno-omit-frame-pointer -fno-split-wide-types -fno-tree-ccp -fno-tree-sra)
PR rtl-optimization/87485 * function.c (expand_function_end): Move stack_protect_epilogue before loading of return value into hard register(s). * gcc.dg/pr87485.c: New test. From-SVN: r270013
This commit is contained in:
parent
34f95cbdc5
commit
a6240447c4
@ -1,3 +1,9 @@
|
||||
2019-03-29 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/87485
|
||||
* function.c (expand_function_end): Move stack_protect_epilogue
|
||||
before loading of return value into hard register(s).
|
||||
|
||||
2019-03-28 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/89621
|
||||
|
||||
@ -5330,6 +5330,12 @@ expand_function_end (void)
|
||||
communicate between __builtin_eh_return and the epilogue. */
|
||||
expand_eh_return ();
|
||||
|
||||
/* If stack protection is enabled for this function, check the guard. */
|
||||
if (crtl->stack_protect_guard
|
||||
&& targetm.stack_protect_runtime_enabled_p ()
|
||||
&& naked_return_label == NULL_RTX)
|
||||
stack_protect_epilogue ();
|
||||
|
||||
/* If scalar return value was computed in a pseudo-reg, or was a named
|
||||
return value that got dumped to the stack, copy that to the hard
|
||||
return register. */
|
||||
@ -5476,7 +5482,9 @@ expand_function_end (void)
|
||||
emit_insn (gen_blockage ());
|
||||
|
||||
/* If stack protection is enabled for this function, check the guard. */
|
||||
if (crtl->stack_protect_guard && targetm.stack_protect_runtime_enabled_p ())
|
||||
if (crtl->stack_protect_guard
|
||||
&& targetm.stack_protect_runtime_enabled_p ()
|
||||
&& naked_return_label)
|
||||
stack_protect_epilogue ();
|
||||
|
||||
/* If we had calls to alloca, and this machine needs
|
||||
|
||||
@ -1,3 +1,8 @@
|
||||
2019-03-29 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/87485
|
||||
* gcc.dg/pr87485.c: New test.
|
||||
|
||||
2019-03-28 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/89621
|
||||
|
||||
29
gcc/testsuite/gcc.dg/pr87485.c
Normal file
29
gcc/testsuite/gcc.dg/pr87485.c
Normal file
@ -0,0 +1,29 @@
|
||||
/* PR rtl-optimization/87485 */
|
||||
/* { dg-do compile { target int128 } } */
|
||||
/* { dg-options "-O2 -fschedule-insns -fno-guess-branch-probability -fno-isolate-erroneous-paths-dereference -fno-omit-frame-pointer -fno-split-wide-types -fno-tree-ccp -fno-tree-sra" } */
|
||||
/* { dg-additional-options "-fstack-protector-strong" { target fstack_protector } } */
|
||||
|
||||
int *a;
|
||||
|
||||
int
|
||||
foo (__int128 x, int y, int z)
|
||||
{
|
||||
__int128 b;
|
||||
*a = ((!!y ? y : x) * y | x) * 2;
|
||||
if (z == 0)
|
||||
{
|
||||
unsigned int c = 1;
|
||||
__int128 *d = &b;
|
||||
for (*a = 0; *a < 1; *a += y)
|
||||
;
|
||||
*a += b < (c / 0); /* { dg-warning "division by zero" } */
|
||||
goto l;
|
||||
m:
|
||||
while (b < 1)
|
||||
;
|
||||
++*a;
|
||||
}
|
||||
goto m;
|
||||
l:
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user