From b08fb37a276895d87db157c4e5cc51e2515070d5 Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Wed, 12 Sep 2018 20:01:11 +0200 Subject: [PATCH] Backport patch for PR86989 to 7 2018-09-12 Segher Boessenkool Backport from trunk 2018-08-24 Segher Boessenkool PR target/86989 * config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is the TOC register. From-SVN: r264247 --- gcc/ChangeLog | 9 +++++++++ gcc/config/rs6000/rs6000.c | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d87df92a4069..6014ee073592 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2018-09-12 Segher Boessenkool + + Backport from trunk + 2018-08-24 Segher Boessenkool + + PR target/86989 + * config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is + the TOC register. + 2018-09-12 Andreas Krebbel Backport from mainline diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 61b3f51f2fae..365f006af626 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -8840,7 +8840,9 @@ toc_relative_expr_p (const_rtx op, bool strict) } return (GET_CODE (tocrel_base) == UNSPEC - && XINT (tocrel_base, 1) == UNSPEC_TOCREL); + && XINT (tocrel_base, 1) == UNSPEC_TOCREL + && REG_P (XVECEXP (tocrel_base, 0, 1)) + && REGNO (XVECEXP (tocrel_base, 0, 1)) == TOC_REGISTER); } /* Return true if X is a constant pool address, and also for cmodel=medium -- 2.47.2