target/xtensa: fix break_dependency for repeated resources
commitb9ec52188f1eafb2901d37a57727bbf1d8bbe3ca
authorMax Filippov <jcmvbkbc@gmail.com>
Fri, 22 Mar 2019 03:22:03 +0000 (21 20:22 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Fri, 22 Mar 2019 04:47:50 +0000 (21 21:47 -0700)
tree9fc0259f9fa49c37ef235806cc953ccb8a534e3b
parent62a172e6a77d9072bb1a18f295ce0fcf4b90a4f2
target/xtensa: fix break_dependency for repeated resources

break_dependency incorrectly handles the case of dependency on an opcode
that references the same register multiple times. E.g. the following
instruction is translated incorrectly:

  { or a2, a3, a3 ; or a3, a2, a2 }

This happens because resource indices of both dependency graph nodes are
incremented, and a copy for the second instance of the same register in
the ending node is not done.
Only increment resource index of the ending node of the dependency.
Add test.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
target/xtensa/translate.c
tests/tcg/xtensa/test_flix.S