diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt index 6be0b35338c05..28018350cb43d 100644 --- a/mlir/CMakeLists.txt +++ b/mlir/CMakeLists.txt @@ -48,6 +48,13 @@ 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) +# 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. +check_c_compiler_flag("-Werror=mismatched-tags" C_SUPPORTS_WERROR_MISMATCHED_TAGS) +append_if(C_SUPPORTS_WERROR_MISMATCHED_TAGS "-Werror=mismatched-tags" CMAKE_C_FLAGS) +append_if(C_SUPPORTS_WERROR_MISMATCHED_TAGS "-Werror=mismatched-tags" CMAKE_CXX_FLAGS) + # Installing the headers and docs needs to depend on generating any public # tablegen'd targets. # mlir-generic-headers are dialect-independent.