[Bug bootstrap/85571] [9 Regression] non-bootstrap-debug miscompare with trunk

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Apr 30 11:24:00 GMT 2018


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

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
So even w/o the -f[no-]checking flags I see then when comparing stage2 and
stage3 cc1:

> readelf -S /abuild/rguenther/obj/prev-gcc/cc1 | grep -C 1 .text
       0000000000000008  0000000000000008  AX       0     0     8
  [14] .text             PROGBITS         000000000057be60  0017be60
       0000000000feb92a  0000000000000000  AX       0     0     16
> readelf -S /abuild/rguenther/obj/gcc/cc1 | grep -C 1 .text
       0000000000000008  0000000000000008  AX       0     0     8
  [14] .text             PROGBITS         000000000057be60  0017be60
       0000000000feb5ba  0000000000000000  AX       0     0     16

assembly shows (after stripping reloc offset differences - bah, objdump
should have a way to substitute zero for all of those):

@@ -11420,24 +11420,6 @@
   xx:  xx xx xx                mov    %rxx,%rdi
   xx:  xx xx xx xx xx          mov    $0xb,%esi
   xx:  xx xx xx xx xx          xxllq  xx
<_Zxxtrxx_contains_struct_chxxk_xxilxx
PK9trxx_noxxtrxx_noxx_structure_enumPKciS4_>
-  xx:  xx xx xx                mov    %r8,%rdi
-  xx:  xx xx xx xx xx          xxllq  xx
<_ZLxxi_tag_bindingP9trxx_noxx.part.xx
>
-  xx:  xx xx xx                mov    %rxx,%rdi
-  xx:  xx xx xx xx xx          xxllq  xx
<_ZLxxi_symbol_bindingP9trxx_noxx.part
.xx>
-  xx:  xx xx xx                mov    %r8,%rdi
-  xx:  xx xx xx xx xx          xxllq  xx
<_ZLxxi_tag_bindingP9trxx_noxx.part.xx
>
-  xx:  xx xx xx                mov    %rxx,%rdi
-  xx:  xx xx xx xx xx          xxllq  xx
<_ZLxxi_symbol_bindingP9trxx_noxx.part
.xx>
-  xx:  xx xx xx xx xx          mov    $0xxx,%xxx
-  xx:  xx xx xx xx xx          mov    $0xxx,%esi
-  xx:  xx xx xx xx xx          mov    $0xxx,%xxi
-  xx:  xx xx xx xx xx          xxllq  xx <_Zxxncy_xxortPKciS0_>
-  xx:  xx xx xx xx xx xx       mov    $0xxx,%rxx
-  xx:  xx xx xx xx xx          mov    $0xxx,%xxx
-  xx:  xx xx xx xx xx          mov    $0xxx,%xxx
-  xx:  xx xx xx                mov    %rxx,%rdi
-  xx:  xx xx xx xx xx          mov    $0x1,%esi
-  xx:  xx xx xx xx xx          xxllq  xx
<_Zxxtrxx_contains_struct_chxxk_xxilxxPK9trxx_noxxtrxx_noxx_structure_enumPKciS4_>
   xx:  xx xx xx xx xx xx       mov    $0xxx,%rxx
   xx:  xx xx xx xx xx          mov    $0xxx,%xxx
   xx:  xx xx xx xx xx          mov    $0xxx,%xxx
@@ -11480,6 +11462,20 @@
   xx:  xx xx xx xx xx          mov    $0xxx,%esi
   xx:  xx xx xx                mov    %rxx,%rdi
   xx:  xx xx xx xx xx          xxllq  xx
<_Zxxtrxx_chxxk_xxilxxPK9trxx_noxxPKciS3_z>
+  xx:  xx xx xx                mov    %r8,%rdi
+  xx:  xx xx xx xx xx          xxllq  xx
<_ZLxxi_tag_bindingP9trxx_noxx.part.xx>
+  xx:  xx xx xx                mov    %rxx,%rdi
+  xx:  xx xx xx xx xx          xxllq  xx
<_ZLxxi_symbol_bindingP9trxx_noxx.part.xx>
+  xx:  xx xx xx xx xx          mov    $0xxx,%xxx
+  xx:  xx xx xx xx xx          mov    $0xxx,%esi
+  xx:  xx xx xx xx xx          mov    $0xxx,%xxi
+  xx:  xx xx xx xx xx          xxllq  xx <_Zxxncy_xxortPKciS0_>
+  xx:  xx xx xx xx xx xx       mov    $0xxx,%rxx
+  xx:  xx xx xx xx xx          mov    $0xxx,%xxx
+  xx:  xx xx xx xx xx          mov    $0xxx,%xxx
+  xx:  xx xx xx                mov    %rxx,%rdi
+  xx:  xx xx xx xx xx          mov    $0x1,%esi
+  xx:  xx xx xx xx xx          xxllq  xx
<_Zxxtrxx_contains_struct_chxxk_xxilxxPK9trxx_noxxtrxx_noxx_structure_enumPKciS4_>
   xx:  xx xx xx xx xx xx       mov    $0xxx,%rxx
   xx:  xx xx xx xx xx          mov    $0xxx,%xxx
   xx:  xx xx xx xx xx          mov    $0xxx,%xxx
...

 xx <_ZLxx_parser_postfix_expressionPxx_parser.cold.xx>:
-  xx:  xx xx xx xx xx          xxllq  xx
<_ZN3vxxIxxva_hxxp6vl_ptrExxquick_pushERKb.isra.xx.part.xx>
+  xx:  xx xx xx xx xx          xxllq  xx
<_ZN3vxxIxxva_hxxp6vl_ptrEixEj.isra.xx.part.xx>
   xx:  xx xx xx xx xx xx       mov    $0xxx,%rxx

so different BB re-ordering / partitioning?

For example in the case of gengtype from stage2/stage3 .text has the same size
but .debug_info size differs by one byte.  But gentype code differs as well:

@@ -2884,6 +2884,7 @@
   xx:  xx xx xx xx xx          xxllq  xx <_ZLxxpxxk_state_tokeni>
   xx:  xx xx xx xx xx          mov    $0x1,%xxi
   xx:  xx xx xx                mov    %rax,%rxx
+  xx:  xx xx xx xx             mov    %rax,(%rsp)
   xx:  xx xx xx xx xx          xxllq  xx <_ZLxxpxxk_state_tokeni>
   xx:  xx xx xx xx xx          mov    $0x2,%xxi
   xx:  xx xx xx                mov    %rax,%rbp
...


More information about the Gcc-bugs mailing list