[flang-commits] [flang] [flang] Add a MLIRToLLVMPassPipeline callbacks for plugins (PR #212195)
Tarun Prabhu via flang-commits
flang-commits at lists.llvm.org
Thu Sep 24 05:58:14 PDT 2026
================
@@ -127,4 +128,81 @@ TEST(HLFIRExtensionPoint, MarkersAreAtTheDocumentedPositions) {
EXPECT_LT(lastMarker, lowerIntrinsics) << pipeline;
}
+// The registry is process-global and append-only, so a callback capturing a
+// local by reference would be re-invoked by a later test with the referent
+// destroyed. Tests record into this process-lifetime recorder instead, and each
+// asserts only on the markers it wrote, so they do not depend on test order.
+struct ConfigCallbackRecorder {
+ std::vector<std::string> order;
+ MLIRToLLVMPassPipelineConfig *seenConfig = nullptr;
+ bool epRan = false;
+
+ void reset() {
+ order.clear();
+ seenConfig = nullptr;
+ epRan = false;
+ }
+ /// Index of \p marker in `order`, or npos.
+ size_t indexOf(llvm::StringRef marker) const {
+ for (size_t i = 0, e = order.size(); i != e; ++i)
+ if (order[i] == marker)
+ return i;
+ return std::string::npos;
+ }
+};
+
+ConfigCallbackRecorder &recorder() {
----------------
tarunprabhu wrote:
Is it really necessary to wrap the instance of `ConfigCallbackRecorder` in an accessor? Couldn't this just be a global?
https://github.com/llvm/llvm-project/pull/212195
More information about the flang-commits
mailing list