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

LLVM-related refactoring #627

Merged
merged 4 commits into from
Mar 10, 2016
Merged

Conversation

lgritz
Copy link
Collaborator

@lgritz lgritz commented Mar 10, 2016

I'm in the middle of a concerted effort to bring us into a more modern era of LLVM versions. This set of patches is not a complete solution, but contains several intermediate steps in that direction.

  • Remove all support for LLVM 3.3 and earlier. This gets rid of lots of confusing #if clauses and simplifies the structure of the code. Henceforth, LLVM 3.4 will be the minimal version we support for OSL 1.8.
  • A number of changes that allow us to build cleanly against LLVM 3.6. Although it correctly runs the llvmutil_test unit test, it fails all the testsuite tests involving OSL itself (against LLVM 3.6). But at least it compiles.
  • Remove runtime selection of MCJIT for LLVM versions that support both MCJIT and old JIT. This simplifies the logic in some places, by cleanly dividing LLVM 3.4/3.5 + old JIT, versus LLVM 3.6+ with MCJIT and no old JIT.

What this nets us is a simplification of code that will make the next steps easier. As of now (in master), we fully support and work properly with LLVM 3.4 and 3.5, and the next task will be to get some later version (maybe 3.6, or we may skip all the way to 3.7+ORC JIT, we'll see) fully working.

This whole discussion is about OSL master (what will some day be 1.8). The production release (OSL 1.7) will continue to work with LLVM 3.2 and 3.3 (though please note that I have not personally tested with either for quite some time, though I also have not purposely changed anything that would cause them to break).

At this commit, using LLVM 3.4 & 3.5 still work and pass all tests.
Using LLVM 3.6 builds and correctly runs llvmutil_test, but fails
most/all testshade tests.
With this checkin, llvm 3.4 and 3.5 are fully supported and work.
LLVM 3.6 builds, runs llvmuntil_test, but crashes running actual shaders.
LLVM 3.7 doesn't build.
…old JIT,

LLVM >= 3.6 -> MCJIT.

This builds and runs properly for LLVM 3.4 and 3.5. It builds against 3.6
but fails the OSL testsuite.
@fpsunflower
Copy link
Contributor

LGTM

lgritz added a commit that referenced this pull request Mar 10, 2016
LLVM-related refactoring: remove support for <= 3.3, work toward clean build of 3.6
@lgritz lgritz merged commit 6670bba into AcademySoftwareFoundation:master Mar 10, 2016
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