Skip to content
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

DMD 2.063.1 merge #398

Merged
merged 59 commits into from
Jun 17, 2013
Merged

DMD 2.063.1 merge #398

merged 59 commits into from
Jun 17, 2013

Conversation

dnadlinger
Copy link
Member

Just here for tracking.

Allows us to get through a Phobos build without errors.
We should think about using symbolic constants for runtime function
names though, this is not maintainable in the long run.
Fixes DMD testcase 'testbounds2'.
Fixes DMD testcase 'aliasthis'.
Fixed DMD testcase 'nulltype'.
The frontend seems to explicitly insert __cpctor now.

Fixes DMD testcase 'sdtor'.
The new arguments to the call in DtoLinkage do not exactly
match what was there before, but have been harmonized with
the other canInline call.
Apart from reducing the diff to upstream DMD, this also fixes a
"cannot interpret" CTFE issue.
This is necessary to enable aliasing compiler-generated
symbols with pragma(mangle, …).

Note that globals for internal use are still directly
created.
This way, we stay at least compatible w.r.t. demanglers,
pragma(mangle, …) tricks.

Fixes DMD testcase 'mangle'.
The AST the frontend generates is arguably invalid, but we
have to deal with that.

Fixes DMD testcase 'interpret'.
Having something like this would be useful in determining
whether to define a given template symbol during codegen, but
the frontend sometimes produces TemplateInstances in a scope
where sc->tinst has not been semantic'd, thus breaking the
chaining mechanism.
This avoids problems where we would codegen children of an
"inner" template instantiation (i.e. a member of a non-template
aggregate in another module) because we have no way to know the
outer (declare-only) entity exists in the respective
mustDefineSymbol invocation.

An example for this are the std.typecons.RefCounted internals of
std.file.DirIterator, as used from std.datetime and other modules.
This is not only inefficient, but also causes linking issues due
to attribute inference for these functions not having run yet
(and consequently the mangled name being different from the
actual definition).
This does not fix the root cause, which is likely a frontend
bug/oddity, but avoids the crash.
Fixes DMD testcase 'testrightthis'.
The design split between IrFuncTy/IrTypeFunction might need
a review at some point.
@dnadlinger
Copy link
Member Author

@redstar: The Linux x86/x86_64 build seems solid, and from a quick look it seems like there aren't any new issues on OS X and Windows, apart from maybe a fiber switching race condition on MinGW (don't know if that was there before, though).

Should we merge this to avoid more conflicts?

@redstar
Copy link
Member

redstar commented Jun 17, 2013

Yes, we should. It's the only way to attract more tester/user.

dnadlinger added a commit that referenced this pull request Jun 17, 2013
@dnadlinger dnadlinger merged commit 31d85d0 into master Jun 17, 2013
@dnadlinger dnadlinger deleted the merge-2.063 branch June 17, 2013 21:04
@dnadlinger
Copy link
Member Author

Well, there we go.

@redstar
Copy link
Member

redstar commented Jun 18, 2013

Two comments:

  • On Windows 64: ld_readll and ld_readull are defined in longdouble.c and lfpu.asm. Which is the right one?
  • druntime and phobos are not merged yet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants