Fixes for switch statements on enums (#19140)
* Adds a missing `return`, to fix the GCC error flagged here:
https://github.com/iree-org/iree/pull/19099/files/ab2aa4c5e9487c5f51effdc0d123c2f369dc9c41#r1840709707
* Adds some assertions on these error-case returns which are reachable
but would only be reached if there is a bug in our program (as opposed
to being triggerable by user input).
* Drops some comments erroneously suggesting that it's GCC being
difficult. Here, GCC is right and Clang is having a false-negative bug:
https://github.com/llvm/llvm-project/issues/115345
* Drops a redundant `return` after a `default: return`.
Signed-off-by: Benoit Jacob <jacob.benoit.1@gmail.com>
diff --git a/compiler/src/iree/compiler/Codegen/Dialect/GPU/IR/IREEGPUAttrs.cpp b/compiler/src/iree/compiler/Codegen/Dialect/GPU/IR/IREEGPUAttrs.cpp
index ea06da5..bbe27fe 100644
--- a/compiler/src/iree/compiler/Codegen/Dialect/GPU/IR/IREEGPUAttrs.cpp
+++ b/compiler/src/iree/compiler/Codegen/Dialect/GPU/IR/IREEGPUAttrs.cpp
@@ -302,6 +302,8 @@
return {f16, f16, f32};
}
}
+ assert(false && "unexpected enum value");
+ return {};
}
static OpaqueMmaLayout getOpaqueMFMALayout(MLIRContext *context,
@@ -667,6 +669,7 @@
case MMAIntrinsic::NV_WMMA_F16_16x16x16_F16:
return {};
}
+ assert(false && "unexpected enum value");
return {};
}
@@ -696,7 +699,6 @@
default:
return {};
}
- return {};
}
// Generates amdgpu.mfma/wmma operation on the given inputs for this attribute
@@ -1281,7 +1283,6 @@
return {aType, bType, cType};
}
}
- // This should not happen but just to make GCC happy.
assert(false && "unhandled virtual mma layout type.");
return {VectorType{}, VectorType{}, VectorType{}};
}
@@ -1301,7 +1302,6 @@
return 64;
}
}
- // This should not happen but just to make GCC happy.
assert(false && "unhandled virtual mma layout type.");
return 0;
}
@@ -1356,7 +1356,6 @@
return 1;
}
}
- // This should not happen but just to make GCC happy.
assert(false && "unhandled virtual mma layout type.");
return 0;
}
@@ -1424,7 +1423,6 @@
return 1;
}
}
- // This should not happen but just to make GCC happy.
assert(false && "unhandled virtual mma layout type.");
return 0;
}