Skip to content

appveyor: build Win32 dmd executable with LDC#8158

Merged
WalterBright merged 3 commits intodlang:masterfrom
rainers:build_with_ldc2
Apr 14, 2018
Merged

appveyor: build Win32 dmd executable with LDC#8158
WalterBright merged 3 commits intodlang:masterfrom
rainers:build_with_ldc2

Conversation

@rainers
Copy link
Member

@rainers rainers commented Apr 10, 2018

Unfortunately #7339 wasn't good enough for Win32.

@dlang-bot
Copy link
Contributor

Thanks for your pull request, @rainers!

Bugzilla references

Your PR doesn't reference any Bugzilla issue.

If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog.

Testing this PR locally

If you don't have a local development environment setup, you can use Digger to test this PR:

dub fetch digger
dub run digger -- build "master + dmd#8158"

@rainers rainers force-pushed the build_with_ldc2 branch 2 times, most recently from bead2e4 to 413e3c2 Compare April 10, 2018 07:09
@WalterBright
Copy link
Member

longdouble.c should be rewritten in betterC

@rainers rainers force-pushed the build_with_ldc2 branch 2 times, most recently from e7c76cd to 90156b5 Compare April 11, 2018 06:22
@rainers
Copy link
Member Author

rainers commented Apr 11, 2018

There is one failing test:

Test fail_compilation\ice1358.d failed.  The logged output:
..\generated\Windows\Release\Win32\dmd.exe -conf= -m32mscoff -Ifail_compilation -verrors=0   -L/OPT:NOICF  -odtest_m32mscoff\fail_compilation -oftest_m32mscoff\fail_compilation\ice1358_0.obj  -c fail_compilation\ice1358.d  -map nul.map
fail_compilation\ice1358.d(29): Error: invalid UTF character \U00d30762
==============================
Test fail_compilation\ice1358.d failed: 
expected:
----
fail_compilation\ice1358.d(29): Error: invalid UTF character \U80000000
----
actual:
----
fail_compilation\ice1358.d(29): Error: invalid UTF character \U00d30762

It is caused by a wrong value being passed through Lexer.error to .verror. Seems to be an issue with va_args. @kinke I suspect you have seen this with LDC before?

@kinke
Copy link
Contributor

kinke commented Apr 11, 2018

Hmm nope. That test passes for LDC (CI-compiled using 64-bit LDC v1.6) on both Win32 and Win64 and I don't recall seeing it fail.

@rainers
Copy link
Member Author

rainers commented Apr 11, 2018

@kinke Just wait until you update to latest dmd sources (before the latest commit in this PR): the problem is that passing variadic arguments through an interface function doesn't work with LDC because the interface thunk calls the class member function instead of just jumping to it avoiding a copy of the arguments on the stack.

@kinke
Copy link
Contributor

kinke commented Apr 11, 2018

Oh I just fixed that for LDC: ldc-developers/ldc#2630

[We'll probably have a 1.9-beta1 next week, and a final in ~3.]

@rainers
Copy link
Member Author

rainers commented Apr 11, 2018

Wow, what a coincidence ;-)

If not using multiple interfaces an abstract base class is slightly more efficient because it doesn't need any thunks to begin with. So maybe the PR is acceptable with the workaround.

@rainers
Copy link
Member Author

rainers commented Apr 13, 2018

longdouble.c should be rewritten in betterC

I've done that locally on top of the changes in this PR, but it involves quite some changes so I think it should be better made in a separate PR.

@WalterBright
Copy link
Member

but it involves quite some changes so I think it should be better made in a separate PR.

Ehhhkselllehnt!

@WalterBright WalterBright merged commit 7336889 into dlang:master Apr 14, 2018
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.

4 participants