The inline assembly for GET_STARTREGS in m_libcassert.c writes to its
output before using the input argument. But since the compiler doesn't
know this, it is allowed to allocate the same register for both, causing
problems. This has been seen when compiling Valgrind with -O0, after
which memcheck/tests/leak-autofreepool-5 fails due to SIGSEGV.
Fix this by declaring the output as early-clobber, so the compiler knows
about the restriction.
"std %%f5, 64(%1);" \
"std %%f6, 72(%1);" \
"std %%f7, 80(%1);" \
- : /* out */ "=r" (ia) \
+ : /* out */ "=&r" (ia) \
: /* in */ "a" (&block[0]) \
: /* trash */ "memory" \
); \