From c65f77704b19c5555b2736f703227cfd4e2d0d92 Mon Sep 17 00:00:00 2001 From: Andy Kaylor Date: Mon, 3 Mar 2025 14:38:30 -0800 Subject: [PATCH 1/2] [CIR] Clean up warnings Previous CIR commits have introduced a few warnings. This change fixes those. There are still warnings present when building with GCC because GCC warns about virtual functions being hidden in the mlir::OpConversion classes. A separate discussion will be required to decide what should be done about those. --- clang/lib/CIR/CodeGen/CIRGenDecl.cpp | 2 +- clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp | 1 + clang/lib/CIR/CodeGen/CIRGenFunction.cpp | 11 +++++------ clang/lib/CIR/CodeGen/CIRGenFunction.h | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/clang/lib/CIR/CodeGen/CIRGenDecl.cpp b/clang/lib/CIR/CodeGen/CIRGenDecl.cpp index c34d42eff6966..406026b0b9f27 100644 --- a/clang/lib/CIR/CodeGen/CIRGenDecl.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenDecl.cpp @@ -62,7 +62,7 @@ void CIRGenFunction::emitAutoVarInit(const clang::VarDecl &d) { void CIRGenFunction::emitAutoVarCleanups(const clang::VarDecl &d) { // Check the type for a cleanup. - if (QualType::DestructionKind dtorKind = d.needsDestruction(getContext())) + if (d.needsDestruction(getContext())) cgm.errorNYI(d.getSourceRange(), "emitAutoVarCleanups: type cleanup"); assert(!cir::MissingFeatures::opAllocaPreciseLifetime()); diff --git a/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp b/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp index 90a2fd2a5d806..96ac292f49ef5 100644 --- a/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp @@ -98,6 +98,7 @@ class ScalarExprEmitter : public StmtVisitor { cgf.getCIRGenModule().errorNYI(loc, "emitScalarConversion for unequal types"); + return {}; } }; diff --git a/clang/lib/CIR/CodeGen/CIRGenFunction.cpp b/clang/lib/CIR/CodeGen/CIRGenFunction.cpp index 7861a48c93244..ad7560d83fb68 100644 --- a/clang/lib/CIR/CodeGen/CIRGenFunction.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenFunction.cpp @@ -13,6 +13,7 @@ #include "CIRGenFunction.h" #include "CIRGenCall.h" +#include "CIRGenValue.h" #include "mlir/IR/Location.h" #include "clang/AST/GlobalDecl.h" #include "clang/CIR/MissingFeatures.h" @@ -134,10 +135,9 @@ mlir::Location CIRGenFunction::getLoc(mlir::Location lhs, mlir::Location rhs) { return mlir::FusedLoc::get(locs, metadata, &getMLIRContext()); } -mlir::LogicalResult CIRGenFunction::declare(mlir::Value addrVal, - const Decl *var, QualType ty, - mlir::Location loc, - CharUnits alignment, bool isParam) { +void CIRGenFunction::declare(mlir::Value addrVal, const Decl *var, QualType ty, + mlir::Location loc, CharUnits alignment, + bool isParam) { const auto *namedVar = dyn_cast_or_null(var); assert(namedVar && "Needs a named decl"); assert(!cir::MissingFeatures::cgfSymbolTable()); @@ -147,8 +147,6 @@ mlir::LogicalResult CIRGenFunction::declare(mlir::Value addrVal, allocaOp.setInitAttr(mlir::UnitAttr::get(&getMLIRContext())); if (ty->isReferenceType() || ty.isConstQualified()) allocaOp.setConstantAttr(mlir::UnitAttr::get(&getMLIRContext())); - - return mlir::success(); } void CIRGenFunction::startFunction(GlobalDecl gd, QualType returnType, @@ -306,6 +304,7 @@ LValue CIRGenFunction::emitLValue(const Expr *e) { getCIRGenModule().errorNYI(e->getSourceRange(), std::string("l-value not implemented for '") + e->getStmtClassName() + "'"); + return LValue(); break; case Expr::DeclRefExprClass: return emitDeclRefLValue(cast(e)); diff --git a/clang/lib/CIR/CodeGen/CIRGenFunction.h b/clang/lib/CIR/CodeGen/CIRGenFunction.h index 6b383378ae764..cf896d3c0a946 100644 --- a/clang/lib/CIR/CodeGen/CIRGenFunction.h +++ b/clang/lib/CIR/CodeGen/CIRGenFunction.h @@ -97,9 +97,9 @@ class CIRGenFunction : public CIRGenTypeCache { private: /// Declare a variable in the current scope, return success if the variable /// wasn't declared yet. - mlir::LogicalResult declare(mlir::Value addrVal, const clang::Decl *var, - clang::QualType ty, mlir::Location loc, - clang::CharUnits alignment, bool isParam = false); + void declare(mlir::Value addrVal, const clang::Decl *var, clang::QualType ty, + mlir::Location loc, clang::CharUnits alignment, + bool isParam = false); public: mlir::Value emitAlloca(llvm::StringRef name, mlir::Type ty, From ee87eb78e596ea330f3c91ab9d9c2ee170239fd4 Mon Sep 17 00:00:00 2001 From: Andy Kaylor Date: Mon, 3 Mar 2025 16:47:26 -0800 Subject: [PATCH 2/2] Remove unneeded break statement --- clang/lib/CIR/CodeGen/CIRGenFunction.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/clang/lib/CIR/CodeGen/CIRGenFunction.cpp b/clang/lib/CIR/CodeGen/CIRGenFunction.cpp index ad7560d83fb68..47d296b70d789 100644 --- a/clang/lib/CIR/CodeGen/CIRGenFunction.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenFunction.cpp @@ -305,7 +305,6 @@ LValue CIRGenFunction::emitLValue(const Expr *e) { std::string("l-value not implemented for '") + e->getStmtClassName() + "'"); return LValue(); - break; case Expr::DeclRefExprClass: return emitDeclRefLValue(cast(e)); }