RFA: Fix debug address mode for TARGET_MEM_REF
Richard Biener
richard.guenther@gmail.com
Wed Oct 8 11:02:00 GMT 2014
On Wed, Oct 8, 2014 at 10:16 AM, Joern Rennecke
<joern.rennecke@embecosm.com> wrote:
> Trying to build avr2 strftime of avr-libc ICEs as we are trying to
> convert a PSImode address to HImode. There is no reason to
> do this conversion in the first place - it is a case of failing to recognize
> the proper address space.
>
> The attached patch fixes this.
>
> Bootstrapped on i686-pc-linux-gnu.
>
> OK to apply?
The address-space of TARGET_MEM_REFs is in
TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0)))))
see TARGET_MEM_REF expansion or the MEM_REF handling.
It's unconditionally there, all the if()s in the existing code are bogus.
Thus
Index: cfgexpand.c
===================================================================
--- cfgexpand.c (revision 215917)
+++ cfgexpand.c (working copy)
@@ -3286,7 +3286,7 @@ expand_gimple_stmt_1 (gimple stmt)
@@ -3983,11 +3983,7 @@ expand_debug_expr (tree exp)
if (!op0)
return NULL;
- if (POINTER_TYPE_P (TREE_TYPE (exp)))
- as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp)));
- else
- as = ADDR_SPACE_GENERIC;
-
+ as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0))));
op0 = convert_debug_memory_address (targetm.addr_space.address_mode (as),
op0, as);
if (op0 == NULL_RTX)
is pre-approved.
Thanks,
Richard.
More information about the Gcc-patches
mailing list