------- Additional Comments From jakub at gcc dot gnu dot org 2005-09-09 17:43 ------- The difference between 4.0 and HEAD is the expr.c hunk of http://gcc.gnu.org/ml/gcc-patches/2005-07/msg02021.html If Paolo's reversion of that: http://gcc.gnu.org/ml/gcc-patches/2005-09/msg00589.html makes it in, the testcase will pass again.
The real problem is I think that when calls.c decides to save stack area under an argument for the inner expand_call, but that argument partially overlaps with the result of the call, we save/restore the argument with the inner expand_call's argument mode and don't just limit to the actual bytes that have already been initialized. So we read some uninitialized bits from the stack and overwrite with them the computed argument. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23775