www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 23499] New: inliner crashes/asserts when building for 32-bit

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

          Issue ID: 23499
           Summary: inliner crashes/asserts when building for 32-bit
           Product: D
           Version: D2
          Hardware: x86
                OS: Windows
            Status: NEW
          Severity: regression
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: r.sagitario gmx.de

Building visuald with dmd 2.101 causes the compiler to crash. Using a dmd build
with assertions enabled shows

core.exception.AssertError ..\dmd\backend\inliner.d(404): Assertion failure

Reducing both visuald and phobos results in this test case:

///---- file.d
struct TempCStringBuffer(To )
{
    ~this()
    {
    }
    To* _ptr;
}

auto tempCString(To, From)(From)
{
    return TempCStringBuffer!To();
}

bool exists(R)(R name)
{
    return name.tempCString!wchar._ptr != null;
}

///---- automation.d
import file;

///--- build.d
import file;

bool do_build()
{
        string outdir ;
        return (exists(outdir));
}
///

executing "dmd -m32mscoff -O -inline -c automation.d build.d"

yields the assertion. The same for -m32omf. It doesn't crash if you omit
automation.d or add file.d to the command line.

--
Nov 20 2022