none/tests/ppc64/test_isa_2_06_part3.stdout.diff shows: --- test_isa_2_06_part3.stdout.exp 2018-12-06 10:04:10.500178317 -0500 +++ test_isa_2_06_part3.stdout.out 2018-12-06 10:04:16.229937222 -0500 @@ -59,8 +59,8 @@ #0: xvrsqrtesp 1/x-sqrt(3ec00000) ==> PASS); 1/x-sqrt(42780000) ==> PASS); 1/x-sqrt(00000000) ==> PASS); 1/x-sqrt(7f800000) ==> PASS) #1: xvrsqrtesp 1/x-sqrt(00000000) ==> PASS); 1/x-sqrt(00000000) ==> PASS); 1/x-sqrt(80000000) ==> PASS); 1/x-sqrt(7f800000) ==> PASS) -#2: xvrsqrtesp 1/x-sqrt(ff800000) ==> PASS); 1/x-sqrt(7fbfffff) ==> PASS); 1/x-sqrt(ffbfffff) ==> PASS); 1/x-sqrt(7fc00000) ==> PASS) -#3: xvrsqrtesp 1/x-sqrt(ffc00000) ==> PASS); 1/x-sqrt(80000000) ==> PASS); 1/x-sqrt(c683287b) ==> PASS); 1/x-sqrt(49192c2d) ==> PASS) +#2: xvrsqrtesp 1/x-sqrt(ff800000) ==> FAIL); 1/x-sqrt(7fbfffff) ==> PASS); 1/x-sqrt(ffbfffff) ==> PASS); 1/x-sqrt(7fc00000) ==> PASS) +#3: xvrsqrtesp 1/x-sqrt(ffc00000) ==> PASS); 1/x-sqrt(80000000) ==> PASS); 1/x-sqrt(c683287b) ==> FAIL); 1/x-sqrt(49192c2d) ==> PASS) #4: xvrsqrtesp 1/x-sqrt(49c1288d) ==> PASS); 1/x-sqrt(418977ad) ==> PASS); 1/x-sqrt(428a5faf) ==> PASS); 1/x-sqrt(44bb5fcc) ==> PASS) #0: xvsqrtdp sqrt(3fd8000000000000) = 3fe3988e1409212e; sqrt(404f000000000000) = 401f7efbeb8d4f12 This is with gcc-8.2.1-3.4.el8.ppc64le, glibc-2.28-39.el8.ppc64le and binutils-2.30-49.el8.ppc64le
At first blush, behaviour here is similar to what is being seen in 401828 (valgrind, errors with isa_2_06_part1 test). Net is that the testcase fails under valgrind when a newer gcc is used to build it. Test runs OK outside of valgrind. Test runs OK under valgrind if the test is built with -O0.
I reviewed and tested the attached patch to fix this issue. The patch fixes this bug and bugzilla 401828. The patch was tested on Power 7, Power 8 LE, Power 8 BE, Power 9. The patch commit: commit 82e94fff802aece376d5ca8458ef49d24afd7bdf Author: Carl Love <carll@us.ibm.com> Date: Thu Apr 4 12:31:05 2019 -0500 PPC64, patch to test case issues reported in bugzilla 401827 and 401828.