]> sourceware.org Git - valgrind.git/commitdiff
Fix impossible constraint issue in P10 testcase.
authorCarl Love <cel@us.ibm.com>
Fri, 3 Sep 2021 17:14:50 +0000 (17:14 +0000)
committerCarl Love <cel@us.ibm.com>
Tue, 7 Sep 2021 18:35:45 +0000 (13:35 -0500)
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

NEWS
none/tests/ppc64/test_isa_3_1_common.c

diff --git a/NEWS b/NEWS
index 5643be5e47610508fce1b9c2da54aa35eb117762..f86934332675b7649f3315f907e4b165c30b69bc 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -52,6 +52,7 @@ are not entered into bugzilla tend to get forgotten about or ignored.
 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
index 8222a857fc9558f0d4a2c6382979fa98d412dded..7c3dc6f009da99643d8e313b088615a6dcf674a7 100644 (file)
@@ -2263,8 +2263,13 @@ void initialize_source_registers () {
       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;
       }
    }
 
This page took 0.047995 seconds and 5 git commands to generate.