https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109231
Bug ID: 109231
Summary: [13 regression] Comparison failure in
libphobos/libdruntime/rt/util/typeinfo.o
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: d
Assignee: ibuclaw at gdcproject dot org
Reporter: ro at gcc dot gnu.org
Target Milestone: ---
Host: sparc-sun-solaris2.11
Target: sparc-sun-solaris2.11
Build: sparc-sun-solaris2.11
Between 20230317 (2bb71424636fba7944b36b1689e9df22a53f1a3f) and 20230320
(fbd50e867e6a782c7b56c9727bf7e1e74dae4b94),
Solaris/SPARC bootstrap broke with a comparison failure:
Comparing stages 2 and 3
Bootstrap comparison failure!
sparc-sun-solaris2.11/libphobos/libdruntime/rt/util/.libs/typeinfo.o differs
sparc-sun-solaris2.11/libphobos/libdruntime/rt/util/typeinfo.o differs
make[2]: *** [Makefile:32772: compare] Error 1
For some reason, this only happens when using gas, not with the native as.
elfcmp shows
*** section:
[244].text._D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7compareMxFIPvIQdZi:
data information differs
--- <sym>:
_D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7compareMxFIPvIQdZi()
< 0x40:<sym>+0x40: 83 aa 4a a8 fcmpes %fcc1, %f9, %f8
> 0x40:<sym>+0x40: 81 aa 4a a8 fcmpes %fcc0, %f9, %f8
*** section:
[245].text._D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7compareMxFIPvIQdZi:
data information differs
--- <sym>:
_D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7compareMxFIPvIQdZi()
< 0x34:<sym>+0x34: 81 aa 0a 48 fcmpd %fcc0, %d8, %d8
> 0x34:<sym>+0x34: 83 aa 0a 48 fcmpd %fcc1, %d8, %d8
*** section:
[246].text._D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7compareMxFIPvIQdZi:
data information differs
--- <sym>:
_D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7compareMxFIPvIQdZi()
< 0x3c:<sym>+0x3c: 87 aa 0a 28 fcmps %fcc3, %f8, %f8
> 0x3c:<sym>+0x3c: 81 aa 0a 28 fcmps %fcc0, %f8, %f8
*** section:
[247].text._D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7compareMxFIPvIQdZi:
data information differs
--- <sym>:
_D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7compareMxFIPvIQdZi()
< 0x3c:<sym>+0x3c: 83 aa 0a 48 fcmpd %fcc1, %d8, %d8
> 0x3c:<sym>+0x3c: 85 aa 0a 48 fcmpd %fcc2, %d8, %d8
*** section:
[248].text._D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7compareMxFNaNbNeIPvIQdZi:
data information differs
--- <sym>:
_D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7compareMxFNaNbNeIPvIQdZi()
< 0x8:<sym>+0x8: 87 aa 0a 28 fcmps %fcc3, %f8, %f8
> 0x8:<sym>+0x8: 81 aa 0a 28 fcmps %fcc0, %f8, %f8
*** section:
[249].text._D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7compareMxFNaNbNeIPvIQdZi:
data information differs
--- <sym>:
_D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7compareMxFNaNbNeIPvIQdZi()
< 0x8:<sym>+0x8: 85 aa 0a 48 fcmpd %fcc2, %d8, %d8
> 0x8:<sym>+0x8: 87 aa 0a 48 fcmpd %fcc3, %d8, %d8
*** section:
[250].text._D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7compareMxFNaNbNeIPvIQdZi:
data information differs
--- <sym>:
_D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7compareMxFNaNbNeIPvIQdZi()
< 0x8:<sym>+0x8: 83 aa 0a 28 fcmps %fcc1, %f8, %f8
> 0x8:<sym>+0x8: 85 aa 0a 28 fcmps %fcc2, %f8, %f8
*** section:
[251].text._D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7compareMxFNaNbNeIPvIQdZi:
data information differs
--- <sym>:
_D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7compareMxFNaNbNeIPvIQdZi()
< 0x8:<sym>+0x8: 87 aa 0a 48 fcmpd %fcc3, %d8, %d8
> 0x8:<sym>+0x8: 81 aa 0a 48 fcmpd %fcc0, %d8, %d8
*** section:
[284].text._D4core8internal5array8equality__T8__equalsTxE2rt4util7utility17__c_complex_floatTxQBmZQCbFNaNbNiNfMAxQCfMQgZb:
data information differs
--- <sym>:
_D4core8internal5array8equality__T8__equalsTxE2rt4util7utility17__c_complex_floatTxQBmZQCbFNaNbNiNfMAxQCfMQgZb()
< 0x44:<sym>+0x44: 85 aa 4a 28 fcmps %fcc2, %f9, %f8
> 0x44:<sym>+0x44: 87 aa 4a 28 fcmps %fcc3, %f9, %f8
*** section:
[287].text._D4core8internal5array8equality__T8__equalsTxE2rt4util7utility18__c_complex_doubleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb:
data information differs
--- <sym>:
_D4core8internal5array8equality__T8__equalsTxE2rt4util7utility18__c_complex_doubleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb()
< 0x44:<sym>+0x44: 81 aa 8a 48 fcmpd %fcc0, %d10, %d8
> 0x44:<sym>+0x44: 83 aa 8a 48 fcmpd %fcc1, %d10, %d8
*** section:
[295].text._D4core8internal4hash__T13coalesceFloatTfZQsFNaNbNiNfxfZf: data
information differs
--- <sym>: _D4core8internal4hash__T13coalesceFloatTfZQsFNaNbNiNfxfZf()
< 0x28:<sym>+0x28: 83 aa 0a 20 fcmps %fcc1, %f8, %f0
> 0x28:<sym>+0x28: 85 aa 0a 20 fcmps %fcc2, %f8, %f0
*** section:
[302].text._D4core8internal4hash__T13coalesceFloatTdZQsFNaNbNiNfxdZd: data
information differs
--- <sym>: _D4core8internal4hash__T13coalesceFloatTdZQsFNaNbNiNfxdZd()
< 0x20:<sym>+0x20: 87 aa 0a 40 fcmpd %fcc3, %d8, %d0
> 0x20:<sym>+0x20: 81 aa 0a 40 fcmpd %fcc0, %d8, %d0
*** section:
[415].text._D4core8internal5array8equality__T7isEqualTfTfZQnFNaNbNiMxPfMxQekZb:
data information differs
--- <sym>:
_D4core8internal5array8equality__T7isEqualTfTfZQnFNaNbNiMxPfMxQekZb()
< 0x2c:<sym>+0x2c: 83 aa 4a 28 fcmps %fcc1, %f9, %f8
> 0x2c:<sym>+0x2c: 85 aa 4a 28 fcmps %fcc2, %f9, %f8
*** section:
[420].text._D4core8internal5array8equality__T7isEqualTdTdZQnFNaNbNiMxPdMxQekZb:
data information differs
--- <sym>:
_D4core8internal5array8equality__T7isEqualTdTdZQnFNaNbNiMxPdMxQekZb()
< 0x2c:<sym>+0x2c: 85 aa 8a 48 fcmpd %fcc2, %d10, %d8
> 0x2c:<sym>+0x2c: 87 aa 8a 48 fcmpd %fcc3, %d10, %d8
Those differences in register allocation may well not be a gdc problem at all.
Considering the commits in that range, this one
commit 57688950b9328cbb4a9c21eb3199f9132b5119d3
Author: Vladimir N. Makarov <[email protected]>
Date: Fri Mar 17 08:58:58 2023 -0400
LRA: Implement combining secondary memory reload and original insn
might be a candidate.