On 10/11/18 10:40 PM, Jeff Law wrote: > On 10/11/18 1:23 PM, Peter Bergner wrote: >> * ira-lives (non_conflicting_reg_copy_p): Disable for non LRA targets. > So this helped the alpha & hppa and sh4. > > I'm still seeing failures on the aarch64, s390x. No surprise on these > since they use LRA by default and would be unaffected by this patch.
Ok, I was able to reduce the aarch64 test case down to the minimum test case that still kept the kernel's __cmpxchg_double() function intact. I tested the patch you're currently running on your builders which changed some of the "... == OP_OUT" to "... != OP_IN", etc and it doesn't fix the following test case, like it seems to fix the s390 issue and segher's small test case (both aarch64 and ppc64). It's late here, so I'll start digging into this one in the morning. Peter bergner@pike:~/gcc/BUGS/PR87507/$ cat slub-min.c long __cmpxchg_double (unsigned long arg) { unsigned long old1 = 0; unsigned long old2 = arg; unsigned long new1 = 0; unsigned long new2 = 0; volatile void *ptr = 0; unsigned long oldval1 = old1; unsigned long oldval2 = old2; register unsigned long x0 asm ("x0") = old1; register unsigned long x1 asm ("x1") = old2; register unsigned long x2 asm ("x2") = new1; register unsigned long x3 asm ("x3") = new2; register unsigned long x4 asm ("x4") = (unsigned long) ptr; asm volatile (" casp %[old1], %[old2], %[new1], %[new2], %[v]\n" " eor %[old1], %[old1], %[oldval1]\n" " eor %[old2], %[old2], %[oldval2]\n" " orr %[old1], %[old1], %[old2]\n" : [old1] "+&r" (x0), [old2] "+&r" (x1), [v] "+Q" (* (unsigned long *) ptr) : [new1] "r" (x2), [new2] "r" (x3), [ptr] "r" (x4), [oldval1] "r" (oldval1),[oldval2] "r" (oldval2) : "x16", "x17", "x30"); return x0; } bergner@pike:~/gcc/BUGS/PR87507/$ /home/bergner/gcc/build/gcc-fsf-mainline-aarch64-r264897/gcc/xgcc -B/home/bergner/gcc/build/gcc-fsf-mainline-aarch64-r264897/gcc -O2 -march=armv8.1-a -c slub-min.c /tmp/ccQCkiSG.s: Assembler messages: /tmp/ccQCkiSG.s:24: Error: reg pair must be contiguous at operand 2 -- `casp x0,x6,x2,x3,[x5]'