February 06, 2019
https://issues.dlang.org/show_bug.cgi?id=19655

          Issue ID: 19655
           Summary: DMD generates wrong code for some circular
                    dependencies
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: blocker
          Priority: P1
         Component: dmd
          Assignee: nobody@puremagic.com
          Reporter: puneet@coverify.org

Created attachment 1729
  --> https://issues.dlang.org/attachment.cgi?id=1729&action=edit
Tar gzipped test case

Code attached. To reproduce the bug, untar and "make run" on a linux box. Note that wrong code is generated only when files/modules are compiled separately and then linked into an executable. That is how the included makefile compiles.

More on this thread on Dlang Forum --> https://forum.dlang.org/thread/oqdzzgcyuvberlzurvrq@forum.dlang.org

When the exeuctable is run, I get:

core.exception.AssertError@grault.d(6): func1 was never called
----------------
??:? [0x4148b0]
??:? [0x4190ca]
??:? [0x4063ed]
??:? [0x402aa9]
??:? [0x4023c3]
??:? [0x402367]
??:? [0x40229f]
??:? [0x40608f]
??:? [0x405f87]
??:? [0x402324]
??:? __libc_start_main [0x7f96e3d2d82f]
??:? [0x402188]
makefile:12: recipe for target 'run' failed
make: *** [run] Error 1

--