[Mlir-commits] [mlir] [MLIR][LLVM] Refactor globals insertion point translation (NFC) (PR #127490)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Feb 17 05:34:11 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: Henrich Lauko (xlauko)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/127490.diff
2 Files Affected:
- (modified) mlir/include/mlir/Target/LLVMIR/ModuleImport.h (+4)
- (modified) mlir/lib/Target/LLVMIR/ModuleImport.cpp (+13-15)
``````````diff
diff --git a/mlir/include/mlir/Target/LLVMIR/ModuleImport.h b/mlir/include/mlir/Target/LLVMIR/ModuleImport.h
index 4642d58760ca8..a44d2d3bd6ae5 100644
--- a/mlir/include/mlir/Target/LLVMIR/ModuleImport.h
+++ b/mlir/include/mlir/Target/LLVMIR/ModuleImport.h
@@ -407,6 +407,10 @@ class ModuleImport {
/// always requires a symbol name.
FlatSymbolRefAttr
getOrCreateNamelessSymbolName(llvm::GlobalVariable *globalVar);
+ /// Returns the global insertion point for the next global operation. If an
+ /// operation is set, the insertion point is placed after the specified
+ /// operation. Otherwise, it defaults to the start of the module.
+ OpBuilder::InsertionGuard setGlobalInsertionPoint(Operation *op);
/// Builder pointing at where the next instruction should be generated.
OpBuilder builder;
diff --git a/mlir/lib/Target/LLVMIR/ModuleImport.cpp b/mlir/lib/Target/LLVMIR/ModuleImport.cpp
index fd0283b856b6b..8d053b7bfb814 100644
--- a/mlir/lib/Target/LLVMIR/ModuleImport.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleImport.cpp
@@ -962,13 +962,18 @@ ModuleImport::getOrCreateNamelessSymbolName(llvm::GlobalVariable *globalVar) {
return symbolRef;
}
-LogicalResult ModuleImport::convertAlias(llvm::GlobalAlias *alias) {
- // Insert the global after the last one or at the start of the module.
+OpBuilder::InsertionGuard ModuleImport::setGlobalInsertionPoint(Operation *op) {
OpBuilder::InsertionGuard guard(builder);
- if (!aliasInsertionOp)
- builder.setInsertionPointToStart(mlirModule.getBody());
+ if (op)
+ builder.setInsertionPointAfter(op);
else
- builder.setInsertionPointAfter(aliasInsertionOp);
+ builder.setInsertionPointToStart(mlirModule.getBody());
+ return guard;
+}
+
+LogicalResult ModuleImport::convertAlias(llvm::GlobalAlias *alias) {
+ // Insert the alias after the last one or at the start of the module.
+ OpBuilder::InsertionGuard guard = setGlobalInsertionPoint(aliasInsertionOp);
Type type = convertType(alias->getValueType());
AliasOp aliasOp = builder.create<AliasOp>(
@@ -996,11 +1001,7 @@ LogicalResult ModuleImport::convertAlias(llvm::GlobalAlias *alias) {
LogicalResult ModuleImport::convertGlobal(llvm::GlobalVariable *globalVar) {
// Insert the global after the last one or at the start of the module.
- OpBuilder::InsertionGuard guard(builder);
- if (!globalInsertionOp)
- builder.setInsertionPointToStart(mlirModule.getBody());
- else
- builder.setInsertionPointAfter(globalInsertionOp);
+ OpBuilder::InsertionGuard guard = setGlobalInsertionPoint(globalInsertionOp);
Attribute valueAttr;
if (globalVar->hasInitializer())
@@ -1096,11 +1097,8 @@ ModuleImport::convertGlobalCtorsAndDtors(llvm::GlobalVariable *globalVar) {
priorities.push_back(priority->getValue().getZExtValue());
}
- OpBuilder::InsertionGuard guard(builder);
- if (!globalInsertionOp)
- builder.setInsertionPointToStart(mlirModule.getBody());
- else
- builder.setInsertionPointAfter(globalInsertionOp);
+ // Insert the global after the last one or at the start of the module.
+ OpBuilder::InsertionGuard guard = setGlobalInsertionPoint(globalInsertionOp);
if (globalVar->getName() == getGlobalCtorsVarName()) {
globalInsertionOp = builder.create<LLVM::GlobalCtorsOp>(
``````````
</details>
https://github.com/llvm/llvm-project/pull/127490
More information about the Mlir-commits
mailing list