From: John David Anglin Date: Wed, 8 Jan 2014 01:58:35 +0000 (+0000) Subject: re PR target/59652 (ICE: in reload_cse_simplify_operands, at postreload.c:411) X-Git-Tag: releases/gcc-4.9.0~1790 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=55ada375eab20d171ad95f3e8363cc2a75d98ddd;p=thirdparty%2Fgcc.git re PR target/59652 (ICE: in reload_cse_simplify_operands, at postreload.c:411) PR target/59652 * config/pa/pa.c (pa_legitimate_address_p): Return false before reload for 14-bit register offsets when INT14_OK_STRICT is false. From-SVN: r206413 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c9853779a302..b04be2d7ec7a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-07 John David Anglin + + PR target/59652 + * config/pa/pa.c (pa_legitimate_address_p): Return false before reload + for 14-bit register offsets when INT14_OK_STRICT is false. + 2014-01-07 Roland Stigge Michael Meissner diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 2c4f6bfcaceb..c3755bfa9122 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -10424,13 +10424,13 @@ pa_legitimate_address_p (enum machine_mode mode, rtx x, bool strict) /* When INT14_OK_STRICT is false, a secondary reload is needed to adjust the displacement of SImode and DImode floating point - instructions. So, we return false when STRICT is true. We + instructions but this may fail when the register also needs + reloading. So, we return false when STRICT is true. We also reject long displacements for float mode addresses since the majority of accesses will use floating point instructions that don't support 14-bit offsets. */ if (!INT14_OK_STRICT - && reload_in_progress - && strict + && (strict || !(reload_in_progress || reload_completed)) && mode != QImode && mode != HImode) return false; @@ -10490,8 +10490,7 @@ pa_legitimate_address_p (enum machine_mode mode, rtx x, bool strict) return true; if (!INT14_OK_STRICT - && reload_in_progress - && strict + && (strict || !(reload_in_progress || reload_completed)) && mode != QImode && mode != HImode) return false;