[Mlir-commits] [mlir] [mlir] Silence warnings on Windows (PR #191557)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Apr 10 15:50:25 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
@llvm/pr-subscribers-mlir-complex
Author: Alexandre Ganea (aganea)
<details>
<summary>Changes</summary>
MSVC STL4037 deprecates `std::complex` with non-floating-point element types.
This fixes:
```
warning: 'complex' is deprecated: warning STL4037: ...
```
---
Full diff: https://github.com/llvm/llvm-project/pull/191557.diff
4 Files Affected:
- (modified) mlir/include/mlir/Dialect/Complex/IR/Complex.h (+5)
- (modified) mlir/include/mlir/IR/BuiltinAttributes.h (+7)
- (modified) mlir/lib/IR/BuiltinAttributes.cpp (+3)
- (modified) mlir/unittests/IR/AttributeTest.cpp (+7)
``````````diff
diff --git a/mlir/include/mlir/Dialect/Complex/IR/Complex.h b/mlir/include/mlir/Dialect/Complex/IR/Complex.h
index be7e50d656385..9793d315ce217 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/Complex.h
+++ b/mlir/include/mlir/Dialect/Complex/IR/Complex.h
@@ -15,6 +15,7 @@
#include "mlir/IR/OpImplementation.h"
#include "mlir/Interfaces/InferTypeOpInterface.h"
#include "mlir/Interfaces/SideEffectInterfaces.h"
+#include "llvm/Support/Compiler.h"
//===----------------------------------------------------------------------===//
// Complex Dialect
@@ -35,7 +36,11 @@
#define GET_OP_CLASSES
#include "mlir/Dialect/Complex/IR/ComplexOps.h.inc"
+// std::complex<APFloat> is a non-standard instantiation that triggers
+// MSVC STL4037 deprecation warnings in the generated attribute code.
+LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_PUSH
#define GET_ATTRDEF_CLASSES
#include "mlir/Dialect/Complex/IR/ComplexAttributes.h.inc"
+LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_POP
#endif // MLIR_DIALECT_COMPLEX_IR_COMPLEX_H_
diff --git a/mlir/include/mlir/IR/BuiltinAttributes.h b/mlir/include/mlir/IR/BuiltinAttributes.h
index 1f805882db276..00c5d70d14a03 100644
--- a/mlir/include/mlir/IR/BuiltinAttributes.h
+++ b/mlir/include/mlir/IR/BuiltinAttributes.h
@@ -12,6 +12,7 @@
#include "mlir/IR/BuiltinAttributeInterfaces.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/Sequence.h"
+#include "llvm/Support/Compiler.h"
#include <complex>
#include <optional>
@@ -294,6 +295,10 @@ class DenseElementsAttr : public Attribute {
size_t bitWidth;
};
+ // std::complex<APInt> and std::complex<APFloat> are non-standard
+ // instantiations that trigger MSVC STL4037 deprecation warnings.
+ LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_PUSH
+
/// A utility iterator that allows walking over the internal raw complex APInt
/// values.
class ComplexIntElementIterator
@@ -358,6 +363,8 @@ class DenseElementsAttr : public Attribute {
const llvm::fltSemantics *smt;
};
+ LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_POP
+
//===--------------------------------------------------------------------===//
// Value Querying
//===--------------------------------------------------------------------===//
diff --git a/mlir/lib/IR/BuiltinAttributes.cpp b/mlir/lib/IR/BuiltinAttributes.cpp
index c06ae5b178624..682cebcc7188a 100644
--- a/mlir/lib/IR/BuiltinAttributes.cpp
+++ b/mlir/lib/IR/BuiltinAttributes.cpp
@@ -6,6 +6,8 @@
//
//===----------------------------------------------------------------------===//
+#include "llvm/Support/Compiler.h"
+LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_PUSH
#include "mlir/IR/BuiltinAttributes.h"
#include "AttributeDetail.h"
#include "mlir/IR/AffineMap.h"
@@ -1698,3 +1700,4 @@ AffineMap mlir::makeStridedLinearLayoutMap(ArrayRef<int64_t> strides,
return AffineMap::get(strides.size(), nSymbols, expr);
}
+LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_POP
diff --git a/mlir/unittests/IR/AttributeTest.cpp b/mlir/unittests/IR/AttributeTest.cpp
index 900cacabd592e..934429c9903f9 100644
--- a/mlir/unittests/IR/AttributeTest.cpp
+++ b/mlir/unittests/IR/AttributeTest.cpp
@@ -10,6 +10,7 @@
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/BuiltinTypes.h"
+#include "llvm/Support/Compiler.h"
#include "gtest/gtest.h"
#include <optional>
@@ -198,21 +199,27 @@ TEST(DenseComplexTest, ComplexFloatSplat) {
TEST(DenseComplexTest, ComplexIntSplat) {
MLIRContext context;
ComplexType complexType = ComplexType::get(IntegerType::get(&context, 64));
+ LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_PUSH
std::complex<int64_t> value(10, 15);
+ LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_POP
testSplat(complexType, value);
}
TEST(DenseComplexTest, ComplexAPFloatSplat) {
MLIRContext context;
ComplexType complexType = ComplexType::get(Float32Type::get(&context));
+ LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_PUSH
std::complex<APFloat> value(APFloat(10.0f), APFloat(15.0f));
+ LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_POP
testSplat(complexType, value);
}
TEST(DenseComplexTest, ComplexAPIntSplat) {
MLIRContext context;
ComplexType complexType = ComplexType::get(IntegerType::get(&context, 64));
+ LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_PUSH
std::complex<APInt> value(APInt(64, 10), APInt(64, 15));
+ LLVM_SUPPRESS_DEPRECATED_DECLARATIONS_POP
testSplat(complexType, value);
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/191557
More information about the Mlir-commits
mailing list