digitalmars.D.bugs - [Issue 16242] New: Sometimes dependencies are not properly
- via Digitalmars-d-bugs (35/35) Jul 06 2016 https://issues.dlang.org/show_bug.cgi?id=16242
https://issues.dlang.org/show_bug.cgi?id=16242 Issue ID: 16242 Summary: Sometimes dependencies are not properly stored/detected Product: D Version: D2 Hardware: x86 OS: Mac OS X Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: schveiguy yahoo.com Created attachment 1602 --> https://issues.dlang.org/attachment.cgi?id=1602&action=edit cycle detector program When looking at cycles (see issue 16211), a case appeared to only cause cycles on Windows, but in actuality was a cycle on all platforms. The root cause of the cycle not being detected is that the dependencies stored by dmd and/or detected by druntime did not include all the true dependencies. In druntime, I have added a special debug version that prints out all dependencies as they are encountered (see druntime src/rt/minfo.d, printModuleDependencies). I wrote a simple cycle detector that accepts the output from this to determine with brute force whether any cycles are present, without dealing with determining constructor order (attached). It did not see any cycles in the output from OSX. The cause of this is that std.internal.math.biguintcore only had one dependency, core.cpuid. However, it actually has several dependencies (one that caused the cycle on Windows). For some reason, either dmd is not putting the dependency into the module info, or druntime is not reading it. I'm not sure how to reduce this, but I'll see if I can find some time to figure this out. Note sure of the guilty party, so I picked dmd. Could also be druntime. --
Jul 06 2016