http://bugzilla.gdcproject.org/show_bug.cgi?id=235
--- Comment #3 from Iain Buclaw <ibuc...@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.