[Mlir-commits] [mlir] [MLIR][LLVMIR][DLTI] Pass to update #llvm.target's features per relevant backend (PR #154938)

Mehdi Amini llvmlistbot at llvm.org
Sat Aug 23 07:45:40 PDT 2025


================
@@ -0,0 +1,69 @@
+//===- TargetUtils.cpp - utils for obtaining generic target backend info --===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+#include "mlir/Target/LLVMIR/Transforms/Passes.h"
+
+#include "mlir/Dialect/DLTI/DLTI.h"
+#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
+#include "mlir/Target/LLVMIR/Import.h"
+
+#include "llvm/MC/TargetRegistry.h"
+#include "llvm/Support/Debug.h"
+#include "llvm/Support/DebugLog.h"
+#include "llvm/Support/TargetSelect.h"
+#include "llvm/Target/TargetMachine.h"
+
+#define DEBUG_TYPE "mlir-llvm-target-utils"
+
+llvm::once_flag initializeBackendsOnce;
+
+namespace mlir {
+namespace LLVM {
+namespace detail {
+void initializeBackendsOnce() {
+  static llvm::once_flag initializeOnceFlag;
+  llvm::call_once(initializeOnceFlag, []() {
+    // Ensure that the targets, that LLVM has been configured to support,
+    // are loaded into the TargetRegistry.
+    llvm::InitializeAllTargets();
+    llvm::InitializeAllTargetMCs();
+  });
----------------
joker-eph wrote:

```suggestion
  static const auto initOnce = [] {
    // Ensure that the targets, that LLVM has been configured to support,
    // are loaded into the TargetRegistry.
    llvm::InitializeAllTargets();
    llvm::InitializeAllTargetMCs();
    return true;
  } ();
```

FYI: idiomatic since C++11 ;)


https://github.com/llvm/llvm-project/pull/154938


More information about the Mlir-commits mailing list