[Mlir-commits] [mlir] [MLIR] Fix GCC's `-Wreturn-type` warnings (PR #177654)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Jan 23 10:44:31 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir-gpu
Author: foxtran (foxtran)
<details>
<summary>Changes</summary>
This patch fixes `-Wreturn-type` warnings which happens if MLIR is built with GCC compiler (11.5 is used for detecting)
Founded errors
```
build/llvm-llvmorg-21.1.8/mlir/lib/CAPI/Transforms/Rewrite.cpp: In function ‘MlirGreedyRewriteStrictness mlirGreedyRewriteDriverConfigGetStrictness(MlirGreedyRewriteDriverConfig)’:
build/llvm-llvmorg-21.1.8/mlir/lib/CAPI/Transforms/Rewrite.cpp:399:1: warning: control reaches end of non-void function [-Wreturn-type]
399 | }
| ^
build/llvm-llvmorg-21.1.8/mlir/lib/CAPI/Transforms/Rewrite.cpp: In function ‘MlirGreedySimplifyRegionLevel mlirGreedyRewriteDriverConfigGetRegionSimplificationLevel(MlirGreedyRewriteDriverConfig)’:
build/llvm-llvmorg-21.1.8/mlir/lib/CAPI/Transforms/Rewrite.cpp:414:1: warning: control reaches end of non-void function [-Wreturn-type]
414 | }
| ^
build/llvm-llvmorg-21.1.8/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp: In member function ‘mlir::Speculation::Speculatability mlir::gpu::SubgroupBroadcastOp::getSpeculatability()’:
build/llvm-llvmorg-21.1.8/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp:2522:1: warning: control reaches end of non-void function [-Wreturn-type]
2522 | }
| ^
build/llvm-llvmorg-21.1.8/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp: In member function ‘llvm::LogicalResult mlir::gpu::SubgroupBroadcastOp::verify()’:
build/llvm-llvmorg-21.1.8/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp:2537:1: warning: control reaches end of non-void function [-Wreturn-type]
2537 | }
| ^
build/llvm-llvmorg-21.1.8/mlir/lib/Dialect/ArmNeon/Transforms/LowerContractToNeonPatterns.cpp: In member function ‘mlir::Value {anonymous}::VectorContractRewriter::createMMLA(mlir::PatternRewriter&, mlir::Location, mlir::Value, mlir::Value, mlir::Value)’:
build/llvm-llvmorg-21.1.8/mlir/lib/Dialect/ArmNeon/Transforms/LowerContractToNeonPatterns.cpp:153:3: warning: control reaches end of non-void function [-Wreturn-type]
153 | }
| ^
build/llvm-llvmorg-21.1.8/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp: In function ‘std::pair<long int, long int> mlir::linalg::getFmrFromWinogradConv2DFmr(mlir::linalg::WinogradConv2DFmr)’:
build/llvm-llvmorg-21.1.8/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp:3776:1: warning: control reaches end of non-void function [-Wreturn-type]
3776 | }
| ^
build/llvm-llvmorg-21.1.8/mlir/test/lib/Dialect/Test/TestOpDefs.cpp: In function ‘llvm::StringLiteral getVisibilityString(mlir::SymbolTable::Visibility)’:
build/llvm-llvmorg-21.1.8/mlir/test/lib/Dialect/Test/TestOpDefs.cpp:37:1: warning: control reaches end of non-void function [-Wreturn-type]
37 | }
| ^
```
---
Full diff: https://github.com/llvm/llvm-project/pull/177654.diff
5 Files Affected:
- (modified) mlir/lib/CAPI/Transforms/Rewrite.cpp (+2)
- (modified) mlir/lib/Dialect/ArmNeon/Transforms/LowerContractToNeonPatterns.cpp (+1)
- (modified) mlir/lib/Dialect/GPU/IR/GPUDialect.cpp (+2)
- (modified) mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp (+1)
- (modified) mlir/test/lib/Dialect/Test/TestOpDefs.cpp (+1)
``````````diff
diff --git a/mlir/lib/CAPI/Transforms/Rewrite.cpp b/mlir/lib/CAPI/Transforms/Rewrite.cpp
index 798ca1de651c1..65701ab070508 100644
--- a/mlir/lib/CAPI/Transforms/Rewrite.cpp
+++ b/mlir/lib/CAPI/Transforms/Rewrite.cpp
@@ -396,6 +396,7 @@ MlirGreedyRewriteStrictness mlirGreedyRewriteDriverConfigGetStrictness(
case mlir::GreedyRewriteStrictness::ExistingOps:
return MLIR_GREEDY_REWRITE_STRICTNESS_EXISTING_OPS;
}
+ llvm_unreachable("Unknown GreedyRewriteStrictness");
}
MlirGreedySimplifyRegionLevel
@@ -411,6 +412,7 @@ mlirGreedyRewriteDriverConfigGetRegionSimplificationLevel(
case mlir::GreedySimplifyRegionLevel::Aggressive:
return MLIR_GREEDY_SIMPLIFY_REGION_LEVEL_AGGRESSIVE;
}
+ llvm_unreachable("Unknown GreedySimplifyRegionLevel");
}
bool mlirGreedyRewriteDriverConfigIsConstantCSEEnabled(
diff --git a/mlir/lib/Dialect/ArmNeon/Transforms/LowerContractToNeonPatterns.cpp b/mlir/lib/Dialect/ArmNeon/Transforms/LowerContractToNeonPatterns.cpp
index 35365f2dc17ba..fd0a774dcf602 100644
--- a/mlir/lib/Dialect/ArmNeon/Transforms/LowerContractToNeonPatterns.cpp
+++ b/mlir/lib/Dialect/ArmNeon/Transforms/LowerContractToNeonPatterns.cpp
@@ -150,6 +150,7 @@ class VectorContractRewriter {
case MMLA::Nop:
llvm_unreachable("Uninitialized operation type");
}
+ llvm_unreachable("Unknown MMLA");
}
// Check common preconditions for applying the patterns and initialize
diff --git a/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp b/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp
index a388c1243d4ed..5df0b70c3781f 100644
--- a/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp
+++ b/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp
@@ -2526,6 +2526,7 @@ Speculation::Speculatability gpu::SubgroupBroadcastOp::getSpeculatability() {
// Speculation should be safe as long as we inside structured control flow.
return Speculation::Speculatable;
}
+ llvm_unreachable("Unknown BroadcastType");
}
LogicalResult gpu::SubgroupBroadcastOp::verify() {
@@ -2541,6 +2542,7 @@ LogicalResult gpu::SubgroupBroadcastOp::verify() {
<< "lane must be specified for `specific_lane` broadcast";
return success();
}
+ llvm_unreachable("Unknown BroadcastType");
}
OpFoldResult gpu::SubgroupBroadcastOp::fold(FoldAdaptor /*adaptor*/) {
diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
index 40cabe20d1a4b..0f0e308bba78e 100644
--- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
+++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
@@ -3774,6 +3774,7 @@ std::pair<int64_t, int64_t> getFmrFromWinogradConv2DFmr(WinogradConv2DFmr fmr) {
case WinogradConv2DFmr::F_2_5:
return {2, 5};
}
+ llvm_unreachable("Unkown WinogradConv2DFmr");
}
//===----------------------------------------------------------------------===//
diff --git a/mlir/test/lib/Dialect/Test/TestOpDefs.cpp b/mlir/test/lib/Dialect/Test/TestOpDefs.cpp
index 7a8c3703498fb..47a63d646d44e 100644
--- a/mlir/test/lib/Dialect/Test/TestOpDefs.cpp
+++ b/mlir/test/lib/Dialect/Test/TestOpDefs.cpp
@@ -34,6 +34,7 @@ static StringLiteral getVisibilityString(SymbolTable::Visibility visibility) {
case SymbolTable::Visibility::Public:
return "public";
}
+ llvm_unreachable("Unknown SymbolTable::Visibility");
}
void OverriddenSymbolVisibilityOp::setVisibility(
``````````
</details>
https://github.com/llvm/llvm-project/pull/177654
More information about the Mlir-commits
mailing list