Hi Iain,

>> there is indeed ;-)  The previous d21 emits
>> 
>> binary    ./266566/gcc/d21
>> version   v2.100.1
>> 
>> predefs GNU D_Version2 LittleEndian GNU_DWARF2_Exceptions
>> GNU_StackGrowsDown GNU_InlineAsm assert D_PreConditions D_PostConditions
>> D_Invariants D_ModuleInfo D_Exceptions D_TypeInfo all X86 D_HardFloat
>> Posix Solaris CppRuntime_Gcc
>> 
>> while the patched one gives
>> 
>> core.exception.ArrayIndexError@/var/gcc/reghunt/master/gcc/d/dmd/root/stringtable.d(291):
>> index [3530971477] is out of bounds for array of length 0
>> gcc.deh(505): uncaught exception
>> <built-in>: internal compiler error: Abort
>> 0x96d5b6c crash_signal
>>      /var/gcc/reghunt/master/gcc/toplev.cc:314
>> 
>
> Excellent, and the stage1 compiler?

binary    ./prev-gcc/d21
version   v2.100.1

predefs   GNU D_Version2 LittleEndian GNU_DWARF2_Exceptions GNU_StackGrowsDown 
GNU_InlineAsm assert D_PreConditions D_PostConditions D_Invariants D_ModuleInfo 
D_Exceptions D_TypeInfo all X86 D_HardFloat Posix Solaris CppRuntime_Gcc

So identical to the pre-patch one.

Just in case, here's the stacktrace of the crashing d21, filtered
through c++filt -s dlang:

Thread 2 received signal SIGABRT, Aborted.
[Switching to Thread 1 (LWP 1)]
0xfe1be2e5 in __lwp_sigqueue () from /lib/libc.so.1
(gdb) bt
#0  0xfe1be2e5 in __lwp_sigqueue () from /lib/libc.so.1
#1  0xfe1b62cf in thr_kill () from /lib/libc.so.1
#2  0xfe0ed662 in raise () from /lib/libc.so.1
#3  0xfe0bae74 in abort () from /lib/libc.so.1
#4  0x0a8e786d in gcc.deh.terminate(immutable(char)[], uint) (msg=..., 
line=<optimized out>) at 
/var/gcc/reghunt/master/libphobos/libdruntime/gcc/deh.d:414
#5  0x0a8e7ab3 in _d_throw (object=<optimized out>) at 
/var/gcc/reghunt/master/libphobos/libdruntime/gcc/deh.d:505
#6  0x0a8edf02 in onArrayIndexError (index=<optimized out>, length=<optimized 
out>, file=..., line=<optimized out>) at 
/var/gcc/reghunt/master/libphobos/libdruntime/core/exception.d:650
#7  0x0a8edf3d in _d_arraybounds_indexp (file=<optimized out>, line=<optimized 
out>, index=<optimized out>, length=<optimized out>) at 
/var/gcc/reghunt/master/libphobos/libdruntime/core/exception.d:848
#8  0x08ffc17a in 
dmd.root.stringtable.StringTable!(dmd.identifier.Identifier).StringTable.findSlot(uint,
 scope const(char)[]) const (this=..., hash=<optimized out>, str=...) at 
/var/gcc/reghunt/master/gcc/d/dmd/root/stringtable.d:291
#9  0x08ffc37e in 
dmd.root.stringtable.StringTable!(dmd.identifier.Identifier).StringTable.update(scope
 const(char)[]) (this=..., str=...) at 
/var/gcc/reghunt/master/gcc/d/dmd/root/stringtable.d:184
#10 0x08ffc7b9 in dmd.identifier.Identifier.idPool(const(char)[], bool) 
(isAnonymous=false, s=...) at /var/gc110
#16 toplev::main (this=<optimized out>, argc=<optimized out>, argv=<optimized 
out>) at /var/gcc/reghunt/master/gcc/toplev.cc:2277
#17 0x0a828851 in main (argc=3, argv=0xfeffdb98) at 
/var/gcc/reghunt/master/gcc/main.cc:39

        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to