www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 20621] New: Since DMD 2.087.0: 32 Bit Linux now uses XMM

https://issues.dlang.org/show_bug.cgi?id=20621

          Issue ID: 20621
           Summary: Since DMD 2.087.0: 32 Bit Linux now uses XMM
                    registers: SIGILL, Illegal instruction on intel
                    Pentium III
           Product: D
           Version: D2
          Hardware: x86
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: kdevel vogtner.de

STR (copied from [1]):

```test.d
void main ()
{
   int [] v = new int [10];
}
```

$ [...]linux/bin32/dmd test
$ gdb test
[...]
(gdb) r
[...]
Program received signal SIGILL, Illegal instruction.
0x0809ad14 in _D2gc4impl12conservativeQw3Gcx10smallAllocMFNbkKkkxC8TypeInfoZPv
()
[...]
(gdb) disass
[...]
0x0809ad14
<_D2gc4impl12conservativeQw3Gcx10smallAllocMFNbkKkkxC8TypeInfoZPv+172>:     
movsd  -0x58(%ebp),%xmm0

ddemangled:
nothrow void* gc.impl.conservative.gc.Gcx.smallAlloc(uint, ref uint, uint,
const(TypeInfo))

Is this Component = druntime or phobos?
Why does memory allocation use an XMM register in the first place?

[1] http://forum.dlang.org/thread/suwlbzlgqdylfauwgteu forum.dlang.org

--
Feb 27 2020