The 2.078.0 front-end cannot be built by any recent D host compiler for a Windows MSVC target. Reason is a front-end segfault in the host compiler, triggered by an MSVC-specific check (possibly introduced in 2.071) and exposed by 2.078 visitor refactoring.
The following snippet crashes recent DMD versions < 2.078 (when using `-m32mscoff` or `-m64`) and all LDC versions in [1.1, 1.7], LDC 1.0 (2.070) seems to be fine:
```
mixin template VisitMethod(T)
{
void visit(T arg) {}
}
extern (C++) class Base
{
void virtualFunc(int arg) {}
}
extern (C++) class Derived : Base
{
mixin VisitMethod!int;
}
```
In reality, it's dmd.transitivevisitor.ParseVisitMethods being mixed into dmd.visitor.SemanticTimeTransitiveVisitor. See https://github.com/ldc-developers/ldc/pull/2486#issuecomment-355753668 for more context.
Comment #1 by robert.schadek — 2024-12-13T18:56:03Z