Ping: [Patch]: Fix ICE by expand_expr_addr_expr_1
Ping for: On May 15, 2012, at 10:59 AM, Tristan Gingold wrote: Hi, I got ICE in plus_constant (after the assertions were added) due to expand_expr_addr_expr_1 during build on ia64/Openvms. This function is called with TMODE == SImode (32 bit pointers) but EXP designating a variable on the frame (whose register is DImode). Hence the ICE. Fixed by the following patch. No regression on x86-64 GNU/Linux. Ok for trunk ? Tristan. 2012-05-15 Tristan Gingold ging...@adacore.com * expr.c (expand_expr_addr_expr_1): Call convert_memory_address_addr_space. diff --git a/gcc/expr.c b/gcc/expr.c index 3edb4a2..1b0ad8d 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -7600,6 +7600,7 @@ expand_expr_addr_expr_1 (tree exp, rtx target, enum machin TYPE_USER_ALIGN (TREE_TYPE (inner)) = 1; } result = expand_expr_addr_expr_1 (inner, subtarget, tmode, modifier, as); + result = convert_memory_address_addr_space (tmode, result, as); if (offset) {
[Patch]: Fix ICE by expand_expr_addr_expr_1
Hi, I got ICE in plus_constant (after the assertions were added) due to expand_expr_addr_expr_1 during build on ia64/Openvms. This function is called with TMODE == SImode (32 bit pointers) but EXP designating a variable on the frame (whose register is DImode). Hence the ICE. Fixed by the following patch. No regression on x86-64 GNU/Linux. Ok for trunk ? Tristan. 2012-05-15 Tristan Gingold ging...@adacore.com * expr.c (expand_expr_addr_expr_1): Call convert_memory_address_addr_space. diff --git a/gcc/expr.c b/gcc/expr.c index 3edb4a2..1b0ad8d 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -7600,6 +7600,7 @@ expand_expr_addr_expr_1 (tree exp, rtx target, enum machin TYPE_USER_ALIGN (TREE_TYPE (inner)) = 1; } result = expand_expr_addr_expr_1 (inner, subtarget, tmode, modifier, as); + result = convert_memory_address_addr_space (tmode, result, as); if (offset) {