Conversation
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## master #1664 +/- ##
==========================================
- Coverage 70.20% 70.18% -0.02%
==========================================
Files 161 162 +1
Lines 19366 19397 +31
Branches 4626 4632 +6
==========================================
+ Hits 13596 13614 +18
- Misses 3730 3743 +13
Partials 2040 2040
|
|
@MartinNowack great to see this! I hope we'll see it ready soon! |
be68584 to
bf0ac0a
Compare
|
I see (both with llvm 15 and 16 but not with llvm 14 -- even when the patches are applied): |
ccadar
left a comment
There was a problem hiding this comment.
Thanks, @MartinNowack.
Let's merge this as soon as #1380 , #1674 and #1663 are resolved.
|
@MartinNowack I think this one is next! Do you want to rebase it to double-check that the FreeBSD checks pass, after the latest update? If you do, I spotted two tiny issues: "pointerws" is misspelled in commit message of 561fff8 and LLVM 17 seems to have been introduced prematurely in 5b13c51. |
danielschemmel
left a comment
There was a problem hiding this comment.
Thank you very much for all your hard work on this, @MartinNowack!
I have a few comments, most of which are just stylistic (uint64_t is actually called std::uint64_t and for most of the codebase we have an empty line between the includes and the rest of the code), but also one comment about the cmake changes that looks somewhat important.
I hope you can either just one-click apply or ignore the many small suggestions ;).
scripts/build/p-libcxx.inc
Outdated
| make runtimes - j"$(nproc)" || make cxx || return 1 | ||
| else | ||
| make cxx - j"$(nproc)" || make cxx || return 1 |
There was a problem hiding this comment.
This looks like the original intent was to run a parallel make followed by a serial make of the same target. This change introduces two problems:
- There is a blank between the
-and thejthat should not be there - it should probably also run
make runtimesin the fallback position of the then-case
`-DLLVM_ENABLE_PROJECTS` does not include runtimes anymore, instead a `-DLLVM_ENABLE_RUNTIMES` should be used in addition
`libc++` include headers are now split between platform dependent and platform independent code. Before, only include files for the platform independent code were considered. Add support to automatically find platform dependent includes as well. Simplify the detection of libraries and paths. Instead of pointing to the `v1` directory, pointing to the include directory for `-DKLEE_LIBCXX_INCLUDE_PATH` is enough. Update build script to support this as well.
…irectories To support multiple include directories for c++ header files, use `%libcxx_includes`. This string contains the `-I` compiler directive for each include path as well. Update test cases to use new directive.
Newer compilers use `-std=gnu17` as the default when compiling C code. Fix all the test cases that violate this behaviour or explicitly request older standards `-std=c89` where necessary.
Currently, we assume C++11 support being used to by the tested software. This needs to change if newer C++ standards should be supported.
This automatically lifts old-style pointers to opaque pointers. More recent versions use opaque pointers automatically and do not need an explicit enabling.
`Intrinsic::flt_rounds` got removed
Handle like `memalign` for now.
Similar functionality needs to be added using a new pass manager
The optimiser generates different code and calls fwrite directly instead.
The wording changed slightly in newer versions. Update the test case to support this.
They are not supported anymore for newer LLVM versions.
Co-authored-by: Daniel Schemmel <[email protected]> (cherry picked from commit 5d9af02)
Co-authored-by: Daniel Schemmel <[email protected]> (cherry picked from commit 5d61fb6)
Co-authored-by: Daniel Schemmel <[email protected]> (cherry picked from commit 1ea1a75)
47219f4 to
5f7d0b2
Compare
|
Thanks @ccadar and @danielschemmel for the review. I addressed most of the comments, I kept the |
|
Thanks again, @MartinNowack , for the hard work of adding support for LLVM 15 & 16! |
|
FWIW, current klee's HEAD -- 9336cd2 -- (still) compiles fine for me with LLVM 16. But I still see #1664 (comment): |
|
Thanks, @jirislaby, I somehow thought that was resolved. Can you please open a new issue with more details? (what platform and configuration you are using, how the tests fail)? |
This PR adds support for LLVM 15 and 16.
There have been a multitude of required changes that are split into separate commits to simplify the whole process.
In a nutshell, we transitioned to support opaque pointers starting with LLVM 15 explicitly.
All the other commits handle additional moving parts in KLEE that had to be fixed.
Summary:
Checklist: