Bug 18200 – ICE when building 2.078.0 front-end for Windows MSVC targets using host compilers < 2.078

Status
NEW
Severity
major
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
Windows
Creation time
2018-01-06T15:47:42Z
Last change time
2024-12-13T18:56:03Z
Keywords
ice
Assigned to
No Owner
Creator
kinke
Moved to GitHub: dmd#19362 →

Comments

Comment #0 by kinke — 2018-01-06T15:47:42Z
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
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/19362 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB