[flang] [clang] [Flang] Add code-object-version option (PR #72638)

Andrzej WarzyƄski via cfe-commits cfe-commits at lists.llvm.org
Sun Nov 19 05:27:50 PST 2023


================
@@ -264,6 +263,37 @@ static void addDepdendentLibs(mlir::ModuleOp &mlirModule,
   }
 }
 
+// Add to MLIR code target specific items which are dependent on target
+// configuration specified by the user
+static void addTargetSpecificMLIRItems(mlir::ModuleOp &mlirModule,
+                                       CompilerInstance &ci) {
+  const TargetOptions &targetOpts = ci.getInvocation().getTargetOpts();
+  const llvm::Triple triple(targetOpts.triple);
+  if (triple.isAMDGPU()) {
+    unsigned oclcABIVERsion;
+    const unsigned defaultOclcABIVERsion = 400;
+    mlir::OpBuilder builder(mlirModule.getContext());
+    const CodeGenOptions &codeGenOpts = ci.getInvocation().getCodeGenOpts();
+    if (codeGenOpts.CodeObjectVersion ==
+        CodeGenOptions::CodeObjectVersionKind::COV_None)
+      oclcABIVERsion = defaultOclcABIVERsion;
+    else
+      oclcABIVERsion = static_cast<unsigned>(codeGenOpts.CodeObjectVersion);
+
+    auto int32Type = builder.getI32Type();
+    auto covInfo = builder.create<mlir::LLVM::GlobalOp>(
+        mlirModule.getLoc(), int32Type, true, mlir::LLVM::Linkage::WeakODR,
+        "__oclc_ABI_version",
+        builder.getIntegerAttr(int32Type, oclcABIVERsion));
+    covInfo.setUnnamedAddr(mlir::LLVM::UnnamedAddr::Local);
+    covInfo.setAddrSpace(4);
+    covInfo.setVisibility_(mlir::LLVM::Visibility::Hidden);
+    builder.setInsertionPointToStart(mlirModule.getBody());
+    builder.insert(covInfo);
+  }
+  addDependentLibs(mlirModule, ci);
----------------
banach-space wrote:

My terminology might be off, but:
* most of this function adds some specific to a particular hardware _target_ (i.e. AMDGPU),
* `addDependentLibs` is something linked to specific to a particular _platform_ (i.e. MSVC/Windows).

My suggestion:
* keep `addDependentLibs` as an independent hook,
* rename `addTargetSpecificMLIRItems` as `addAMDGPUSpecificMLIRItems` (we can rename this later if people want to add support for other targets).

@jsjodin - is that consistent with what you had in mind?

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


More information about the cfe-commits mailing list