From: Richard Sandiford Date: Wed, 16 Nov 2016 10:20:23 +0000 (+0000) Subject: Fix handling of unknown sizes in rtx_addr_can_trap_p X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0e0af68921530695ddfd86780a0d955674ef239f;p=gcc.git Fix handling of unknown sizes in rtx_addr_can_trap_p If the size passed in to rtx_addr_can_trap_p was zero, the frame handling would get the size from the mode instead. However, this too can be zero if the mode is BLKmode, i.e. if we have a BLKmode memory reference with no MEM_SIZE (which should be rare these days). This meant that the conditions for a 4-byte access at offset X were stricter than those for an access of unknown size at offset X. This patch checks whether the size is still zero, as the SYMBOL_REF handling does. gcc/ 2016-11-15 Richard Sandiford Alan Hayward David Sherwood * rtlanal.c (rtx_addr_can_trap_p_1): Handle unknown sizes. Co-Authored-By: Alan Hayward Co-Authored-By: David Sherwood From-SVN: r242476 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index db0f8315998..fe1d9c3b257 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-11-16 Richard Sandiford + Alan Hayward + David Sherwood + + * rtlanal.c (rtx_addr_can_trap_p_1): Handle unknown sizes. + 2016-11-16 Richard Sandiford Alan Hayward David Sherwood diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index ded337b2ac9..f07a77ae6f2 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -543,6 +543,8 @@ rtx_addr_can_trap_p_1 (const_rtx x, HOST_WIDE_INT offset, HOST_WIDE_INT size, if (size == 0) size = GET_MODE_SIZE (mode); + if (size == 0) + return 1; if (x == frame_pointer_rtx) {