Closed elliottslaughter closed 9 months ago
I'm pretty sure classifyfloatstructs.t
(the remaining failing test) is failing due to the lack of the manual inliner.
Edit: Actually, no. We use the alwaysinline
attribute on functions with :setinlined(true)
, so it should be inlining. Somehow LLVM is just generating uncompact assembly.
Edit 2: Looks like we're failing to run the SLP vectorizer (or any vectorizer?) because it's not part of the pipeline built by buildFunctionSimplificationPipeline
. Looks like LLVM's new pass manager really does want to do everything at module level. Yuck.
I'm tracking the vectorization issue as https://github.com/llvm/llvm-project/issues/67076
I'm disabling constantinits.t
for LLVM 17 Linux. Tracking as #644.
This rolls up the changes in #641 and then adds more on top to adapt to the removal of the legacy pass manager in LLVM 17. Overall, this seems to be working dramatically better than LLVM 15-16, so I have updated the opaque pointer version bounds to be LLVM 17-only.
Running the test suite locally (macOS x86) produces one test failure:
For once I'm actually done with this ahead of the LLVM 17 final release (above results were with rc4), so I can't merge this until the final release gets cut. But things are looking good overall.
Known issues:
compile_time_array.t
andcompile_time_array2.t
forcing those tests to be shut off in LLVM 17. A similar (but less severe) issue is present inbug372_perf.t
, but it's minor enough I left that one in. Possibly a result of the new pass manager.constantinits.t
fails on Linux: #644.