[Mlir-commits] [mlir] 8406f80 - [mlir][cmake] Enable -Wundef. (#84011)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Mar 6 05:15:21 PST 2024
Author: Ingo Müller
Date: 2024-03-06T14:15:17+01:00
New Revision: 8406f8023dc08a1697acd2375e120670c0233a8a
URL: https://github.com/llvm/llvm-project/commit/8406f8023dc08a1697acd2375e120670c0233a8a
DIFF: https://github.com/llvm/llvm-project/commit/8406f8023dc08a1697acd2375e120670c0233a8a.diff
LOG: [mlir][cmake] Enable -Wundef. (#84011)
This is another follow-up of #83004, which fixed a bug due to some
macros not being defined in some situations. By raising warnings on
undefined macros, this kind of bug is less likely to be introduced.
Similar to #83004, the fix is probably adding an include to
`mlir-config.h` (and potentially defining the macro there).
Added:
Modified:
mlir/CMakeLists.txt
mlir/include/mlir/Config/mlir-config.h.cmake
Removed:
################################################################################
diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt
index e37cb465b9196f..5c4301af040b47 100644
--- a/mlir/CMakeLists.txt
+++ b/mlir/CMakeLists.txt
@@ -70,6 +70,12 @@ endif()
check_c_compiler_flag("-Werror=implicit-function-declaration" C_SUPPORTS_WERROR_IMPLICIT_FUNCTION_DECLARATION)
append_if(C_SUPPORTS_WERROR_IMPLICIT_FUNCTION_DECLARATION "-Werror=implicit-function-declaration" CMAKE_C_FLAGS)
+# Warn on undefined macros. This is often an indication that an include to
+# `mlir-config.h` or similar is missing.
+check_c_compiler_flag("-Wundef" C_SUPPORTS_WUNDEF)
+append_if(C_SUPPORTS_WUNDEF "-Wundef" CMAKE_C_FLAGS)
+append_if(C_SUPPORTS_WUNDEF "-Wundef" CMAKE_CXX_FLAGS)
+
# Forbid mismatch between declaration and definition for class vs struct. This is
# harmless on Unix systems, but it'll be a ticking bomb for MSVC/Windows systems
# where it creeps into the ABI.
diff --git a/mlir/include/mlir/Config/mlir-config.h.cmake b/mlir/include/mlir/Config/mlir-config.h.cmake
index 25483467eea2e6..9339ce07bdfd1f 100644
--- a/mlir/include/mlir/Config/mlir-config.h.cmake
+++ b/mlir/include/mlir/Config/mlir-config.h.cmake
@@ -8,6 +8,13 @@
/* This file enumerates variables from the MLIR configuration so that they
can be in exported headers and won't override package specific directives.
+ Defining the variables here is preferable over specifying them in CMake files
+ via `target_compile_definitions` because it is easier to ensure that they are
+ defined consistently across all targets: They are guaranteed to be 0/1
+ variables thanks to #cmakedefine01, so we can test with `#if` and find
+ missing definitions or includes with `-Wundef`. With `#ifdef`, these mistakes
+ can go unnoticed.
+
This is a C header that can be included in the mlir-c headers. */
#ifndef MLIR_CONFIG_H
More information about the Mlir-commits
mailing list