explow.c (compute_stack_clash_protection_loop_data): Use CONST_INT_P instead of explicit test.
* explow.c (compute_stack_clash_protection_loop_data): Use CONST_INT_P instead of explicit test. Verify object is a CONST_INT_P before looking at INTVAL. (anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P instead of explicit test. * gcc.target/i386/stack-check-11.c: Update test and regexp so that it works for both i?86 and x86_64. From-SVN: r253034
This commit is contained in:
parent
6073d0028d
commit
94c23e3960
4 changed files with 26 additions and 10 deletions
|
@ -1,3 +1,11 @@
|
|||
2017-09-20 Jeff Law <law@redhat.com>
|
||||
|
||||
* explow.c (compute_stack_clash_protection_loop_data): Use
|
||||
CONST_INT_P instead of explicit test. Verify object is a
|
||||
CONST_INT_P before looking at INTVAL.
|
||||
(anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P
|
||||
instead of explicit test.
|
||||
|
||||
2017-09-20 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
PR target/77687
|
||||
|
|
11
gcc/explow.c
11
gcc/explow.c
|
@ -1834,11 +1834,11 @@ compute_stack_clash_protection_loop_data (rtx *rounded_size, rtx *last_addr,
|
|||
if (*rounded_size == CONST0_RTX (Pmode))
|
||||
fprintf (dump_file,
|
||||
"Stack clash skipped dynamic allocation and probing loop.\n");
|
||||
else if (GET_CODE (*rounded_size) == CONST_INT
|
||||
else if (CONST_INT_P (*rounded_size)
|
||||
&& INTVAL (*rounded_size) <= 4 * *probe_interval)
|
||||
fprintf (dump_file,
|
||||
"Stack clash dynamic allocation and probing inline.\n");
|
||||
else if (GET_CODE (*rounded_size) == CONST_INT)
|
||||
else if (CONST_INT_P (*rounded_size))
|
||||
fprintf (dump_file,
|
||||
"Stack clash dynamic allocation and probing in "
|
||||
"rotated loop.\n");
|
||||
|
@ -1936,7 +1936,8 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
|
|||
|
||||
if (rounded_size != CONST0_RTX (Pmode))
|
||||
{
|
||||
if (INTVAL (rounded_size) <= 4 * probe_interval)
|
||||
if (CONST_INT_P (rounded_size)
|
||||
&& INTVAL (rounded_size) <= 4 * probe_interval)
|
||||
{
|
||||
for (HOST_WIDE_INT i = 0;
|
||||
i < INTVAL (rounded_size);
|
||||
|
@ -1956,7 +1957,7 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
|
|||
else
|
||||
{
|
||||
rtx loop_lab, end_loop;
|
||||
bool rotate_loop = GET_CODE (rounded_size) == CONST_INT;
|
||||
bool rotate_loop = CONST_INT_P (rounded_size);
|
||||
emit_stack_clash_protection_probe_loop_start (&loop_lab, &end_loop,
|
||||
last_addr, rotate_loop);
|
||||
|
||||
|
@ -1994,7 +1995,7 @@ anti_adjust_stack_and_probe_stack_clash (rtx size)
|
|||
might hold live data. So probe at *sp if we know that
|
||||
an allocation was made, otherwise probe into the red zone
|
||||
which is obviously undesirable. */
|
||||
if (GET_CODE (size) == CONST_INT)
|
||||
if (CONST_INT_P (size))
|
||||
{
|
||||
emit_stack_probe (stack_pointer_rtx);
|
||||
emit_insn (gen_blockage ());
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-09-20 Jeff Law <law@redhat.com>
|
||||
|
||||
* gcc.target/i386/stack-check-11.c: Update test and regexp
|
||||
so that it works for both i?86 and x86_64.
|
||||
|
||||
2017-09-19 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
PR target/77687
|
||||
|
|
|
@ -2,15 +2,17 @@
|
|||
/* { dg-options "-O2 -fstack-clash-protection" } */
|
||||
/* { dg-require-effective-target supports_stack_clash_protection } */
|
||||
|
||||
extern void arf (unsigned long int *, unsigned long int *);
|
||||
#include <stdint.h>
|
||||
|
||||
extern void arf (uint64_t *, uint64_t *);
|
||||
void
|
||||
frob ()
|
||||
{
|
||||
unsigned long int num[859];
|
||||
unsigned long int den[859];
|
||||
uint64_t num[859];
|
||||
uint64_t den[859];
|
||||
arf (den, num);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler-times "subq" 4 } } */
|
||||
/* { dg-final { scan-assembler-times "orq" 3 } } */
|
||||
/* { dg-final { scan-assembler-times "sub\[ql\]" 4 } } */
|
||||
/* { dg-final { scan-assembler-times "or\[ql\]" 3 } } */
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue