In some cases, compiler can allocate the same register for operand 'res'
and 'vecoutptr', resulting in segfault at 'stxvd2x 40,0,%[vecoutptr]'
because base register will contain 1, yielding a false-positive.
This is because output 'res' must be marked as an earlyclobber operand so
it may not overlap an input operand ('vecoutptr').
Signed-off-by: Gustavo Romero <redacted>
---
tools/testing/selftests/powerpc/tm/tm-vmxcopy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
On Mon, Jun 17, 2019 at 05:24:58PM -0400, Gustavo Romero wrote:
In some cases, compiler can allocate the same register for operand 'res'
and 'vecoutptr', resulting in segfault at 'stxvd2x 40,0,%[vecoutptr]'
because base register will contain 1, yielding a false-positive.
This is because output 'res' must be marked as an earlyclobber operand so
it may not overlap an input operand ('vecoutptr').
Signed-off-by: Gustavo Romero <redacted>
From: Michael Ellerman <hidden> Date: 2019-06-30 08:54:31
On Mon, 2019-06-17 at 21:24:58 UTC, Gustavo Romero wrote:
In some cases, compiler can allocate the same register for operand 'res'
and 'vecoutptr', resulting in segfault at 'stxvd2x 40,0,%[vecoutptr]'
because base register will contain 1, yielding a false-positive.
This is because output 'res' must be marked as an earlyclobber operand so
it may not overlap an input operand ('vecoutptr').
Signed-off-by: Gustavo Romero <redacted>
Reviewed-by: Segher Boessenkool <redacted>