Skip to content

Conversation

@AmrDeveloper
Copy link
Member

This fixes a warning where a variable assigned in 'if' statement wasn't referenced again, and where else is used when 'if' has returns statement in the if-else statement

@AmrDeveloper AmrDeveloper requested review from andykaylor and xlauko May 20, 2025 18:43
@llvmbot llvmbot added clang Clang issues not falling into any other category ClangIR Anything related to the ClangIR project labels May 20, 2025
@llvmbot
Copy link
Member

llvmbot commented May 20, 2025

@llvm/pr-subscribers-clangir

Author: Amr Hesham (AmrDeveloper)

Changes

This fixes a warning where a variable assigned in 'if' statement wasn't referenced again, and where else is used when 'if' has returns statement in the if-else statement


Full diff: https://github.com/llvm/llvm-project/pull/140783.diff

1 Files Affected:

  • (modified) clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp (+8-8)
diff --git a/clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp b/clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp
index 906c212f0fa8a..aad08a59624d2 100644
--- a/clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp
@@ -113,7 +113,7 @@ RValue CIRGenFunction::emitCXXMemberOrOperatorMemberCallExpr(
     thisPtr = emitLValue(base);
   }
 
-  if (const CXXConstructorDecl *ctor = dyn_cast<CXXConstructorDecl>(md)) {
+  if (isa<CXXConstructorDecl>(md)) {
     cgm.errorNYI(ce->getSourceRange(),
                  "emitCXXMemberOrOperatorMemberCallExpr: constructor call");
     return RValue::get(nullptr);
@@ -127,29 +127,29 @@ RValue CIRGenFunction::emitCXXMemberOrOperatorMemberCallExpr(
       cgm.errorNYI(ce->getSourceRange(),
                    "emitCXXMemberOrOperatorMemberCallExpr: trivial assignment");
       return RValue::get(nullptr);
-    } else {
-      assert(md->getParent()->mayInsertExtraPadding() &&
-             "unknown trivial member function");
     }
+
+    assert(md->getParent()->mayInsertExtraPadding() &&
+           "unknown trivial member function");
   }
 
   // Compute the function type we're calling
   const CXXMethodDecl *calleeDecl = md;
   const CIRGenFunctionInfo *fInfo = nullptr;
-  if (const auto *dtor = dyn_cast<CXXDestructorDecl>(calleeDecl)) {
+  if (isa<CXXDestructorDecl>(calleeDecl)) {
     cgm.errorNYI(ce->getSourceRange(),
                  "emitCXXMemberOrOperatorMemberCallExpr: destructor call");
     return RValue::get(nullptr);
-  } else {
-    fInfo = &cgm.getTypes().arrangeCXXMethodDeclaration(calleeDecl);
   }
 
+  fInfo = &cgm.getTypes().arrangeCXXMethodDeclaration(calleeDecl);
+
   mlir::Type ty = cgm.getTypes().getFunctionType(*fInfo);
 
   assert(!cir::MissingFeatures::sanitizers());
   assert(!cir::MissingFeatures::emitTypeCheck());
 
-  if (const auto *dtor = dyn_cast<CXXDestructorDecl>(calleeDecl)) {
+  if (isa<CXXDestructorDecl>(calleeDecl)) {
     cgm.errorNYI(ce->getSourceRange(),
                  "emitCXXMemberOrOperatorMemberCallExpr: destructor call");
     return RValue::get(nullptr);

@llvmbot
Copy link
Member

llvmbot commented May 20, 2025

@llvm/pr-subscribers-clang

Author: Amr Hesham (AmrDeveloper)

Changes

This fixes a warning where a variable assigned in 'if' statement wasn't referenced again, and where else is used when 'if' has returns statement in the if-else statement


Full diff: https://github.com/llvm/llvm-project/pull/140783.diff

1 Files Affected:

  • (modified) clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp (+8-8)
diff --git a/clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp b/clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp
index 906c212f0fa8a..aad08a59624d2 100644
--- a/clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenCXXExpr.cpp
@@ -113,7 +113,7 @@ RValue CIRGenFunction::emitCXXMemberOrOperatorMemberCallExpr(
     thisPtr = emitLValue(base);
   }
 
-  if (const CXXConstructorDecl *ctor = dyn_cast<CXXConstructorDecl>(md)) {
+  if (isa<CXXConstructorDecl>(md)) {
     cgm.errorNYI(ce->getSourceRange(),
                  "emitCXXMemberOrOperatorMemberCallExpr: constructor call");
     return RValue::get(nullptr);
@@ -127,29 +127,29 @@ RValue CIRGenFunction::emitCXXMemberOrOperatorMemberCallExpr(
       cgm.errorNYI(ce->getSourceRange(),
                    "emitCXXMemberOrOperatorMemberCallExpr: trivial assignment");
       return RValue::get(nullptr);
-    } else {
-      assert(md->getParent()->mayInsertExtraPadding() &&
-             "unknown trivial member function");
     }
+
+    assert(md->getParent()->mayInsertExtraPadding() &&
+           "unknown trivial member function");
   }
 
   // Compute the function type we're calling
   const CXXMethodDecl *calleeDecl = md;
   const CIRGenFunctionInfo *fInfo = nullptr;
-  if (const auto *dtor = dyn_cast<CXXDestructorDecl>(calleeDecl)) {
+  if (isa<CXXDestructorDecl>(calleeDecl)) {
     cgm.errorNYI(ce->getSourceRange(),
                  "emitCXXMemberOrOperatorMemberCallExpr: destructor call");
     return RValue::get(nullptr);
-  } else {
-    fInfo = &cgm.getTypes().arrangeCXXMethodDeclaration(calleeDecl);
   }
 
+  fInfo = &cgm.getTypes().arrangeCXXMethodDeclaration(calleeDecl);
+
   mlir::Type ty = cgm.getTypes().getFunctionType(*fInfo);
 
   assert(!cir::MissingFeatures::sanitizers());
   assert(!cir::MissingFeatures::emitTypeCheck());
 
-  if (const auto *dtor = dyn_cast<CXXDestructorDecl>(calleeDecl)) {
+  if (isa<CXXDestructorDecl>(calleeDecl)) {
     cgm.errorNYI(ce->getSourceRange(),
                  "emitCXXMemberOrOperatorMemberCallExpr: destructor call");
     return RValue::get(nullptr);

Copy link
Contributor

@xlauko xlauko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Copy link
Contributor

@andykaylor andykaylor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fixes!

@AmrDeveloper AmrDeveloper merged commit 9db6c32 into llvm:main May 21, 2025
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clang Clang issues not falling into any other category ClangIR Anything related to the ClangIR project

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants