-
-
Notifications
You must be signed in to change notification settings - Fork 267
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
Enable MSVC EH for Win64 #1354
Enable MSVC EH for Win64 #1354
Conversation
4a68f45
to
ae0f049
Compare
What AppVeyor doesn't show is that dmd-testsuite (debug+release) finally passes, for both 32bit and 64bit MSVC targets! I.e. for the very first time for LDC (on Windows in general) in case you're wondering. |
Nice! |
I second that 👍 Just noticed the Add You Reaction drop down. This deserves the party hat. |
To recap: the only (very minor) issues leading to test failures on Windows after this are:
|
Very well done! @kinke I think you deserve the honor to push the merge button. :-) |
…mpletely the same as C++
… as "noreturn" by the optimizer - do not inline functions into the cleanup funclets, it can break exception handling - even if no var given, retrieve the caught exception to pass it to _d_eh_enter_catch
9c6f491
to
ca1241f
Compare
Newest LLVM takes care of this for us.
d67dd7d
to
7ae0223
Compare
dmd-testsuite is now enabled too for the AppVeyor jobs (it doesn't take that much longer). There are some minor path-related issues I don't have on my local system, probably due to a different set of GNU utils (I assume), e.g.:
Otherwise, there are only issues wrt. Dan's new
The x86 job uncovers mangling issues:
|
The mangling error I think is a flaw in ldc_cabi2.cpp. Those vars should be extern "C". |
That's right, I'll fix them, thanks for the hint. Edit: Why hasn't this hit us before then? Let's see how Travis reacts... |
But ignore failures for now.
dmd-testsuite passes again on Win64, both on my box and for the AppVeyor x64 Debug job. |
The Win32 |
3c7f55a
to
65c868a
Compare
As for regular args due to LDC issue ldc-developers#1356. This fixes runnable/ldc_cabi1 and so dmd-testsuite passes again.
Alright, now all tests are enabled for AppVeyor, but lit test failures are ignored for x86 jobs because of The debug jobs are green. The release ones fail (and are allowed to fail)
This really elevates Windows MSVC to a first class target for LDC. As I mentioned earlier, it depends on a post-3.8 LLVM. @rainers even included a TLS alignment bugfix for Windows < 8.1. The recent addition of alignment attributes for IR arguments has uncovered quite a few alignment issues due to the optimizer apparently making good use of that information, so that's a good sign too. |
This is awesome! |
- dmd2\windows\bin\dmd.exe --version | ||
# Download & extract GNU make + utils (for dmd-testsuite) | ||
- bash --version | ||
- ps: Start-FileDownload 'https://dl.dropboxusercontent.com/s/d0cqmxf9arbjn27/make-3.81.7z?dl=0' -FileName 'make.7z' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey, just wanted to ask, what's the original source of this file?
(Working on a test
command for Digger...)
Figured it out, GnuWin32
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, but it contains some additional utils. See http://wiki.dlang.org/Building_and_hacking_LDC_on_Windows_using_MSVC#Running_the_dmd-testsuite_tests.
Enable @rainers #1168 for Win64 too and add x86 AppVeyor jobs.
Requires ldc-developers/druntime#65 and a post-3.8 LLVM (Rainer's work has uncovered a few LLVM bugs whose near-instant fixes didn't make it into 3.8 final).