[mlir] generate enum translation functions with unused attribute
authorAlex Zinenko <zinenko@google.com>
Wed, 17 Feb 2021 18:36:49 +0000 (19:36 +0100)
committerAlex Zinenko <zinenko@google.com>
Thu, 18 Feb 2021 08:44:40 +0000 (09:44 +0100)
The functions translating enums to LLVM IR are generated in a single
file included in many places, not all of which use all translations.
Generate functions with "unused" attribute to silence compiler warnings.

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D96880

mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
mlir/tools/mlir-tblgen/LLVMIRConversionGen.cpp

index 5fbb291..baf7107 100644 (file)
@@ -26,11 +26,6 @@ using namespace mlir;
 using namespace mlir::LLVM;
 using mlir::LLVM::detail::getLLVMConstant;
 
-// The include below has a static function unused in this translation unit,
-// declare it as such to silence a warning.
-static LLVM_ATTRIBUTE_UNUSED ::llvm::GlobalValue::LinkageTypes
-convertLinkageToLLVM(::mlir::LLVM::Linkage value);
-
 #include "mlir/Dialect/LLVMIR/LLVMConversionEnumsToLLVM.inc"
 
 /// Convert MLIR integer comparison predicate to LLVM IR comparison predicate.
index 73dc16c..d52cc78 100644 (file)
@@ -46,11 +46,6 @@ using namespace mlir;
 using namespace mlir::LLVM;
 using namespace mlir::LLVM::detail;
 
-// The include below has a static function unused in this translation unit,
-// declare it as such to silence a warning.
-static LLVM_ATTRIBUTE_UNUSED ::llvm::InlineAsm::AsmDialect
-convertAsmDialectToLLVM(::mlir::LLVM::AsmDialect value);
-
 #include "mlir/Dialect/LLVMIR/LLVMConversionEnumsToLLVM.inc"
 
 /// Builds a constant of a sequential LLVM type `type`, potentially containing
index 42b053a..06c2330 100644 (file)
@@ -222,8 +222,9 @@ static void emitOneEnumToConversion(const llvm::Record *record,
   StringRef cppNamespace = enumAttr.getCppNamespace();
 
   // Emit the function converting the enum attribute to its LLVM counterpart.
-  os << formatv("static {0} convert{1}ToLLVM({2}::{1} value) {{\n", llvmClass,
-                cppClassName, cppNamespace);
+  os << formatv(
+      "static LLVM_ATTRIBUTE_UNUSED {0} convert{1}ToLLVM({2}::{1} value) {{\n",
+      llvmClass, cppClassName, cppNamespace);
   os << "  switch (value) {\n";
 
   for (const auto &enumerant : enumAttr.getAllCases()) {
@@ -251,7 +252,8 @@ static void emitOneEnumFromConversion(const llvm::Record *record,
   StringRef cppNamespace = enumAttr.getCppNamespace();
 
   // Emit the function converting the enum attribute from its LLVM counterpart.
-  os << formatv("inline {0}::{1} convert{1}FromLLVM({2} value) {{\n",
+  os << formatv("inline LLVM_ATTRIBUTE_UNUSED {0}::{1} convert{1}FromLLVM({2} "
+                "value) {{\n",
                 cppNamespace, cppClassName, llvmClass);
   os << "  switch (value) {\n";