Repository navigation
♻️ Require LLVM/MLIR for all source builds - #2732
Merged
Merged
Conversation
Remove the no-MLIR build variant and reuse LLVM for semantic case-ID hashing and unreachable paths. Keep the existing throwing APIs and exception settings. Discover LLVM for installed Development consumers while keeping Runtime lookup SDK-free. Hide statically linked LLVM implementation symbols in the native shared libraries without changing Core's public exports. Assisted-by: Codex
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Use Process::GetEnv directly and treat empty variables as present, so invalid empty configuration is diagnosed instead of silently ignored. Use scope_exit for Qiskit instruction cleanup and DD output precision, including early returns. Borrow private vector callbacks with function_ref. Assisted-by: Codex
This was referenced Oct 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 AI text below 🤖
Description
Require LLVM/MLIR for every MQT Core source build, including embedded builds. Remove the no-MLIR option, presets, and CI row, and use LLVM's SHA256 and unreachable facilities in place of the private implementations. Benchmark case IDs retain their exact bytes. Reuse LLVM environment lookup, scope guards, and a borrowed callback for private DD vector traversal. Scope guards also restore DD printing precision on early returns. This extracts the dependency change from #2545 without changing its error-handling APIs or exception/RTTI policy.
Installed Development consumers discover a matching LLVM SDK and inherit its headers and libraries. Runtime-only consumers still need no SDK, including when Development artifacts are present in the same installation. Optional Development lookup remains optional. Statically linked LLVM symbols stay private to the native shared libraries.
Migration: Remove
BUILD_MQT_CORE_MLIR=OFFand use the regulardebugorreleasepresets. All source builds require LLVM/MLIR 23.1 or newer; Development consumers need the LLVM major/minor version used to build Core. Replace calls to the removedqdmi::unreachable()helper withllvm_unreachable("reason")and includellvm/Support/ErrorHandling.hdirectly. Empty QDMI environment variables now count as set; unset them to enable fallback discovery. An empty JSON configuration is diagnosed. Python APIs are unchanged.Validation on Linux ARM64:
add_subdirectoryembedding passed.A focused review also checked callback lifetimes, cleanup, and environment handling. Windows/macOS execution and hosted CI remain pending.
AI assistance: Codex implemented and reviewed this change under explicit authorization.
Checklist
If PR contains AI-assisted content:
🤖 *AI text below* 🤖(titles are exempt).