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

Reply via email to