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.
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.
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).