https://github.com/andykaylor created https://github.com/llvm/llvm-project/pull/137366
We have been getting a warning about a default statement in a fully covered switch statement. This change fixes that by removing the default, updating all paths to return a value rather than depending on a local variable which is returned immediately after the switch, and adding an llvm_unreachable for non-enum values. >From 4871b6ad138e6f93d9f27798427d2ba95f65a399 Mon Sep 17 00:00:00 2001 From: Andy Kaylor <akay...@nvidia.com> Date: Fri, 25 Apr 2025 10:03:46 -0700 Subject: [PATCH] [CIR][NFC] Fix a build warning in CIRGenCall.cpp We have been getting a warning about a default statement in a fully covered switch statement. This change fixes that by removing the default, updating all paths to return a value rather than depending on a local variable which is returned immediately after the switch, and adding an llvm_unreachable for non-enum values. --- clang/lib/CIR/CodeGen/CIRGenCall.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/clang/lib/CIR/CodeGen/CIRGenCall.cpp b/clang/lib/CIR/CodeGen/CIRGenCall.cpp index 69266f79a88a5..fe8d502e504bd 100644 --- a/clang/lib/CIR/CodeGen/CIRGenCall.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenCall.cpp @@ -110,7 +110,6 @@ RValue CIRGenFunction::emitCall(const CIRGenFunctionInfo &funcInfo, assert(!cir::MissingFeatures::opCallMustTail()); assert(!cir::MissingFeatures::opCallReturn()); - RValue ret; switch (retInfo.getKind()) { case cir::ABIArgInfo::Direct: { mlir::Type retCIRTy = convertType(retTy); @@ -132,23 +131,22 @@ RValue CIRGenFunction::emitCall(const CIRGenFunctionInfo &funcInfo, return RValue::get(results[0]); } - default: + case cir::TEK_Complex: + case cir::TEK_Aggregate: cgm.errorNYI(loc, "unsupported evaluation kind of function call result"); + return getUndefRValue(retTy); } - } else - cgm.errorNYI(loc, "unsupported function call form"); - - break; + llvm_unreachable("Invalid evaluation kind"); + } + cgm.errorNYI(loc, "unsupported function call form"); + return getUndefRValue(retTy); } case cir::ABIArgInfo::Ignore: // If we are ignoring an argument that had a result, make sure to construct // the appropriate return value for our caller. - ret = getUndefRValue(retTy); - break; - default: - cgm.errorNYI(loc, "unsupported return value information"); + return getUndefRValue(retTy); } - return ret; + llvm_unreachable("Invalid return info kind"); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits