[Bug 235] ICE with array slice assign on 32 bit
via D.gnu
d.gnu at puremagic.com
Sat Oct 22 05:00:14 PDT 2016
http://bugzilla.gdcproject.org/show_bug.cgi?id=235
--- Comment #3 from Iain Buclaw <ibuclaw at gdcproject.org> ---
In compound_expr
---
if (TREE_CODE (arg1) == TARGET_EXPR)
{
// If the rhs is a TARGET_EXPR, then build the compound expression
// inside the target_expr's initializer. This helps the compiler
// to eliminate unnecessary temporaries.
tree init = compound_expr(arg0, TREE_OPERAND (arg1, 1));
TREE_OPERAND (arg1, 1) = init;
return arg1;
}
---
(gdb) call debug_generic_expr (arg1)
TARGET_EXPR <D.3436, func1 () [return slot optimization]>
---
(gdb) call debug_generic_expr (init)
{
char * D.3438;
uint D.3437;
D.3437 = (TARGET_EXPR <D.3436, func1 () [return slot optimization]>).length;
D.3438 = (TARGET_EXPR <D.3436, func1 () [return slot optimization]>).ptr;
while (1)
{
if (D.3437 == 0) break;
*D.3438 = 121;
D.3438++ ;
D.3437-- ;
}
}, func1 () [return slot optimization];
---
This is where the recursion comes from. On x86_64 no TARGET_EXPR is created.
I'd say the creation of a TARGET_EXPR may be dubious anyway. Hmm...
--
You are receiving this mail because:
You are watching all bug changes.
More information about the D.gnu
mailing list