New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Assertion failed: "Initializer for composite element doesn't match!" #1741
Comments
vibe version: vibe-d-0.7.29 |
dustmiting... |
File a.d import task;
Task runTask; File task.d class Super
{
this(void delegate())
{
}
}
struct Task
{
shared(Child) m_fiber;
}
class Child : Super
{
this(void delegate() fun)
{
super(fun);
}
@property task()
{
return Task();
}
}
The order of the files on the cmdline is important! |
Is this a 3.8/3.9 mismatch issue or just down to LLVM assertions being enabled or not? |
Hmm, I initially found this using the 1.1.0 binary package built with LLVM3.8 and 3.9. Apparently one has assertions on, the other doesn't. Doh. So, indeed, LLVM 3.8 also fails. |
This is something we need to figure out for the release. In particular, shipping binaries with assertions enabled would be quite the performance regression. @redstar |
This could be because I built the LLVM3.9 package using the SVN branch (instead of downloading the source tarball), which still has asserts enabled by default. |
This looks nearly identical to #1237 (comment):
|
Note that Johan's reduced testcase can be happily compiled on Win64 (I've checked both file orders). I can reproduce the issue on Linux x64 though. |
I guess this has something to do with the |
As suspected, the problem is a forward-referencing issue - for the vtable entries, we ask the Relevant excerpt from the
|
With #1891, the above excerpt is shortened to:
|
This fixes the forward-referencing issue ldc-developers#1741.
This fixes the forward-referencing issue ldc-developers#1741.
Fixed by #1891. |
Steps to reproduce:
dub init -t vibe.d test
dub build -b debug --combined --compiler=ldc2
Fails
for LDC built with LLVM 3.9.0 and LLVM 4.0 (trunk),with the LLVM assert:Works fine with LLVM 3.8.I haven't had time to narrow this down to something workable, but thought it needed reporting.
The text was updated successfully, but these errors were encountered: