Bug 20739 – SIGFPE in optimized compile of long.min/-1L

Status
NEW
Severity
normal
Priority
P3
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2020-04-15T21:14:25Z
Last change time
2024-12-13T19:08:09Z
Assigned to
No Owner
Creator
kdevel
Moved to GitHub: dmd#17951 →

Comments

Comment #0 by kdevel — 2020-04-15T21:14:25Z
$ dmd --version DMD64 D Compiler v2.090.1 Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved written by Walter Bright ```minbyminusone.d void main () { version (X86_64) { auto a = long.min; auto b = -1; auto c = a / b; } else { pragma (msg, "untested processor/os"); } } ``` $ gdb [...]dmd [...] (gdb) r -O minbyminusone Starting program: [...]dmd -O minbyminusone [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". Program received signal SIGFPE, Arithmetic exception. 0x00000000008b2c2e in evalu8(elem*, unsigned int) () (gdb) bt #0 0x00000000008b2c2e in evalu8(elem*, unsigned int) () #1 0x00000000008d6988 in optelem(elem*, unsigned int) () #2 0x00000000008d70a3 in optelem(elem*, unsigned int) () #3 0x00000000008d68d5 in optelem(elem*, unsigned int) () #4 0x00000000008d650f in optelem(elem*, unsigned int) () #5 0x00000000008d6529 in optelem(elem*, unsigned int) () #6 0x00000000008d6529 in optelem(elem*, unsigned int) () #7 0x00000000008d717b in doptelem(elem*, unsigned int) () #8 0x00000000008b5a0b in optfunc() () #9 0x00000000008c5a54 in writefunc2(Symbol*) () #10 0x00000000008c55f3 in writefunc(Symbol*) () #11 0x000000000083730e in FuncDeclaration_toObjFile(FuncDeclaration*, bool) () #12 0x000000000084ba0e in toObjFile::ToObjFile::visit(FuncDeclaration*) () #13 0x00000000006e390a in FuncDeclaration::accept(Visitor*) () #14 0x000000000084b99c in toObjFile(Dsymbol*, bool) () #15 0x0000000000835503 in genObjFile(Module*, bool) () #16 0x000000000078f9a6 in dmd.mars.tryMain() () #17 0x0000000000790c7c in D main () #18 0x0000000000976df3 in rt.dmain2._d_run_main2() () #19 0x0000000000976ca1 in rt.dmain2._d_run_main2() () #20 0x0000000000976d7b in rt.dmain2._d_run_main2() () #21 0x0000000000976ca1 in rt.dmain2._d_run_main2() () #22 0x0000000000976c0a in _d_run_main2 () #23 0x00000000009769c6 in _d_run_main () #24 0x0000000000790c19 in main ()
Comment #1 by kdevel — 2020-04-15T21:22:26Z
disass 0x00000000008b2c25 <+10865>: mov -0xa0(%rbp),%rax 0x00000000008b2c2c <+10872>: cqto => 0x00000000008b2c2e <+10874>: idiv %r8 0x00000000008b2c31 <+10877>: mov %rdx,%rsi 0x00000000008b2c34 <+10880>: mov %rax,%rdi regs rax 0x8000000000000000 -9223372036854775808 r8 0xffffffffffffffff -1
Comment #2 by robert.schadek — 2024-12-13T19:08:09Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/17951 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB