This reworks the modulo operation as seen in
valgrind/none/tests/ppc64/test_isa_3_1_common.c:
initialize_source_registers().
Due to a GCC issue (PR101882), we will try to avoid a modulo operation with
both input and outputs set to a hard register. In this case, we can apply
the modulo operation to the args[] array value used to initialize the ra
value.
https://bugs.kde.org/show_bug.cgi?id=440906
439590 glibc-2.34 breaks suppressions against obj:*/lib*/libc-2.*so*
440670 unhandled ppc64le-linux syscall: 252 (statfs64) and 253 (fstatfs64)
432387 s390x: z15 instructions support
+440906 Fix impossible constraint issue in P10 testcase.
441512 Remove a unneeded / unnecessary prefix check.
To see details of a given bug, visit
if (has_ra) ra = 4*vrai;
if (is_insert_double) {
/* For an insert_double, the results are undefined
- for ra > 8, so modulo those into a valid range. */
- ra = ra % 9;
+ for ra > 8, so modulo those into a valid range.
+ Since ra is defined as a hard register, and due to gcc
+ issue (PR101882) where a modulo operation fails with
+ both input and output regs set to a hard register, this
+ assignment references the args[] array again, versus
+ ra = ra % 9;. */
+ ra = args[vrai] % 9;
}
}