-
-
Notifications
You must be signed in to change notification settings - Fork 418
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
Add support for LLVM 4 #1592
Comments
We haven't added LLVM 4.0 support yet. Unfortunately I'm unable to find the changelog for that version so I don't know what kind of changes would be required. Has anyone been able to find it? |
Thanks for the link. Apparently the changes to the DI API aren't described yet. I think we'll have to wait until there is enough information in the changelog to work on adding the support of that version. |
The current dev version llvm-5.0.0svn requires the same minor changes. In my other projects clang-4.0 is about 20% faster at run-time, and with zapcc (based on that) compile-times are drastically faster. (like 5x). I fixed the llvm 4.0 and 5.0 compilation issues, but 2 got test regressions: CodegenTest.JitRun, CodegenTest.CCallback. |
WIP: [ FAILED ] CodegenTest.JitRun [ FAILED ] CodegenTest.CCallback Closes ponylang#1592
WIP: [ FAILED ] CodegenTest.JitRun [ FAILED ] CodegenTest.CCallback Closes ponylang#1592 ABIBreakingChecks policy: Disable ABI checks, as LLVM_ENABLE_ABI_BREAKING_CHECKS is undefined.
WIP: [ FAILED ] CodegenTest.JitRun [ FAILED ] CodegenTest.CCallback Closes ponylang#1592 ABIBreakingChecks policy: Disable ABI checks, as LLVM_ENABLE_ABI_BREAKING_CHECKS is undefined.
WIP: [ FAILED ] CodegenTest.JitRun [ FAILED ] CodegenTest.CCallback Closes ponylang#1592 ABIBreakingChecks policy: Disable ABI checks, as LLVM_ENABLE_ABI_BREAKING_CHECKS is undefined.
@rurban it builds with your patch. However, there's a segfault in the test block:
|
Yes, that's why it's still WIP |
When you're ready, @rurban, I can help you get the CI bits going for LLVM 4. (Travis changes will look something like my partial master...killerswan:llvm4-ci branch.) |
Any progress here? |
WIP: [ FAILED ] CodegenTest.JitRun [ FAILED ] CodegenTest.CCallback Closes ponylang#1592 ABIBreakingChecks policy: Disable ABI checks, as LLVM_ENABLE_ABI_BREAKING_CHECKS is undefined.
nope, busy with other stuff |
I've renamed the ticket because this is a new feature, more or less, not a bug. |
LLVM changed the way of doing TBAA a while back, and have finally deprecated the old way: http://llvm.org/viewvc/llvm-project?view=revision&revision=286291 This will require some changes in code generation. |
@kulibali I believe that the LLVM internals can automatically update metadatas in the old TBAA format to the new one. Of course, it doesn't magically add the more precise information that the new format supports, but at least it shouldn't be required to update that part to get Pony running on LLVM 4. I think it would be better as a separate change later. Have you made any progress on the Windows crashes? |
The JIT tests are failing because they validate the LLVM code, which fails because the TBAA format is old. |
I have been working very slowly on the TBAA changes -- you can see in my branch https://github.com/kulibali/ponyc/tree/llvm400 |
This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0. - Builds in Release mode on Windows to conform to the Unix makefile. - Some efficiency tweaks for the Windows build.
This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0. - Builds in Release mode on Windows to conform to the Unix makefile. - Some efficiency tweaks for the Windows build.
This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0. - Builds in Release mode on Windows to conform to the Unix makefile. - Some efficiency tweaks for the Windows build.
This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0. - Builds in Release mode on Windows to conform to the Unix makefile. - Some efficiency tweaks for the Windows build.
LLVM 5 is now out. I'm not sure if that adds any new challenges for ponyc but that may need to be factored into this issue. |
I have a branch that compiles with 5.0.0 (https://github.com/kulibali/ponyc/tree/llvm500). It works on Windows; unfortunately it has the same problem on Linux as 4.0.1; certain generated code segfaults if the |
This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0. - Builds in Release mode on Windows to conform to the Unix makefile. - Some efficiency tweaks for the Windows build.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
… and 5.0.0. This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up.
This change includes the following: - Compiler code updates for changes to the LLVM 4.0.0 and 5.0.0 API. - Updates to Type-Based Alias Analysis metadata format for LLVM 4.0.0 and up. Note that this code contains a workaround for a problem with hoisting loads of stack-allocated references (see ponylang#2303, ponylang#2061, ponylang#1592), and should be considered experimental. Do not use LLVM 4 or 5 for critical production builds.
Closing in favor of #2371. |
In anticipation of the imminent LLVM 4.0.0 release, I'm testing whether each of the reverse dependencies of LLVM in Homebrew core are able to build. Unfortunately, the ponyc build (28397da) fails with
Full build log: https://gist.github.com/ilovezfs/166d8b2494a5ea1dbf73d66cc08114cf
The text was updated successfully, but these errors were encountered: