-
Notifications
You must be signed in to change notification settings - Fork 61
Compatibility with latest release of LLVM #4
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
base: master
Are you sure you want to change the base?
Conversation
llvm-ld is gone, use llvm-link instead The -emit-llvm option is gone, use -flto instead to emit IR source, then pipe to llvm-as to generate IR bitcode files.
Fix SEGV on function calls. (Not sure result is correct.)
Ugly hacks for RegisterPass compatibility
Unwind is obsolete
Stupid hacks to silence compile errors in debug output
Ugly hack to hide compile error. This needs revisiting.
Fix SEGV in pass initialization
Fix getCaseValue API change
Fix for deleted and changed APIs
TODO: check if VectorTy and StructTy need corresponding change.
again, order of arguments
CFGSimplificationPass reinserts switch statements, which are still broken, so move it to before LowerSwitch
Ignore unsupported memory use marker intrinsics Fix args for indirect function calls
|
Thanks for working on getting LLJVM compatible with a more recent release of LLVM. I haven't worked with LLJVM or LLVM in quite a while, so I can't comment on your patches in any great detail at the moment. If you have any general questions about LLJVM, or any particular problems in getting it working with your changes, send me an email and I'll do my best to help. |
|
Currently the most obvious problem is the python driver script; the linker is a lot stupider now and options that used to work for llvm-ld are no longer available. To be honest I've completely lost any hope of pushing this forward any further; LLVM itself is just too aggravating to work with. |
|
Yeah, that script was rather hacky to begin with so I'm not surprised it's broken. A better solution would probably have to integrate with clang more closely, however that would work. My interest in LLJVM was in getting it to the proof-of-concept stage - currently I have no real practical use for it myself, but I'm glad other people have found uses - so there's a lot of work that still needs to be done for it to be able to handle serious projects (or even keeping up with the ever-changing state of LLVM apparently). Thanks again for sharing what you've done so far - I'll leave this issue open in case anyone feels like taking it further. |
|
For what it's worth, the current state of the code is good enough to get some of the bsdgames working and such. It seems to choke on some of the larger test programs though. Also I had to manually compile a lot of the demo programs, because I didn't have the driver script in good enough shape for the Makefiles to "just work"... |
|
Thanks. I've pushed your changes to https://github.com/davidar/lljvm/tree/llvm-3.3 in case anyone wants to deal with the remaining problems at some point. |
These are changes I needed to get things to compile for llvm 3.3. I have no confidence that these changes are correct, I'm still trying to get thru the build of libc and then the test suite. Any review/help/suggestions appreciated.