https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88900

--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
I first isolated minimal test-case for which I can see the miscompilation of
the benchmark compiler:

$ cat scilab.c
int a, b, c, d;
void e() { a = (d >= c ? d : c) - 1 + b; }

$ bash -x ./reduce-ice.sh scilab.c 
+ TC1=scilab.c
+
/home/marxin/Programming/cpu2017/benchspec/CPU/502.gcc_r/build/build_peak_gcc7-m64.0000/cpugcc_r
scilab.c -fpic -o 1.s
+ test 0 = 0
+ /tmp/502gcc/build/build_peak_gcc7-m64.0000/cpugcc_r scilab.c -fpic -o 2.s
+ test 0 = 0
+ diff -u 1.s 2.s
--- 1.s 2019-01-23 12:36:20.815829891 +0100
+++ 2.s 2019-01-23 12:36:20.831830396 +0100
@@ -4,26 +4,23 @@
 .globl e
        .type   e, @function
 e:
+       call    __i686.get_pc_thunk.cx
+       addl    $_GLOBAL_OFFSET_TABLE_, %ecx
        pushl   %ebp
        movl    %esp, %ebp
-       pushl   %ebx
-       call    __i686.get_pc_thunk.bx
-       addl    $_GLOBAL_OFFSET_TABLE_, %ebx
-       movl    b@GOT(%ebx), %eax
-       movl    (%eax), %ecx
-       movl    d@GOT(%ebx), %eax
-       subl    $1, %ecx
+       movl    d@GOT(%ecx), %eax
        movl    (%eax), %edx
-       movl    c@GOT(%ebx), %eax
+       movl    c@GOT(%ecx), %eax
...

Not I'm going to find a minimal set of LTO object files needed.

Reply via email to