mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 09:41:09 +08:00
re PR target/91472 (gmp testsuite segfaults with gcc-8 and gcc-9, works fine with gcc-7)
PR target/91472 * config/sparc/sparc.c (sparc_cannot_force_const_mem): Return true during LRA/reload in PIC mode if the PIC register hasn't been used yet. (sparc_pic_register_p): Test reload_in_progress for consistency's sake. From-SVN: r275270
This commit is contained in:
parent
70570ec192
commit
2dae212347
@ -1,3 +1,10 @@
|
||||
2019-09-01 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR target/91472
|
||||
* config/sparc/sparc.c (sparc_cannot_force_const_mem): Return true
|
||||
during LRA/reload in PIC mode if the PIC register hasn't been used yet.
|
||||
(sparc_pic_register_p): Test reload_in_progress for consistency's sake.
|
||||
|
||||
2019-09-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/91623
|
||||
|
@ -4201,6 +4201,13 @@ eligible_for_sibcall_delay (rtx_insn *trial)
|
||||
static bool
|
||||
sparc_cannot_force_const_mem (machine_mode mode, rtx x)
|
||||
{
|
||||
/* After IRA has run in PIC mode, it is too late to put anything into the
|
||||
constant pool if the PIC register hasn't already been initialized. */
|
||||
if ((lra_in_progress || reload_in_progress)
|
||||
&& flag_pic
|
||||
&& !crtl->uses_pic_offset_table)
|
||||
return true;
|
||||
|
||||
switch (GET_CODE (x))
|
||||
{
|
||||
case CONST_INT:
|
||||
@ -4450,7 +4457,7 @@ sparc_pic_register_p (rtx x)
|
||||
return true;
|
||||
|
||||
if (!HARD_REGISTER_P (pic_offset_table_rtx)
|
||||
&& (HARD_REGISTER_P (x) || lra_in_progress)
|
||||
&& (HARD_REGISTER_P (x) || lra_in_progress || reload_in_progress)
|
||||
&& ORIGINAL_REGNO (x) == REGNO (pic_offset_table_rtx))
|
||||
return true;
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2019-09-01 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc.c-torture/execute/20190901-1.c: New test.
|
||||
|
||||
2019-09-01 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
* gfortran.dg/select_rank_1.f90 : New test.
|
||||
|
36
gcc/testsuite/gcc.c-torture/execute/20190901-1.c
Normal file
36
gcc/testsuite/gcc.c-torture/execute/20190901-1.c
Normal file
@ -0,0 +1,36 @@
|
||||
/* PR target/91472 */
|
||||
/* Reported by John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> */
|
||||
|
||||
typedef unsigned int gmp_uint_least32_t;
|
||||
|
||||
union ieee_double_extract
|
||||
{
|
||||
struct
|
||||
{
|
||||
gmp_uint_least32_t sig:1;
|
||||
gmp_uint_least32_t exp:11;
|
||||
gmp_uint_least32_t manh:20;
|
||||
gmp_uint_least32_t manl:32;
|
||||
} s;
|
||||
double d;
|
||||
};
|
||||
|
||||
double __attribute__((noipa))
|
||||
tests_infinity_d (void)
|
||||
{
|
||||
union ieee_double_extract x;
|
||||
x.s.exp = 2047;
|
||||
x.s.manl = 0;
|
||||
x.s.manh = 0;
|
||||
x.s.sig = 0;
|
||||
return x.d;
|
||||
}
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
double x = tests_infinity_d ();
|
||||
if (x == 0.0)
|
||||
__builtin_abort ();
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user