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

            Bug ID: 103529
           Summary: [12 regression] d21 SIGBUS on SPARC
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: d
          Assignee: ibuclaw at gdcproject dot org
          Reporter: ro at gcc dot gnu.org
  Target Milestone: ---
            Target: sparc*-sun-solaris2.11

As mentioned in PR d/103528, the stage1 d21 dies with SIGBUS compiling a
trivial
test program when configuring stage1 libphobos:

$ cat conftest.d
module object;


extern(C) int main() {
  return 0;
}
$ d21 conftest.d -quiet -dumpbase conftest.d -dumpbase-ext .d -mcpu=v9 -g -O2
-version -fno-checking -fno-druntime -iprefix
/var/gcc/regression/master/11.4-gcc-gas/build/gcc/../lib/gcc/sparc-sun-solaris2.11/12.0.0/
-isystem /var/gcc/regression/master/11.4-gcc-gas/build/./gcc/include -isystem
/var/gcc/regression/master/11.4-gcc-gas/build/./gcc/include-fixed -nostdinc
-isystem /vol/gcc/sparc-sun-solaris2.11/include -isystem
/vol/gcc/sparc-sun-solaris2.11/sys-include -I
/vol/gcc/src/hg/master/local/libphobos/libdruntime -v -o conftest.s
[...]
predefs   GNU D_Version2 BigEndian GNU_DWARF2_Exceptions GNU_StackGrowsDown
GNU_InlineAsm assert D_BetterC all SPARC SPARC_V8Plus D_HardFloat
SPARC_HardFloat Posix Solaris CppRuntime_Gcc
parse     conftest
d21: internal compiler error: Bus Error
0x1abda2f crash_signal
        /vol/gcc/src/hg/master/local/gcc/toplev.c:322
0xf34643 _D3dmd5lexer5Lexer9endOfLineMFNaNbNiNfZv
        /vol/gcc/src/hg/master/local/gcc/d/dmd/lexer.d:3112
0xf34643 _D3dmd5lexer5Lexer4scanMFNbPS3dmd6tokens5TokenZv
        /vol/gcc/src/hg/master/local/gcc/d/dmd/lexer.d:390
0xf35e3b _D3dmd5lexer5Lexer9nextTokenMFNbZE3dmd6tokens3TOK
        /vol/gcc/src/hg/master/local/gcc/d/dmd/lexer.d:335
0xe36f17
_D3dmd5parse41__T6ParserTS3dmd10astcodegen10ASTCodegenZ6Parser11parseModuleMFZPS3dmd4root5array32__T5ArrayTC3dmd7dsymbol7DsymbolZ5Array
        /vol/gcc/src/hg/master/local/gcc/d/dmd/parse.d:441
0xe358c7
_D3dmd7dmodule6Module47__T11parseModuleTS3dmd10astcodegen10ASTCodegenZ11parseModuleMFZC3dmd7dmodule6Module
        /vol/gcc/src/hg/master/local/gcc/d/dmd/dmodule.d:1072
0xffcb77 d_parse_file
        /vol/gcc/src/hg/master/local/gcc/d/d-lang.cc:1103

gdb shows

Thread 2 received signal SIGBUS, Bus error.
[Switching to Thread 1 (LWP 1)]
0x00f079fc in dmd.lexer.Lexer.scan(dmd.tokens.Token*) (this=0xffbfe0c8,
t=0xffbfe0f0) at /vol/gcc/src/hg/master/local/gcc/d/dmd/lexer.d:398
398                     while (*(cast(uint*)p) == 0x20202020) //' ' == 0x20
(gdb) p/x p
warning: can't find linker symbol for virtual table for `dmd.lexer.Lexer' value
warning:   found `initializer for
TypeInfo_S3dmd5parse__T16PrefixAttributesTSQBh10astcodegen10ASTCodegenZQBw'
instead
$1 = 0xfb8d0acf
(gdb) bt
#0  0x00f079fc in dmd.lexer.Lexer.scan(dmd.tokens.Token*) (this=0xffbfe0c8,
t=0xffbfe0f0) at /vol/gcc/src/hg/master/local/gcc/d/dmd/lexer.d:398
#1  0x00f08adc in dmd.lexer.Lexer.nextToken() (this=0xffbfe0c8) at
/vol/gcc/src/hg/master/local/gcc/d/dmd/lexer.d:335
#2  0x00e0ec14 in
dmd.parse.Parser!(dmd.astcodegen.ASTCodegen).Parser.parseModule()
(this=0xffbfe0c8) at /vol/gcc/src/hg/master/local/gcc/d/dmd/parse.d:441
#3  0x00e0d6ec in
dmd.dmodule.Module.parseModule!(dmd.astcodegen.ASTCodegen).parseModule()
(this=0xfb8d9000) at /vol/gcc/src/hg/master/local/gcc/d/dmd/dmodule.d:1072
#4  0x00ffe214 in d_parse_file () at
/vol/gcc/src/hg/master/local/gcc/d/d-lang.cc:1103
#5  0x01ac8050 in compile_file () at
/vol/gcc/src/hg/master/local/gcc/toplev.c:452
#6  0x01accf34 in do_compile (no_backend=false) at
/vol/gcc/src/hg/master/local/gcc/toplev.c:2156
#7  0x01acd4f4 in toplev::main (this=0xffbfe5aa, argc=29, argv=0xffbfe614) at
/vol/gcc/src/hg/master/local/gcc/toplev.c:2308
#8  0x02e45cb8 in main (argc=29, argv=0xffbfe614) at
/vol/gcc/src/hg/master/local/gcc/main.c:39

The type punning above is practically guaranteed to break badly on
strict-alignment
targets like SPARC.

The attached patch (hack?) fixed this, restored bootstrap and provided 
more-or-less ok test results.

Reply via email to