re PR target/82725 ([x86_64] internal compiler error: in change_address_1, at emit-rtl.c:2162)
PR target/82725 * config/i386/i386.c (legitimate_pic_address_disp_p): Allow UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset. testsuite/ChangeLog: PR target/82725 * g++.dg/pr82725.C: New test. From-SVN: r254212
This commit is contained in:
parent
87039aa266
commit
5603c1d9db
@ -1,3 +1,9 @@
|
||||
2017-10-30 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/82725
|
||||
* config/i386/i386.c (legitimate_pic_address_disp_p): Allow
|
||||
UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset.
|
||||
|
||||
2017-10-29 Jim Wilson <wilson@tuliptree.org>
|
||||
|
||||
* gimplify.c: Include tm_p.h.
|
||||
|
@ -15079,10 +15079,16 @@ legitimate_pic_address_disp_p (rtx disp)
|
||||
break;
|
||||
op0 = XEXP (XEXP (disp, 0), 0);
|
||||
op1 = XEXP (XEXP (disp, 0), 1);
|
||||
if (!CONST_INT_P (op1)
|
||||
|| INTVAL (op1) >= 16*1024*1024
|
||||
if (!CONST_INT_P (op1))
|
||||
break;
|
||||
if (GET_CODE (op0) == UNSPEC
|
||||
&& (XINT (op0, 1) == UNSPEC_DTPOFF
|
||||
|| XINT (op0, 1) == UNSPEC_NTPOFF)
|
||||
&& trunc_int_for_mode (INTVAL (op1), SImode) == INTVAL (op1))
|
||||
return true;
|
||||
if (INTVAL (op1) >= 16*1024*1024
|
||||
|| INTVAL (op1) < -16*1024*1024)
|
||||
break;
|
||||
break;
|
||||
if (GET_CODE (op0) == LABEL_REF)
|
||||
return true;
|
||||
if (GET_CODE (op0) == CONST
|
||||
|
@ -1,8 +1,12 @@
|
||||
2017-10-30 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/82725
|
||||
* g++.dg/pr82725.C: New test.
|
||||
|
||||
2017-10-29 Jim Wilson <wilson@tuliptree.org>
|
||||
|
||||
* lib/gcc-dg.exp (gcc-dg-debug-runtest): Delete -gcoff.
|
||||
* lib/gfortran-dg.exp (gfortran-dg-debug-runtest): Delete
|
||||
-gcoff.
|
||||
* lib/gfortran-dg.exp (gfortran-dg-debug-runtest): Delete -gcoff.
|
||||
|
||||
2017-10-28 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
|
16
gcc/testsuite/g++.dg/pr82725.C
Normal file
16
gcc/testsuite/g++.dg/pr82725.C
Normal file
@ -0,0 +1,16 @@
|
||||
// { dg-do compile { target i?86-*-* x86_64-*-* } }
|
||||
// { dg-require-effective-target pie }
|
||||
// { dg-options "-O2 -fpie -mtls-direct-seg-refs" }
|
||||
|
||||
struct string
|
||||
{
|
||||
__SIZE_TYPE__ length;
|
||||
const char *ptr;
|
||||
};
|
||||
|
||||
string
|
||||
tempDir ()
|
||||
{
|
||||
thread_local string cache;
|
||||
return cache;
|
||||
}
|
Loading…
Reference in New Issue
Block a user