From 0e0af68921530695ddfd86780a0d955674ef239f Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Wed, 16 Nov 2016 10:20:23 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/rtlanal.c | 2 ++ 2 files changed, 8 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index db0f831..fe1d9c3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -2,6 +2,12 @@ Alan Hayward David Sherwood + * rtlanal.c (rtx_addr_can_trap_p_1): Handle unknown sizes. + +2016-11-16 Richard Sandiford + Alan Hayward + David Sherwood + * tree-vect-loop.c (vect_transform_loop): Protect the updates of all three iteration counts with an any_* test. Use a single update for each count. Fix the calculation of nb_iterations_estimate. diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index ded337b..f07a77a 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) { -- 2.7.4