[clang] [clang][CodeGen][NFC] Make ConstExprEmitter a ConstStmtVisitor (PR #89041)

2024-04-22 Thread Timm Baeder via cfe-commits

https://github.com/tbaederr closed 
https://github.com/llvm/llvm-project/pull/89041
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][CodeGen][NFC] Make ConstExprEmitter a ConstStmtVisitor (PR #89041)

2024-04-22 Thread Nick Desaulniers via cfe-commits

https://github.com/nickdesaulniers approved this pull request.


https://github.com/llvm/llvm-project/pull/89041
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang][CodeGen][NFC] Make ConstExprEmitter a ConstStmtVisitor (PR #89041)

2024-04-17 Thread via cfe-commits

llvmbot wrote:



@llvm/pr-subscribers-clang

@llvm/pr-subscribers-clang-codegen

Author: Timm Baeder (tbaederr)


Changes

No reason for this to not be one. This gets rid of a few const_casts.

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


1 Files Affected:

- (modified) clang/lib/CodeGen/CGExprConstant.cpp (+56-52) 


``diff
diff --git a/clang/lib/CodeGen/CGExprConstant.cpp 
b/clang/lib/CodeGen/CGExprConstant.cpp
index 9f1b06eebf9ed0..c7557469954e67 100644
--- a/clang/lib/CodeGen/CGExprConstant.cpp
+++ b/clang/lib/CodeGen/CGExprConstant.cpp
@@ -564,12 +564,13 @@ class ConstStructBuilder {
 
 public:
   static llvm::Constant *BuildStruct(ConstantEmitter ,
- InitListExpr *ILE, QualType StructTy);
+ const InitListExpr *ILE,
+ QualType StructTy);
   static llvm::Constant *BuildStruct(ConstantEmitter ,
  const APValue , QualType ValTy);
   static bool UpdateStruct(ConstantEmitter ,
ConstantAggregateBuilder , CharUnits Offset,
-   InitListExpr *Updater);
+   const InitListExpr *Updater);
 
 private:
   ConstStructBuilder(ConstantEmitter ,
@@ -586,7 +587,7 @@ class ConstStructBuilder {
   bool AppendBitField(const FieldDecl *Field, uint64_t FieldOffset,
   llvm::ConstantInt *InitExpr, bool AllowOverwrite = 
false);
 
-  bool Build(InitListExpr *ILE, bool AllowOverwrite);
+  bool Build(const InitListExpr *ILE, bool AllowOverwrite);
   bool Build(const APValue , const RecordDecl *RD, bool IsPrimaryBase,
  const CXXRecordDecl *VTableClass, CharUnits BaseOffset);
   llvm::Constant *Finalize(QualType Ty);
@@ -635,7 +636,7 @@ bool ConstStructBuilder::AppendBitField(
 static bool EmitDesignatedInitUpdater(ConstantEmitter ,
   ConstantAggregateBuilder ,
   CharUnits Offset, QualType Type,
-  InitListExpr *Updater) {
+  const InitListExpr *Updater) {
   if (Type->isRecordType())
 return ConstStructBuilder::UpdateStruct(Emitter, Const, Offset, Updater);
 
@@ -647,7 +648,7 @@ static bool EmitDesignatedInitUpdater(ConstantEmitter 
,
   llvm::Type *ElemTy = Emitter.CGM.getTypes().ConvertTypeForMem(ElemType);
 
   llvm::Constant *FillC = nullptr;
-  if (Expr *Filler = Updater->getArrayFiller()) {
+  if (const Expr *Filler = Updater->getArrayFiller()) {
 if (!isa(Filler)) {
   FillC = Emitter.tryEmitAbstractForMemory(Filler, ElemType);
   if (!FillC)
@@ -658,7 +659,7 @@ static bool EmitDesignatedInitUpdater(ConstantEmitter 
,
   unsigned NumElementsToUpdate =
   FillC ? CAT->getZExtSize() : Updater->getNumInits();
   for (unsigned I = 0; I != NumElementsToUpdate; ++I, Offset += ElemSize) {
-Expr *Init = nullptr;
+const Expr *Init = nullptr;
 if (I < Updater->getNumInits())
   Init = Updater->getInit(I);
 
@@ -667,7 +668,7 @@ static bool EmitDesignatedInitUpdater(ConstantEmitter 
,
 return false;
 } else if (!Init || isa(Init)) {
   continue;
-} else if (InitListExpr *ChildILE = dyn_cast(Init)) {
+} else if (const auto *ChildILE = dyn_cast(Init)) {
   if (!EmitDesignatedInitUpdater(Emitter, Const, Offset, ElemType,
  ChildILE))
 return false;
@@ -683,7 +684,7 @@ static bool EmitDesignatedInitUpdater(ConstantEmitter 
,
   return true;
 }
 
-bool ConstStructBuilder::Build(InitListExpr *ILE, bool AllowOverwrite) {
+bool ConstStructBuilder::Build(const InitListExpr *ILE, bool AllowOverwrite) {
   RecordDecl *RD = ILE->getType()->castAs()->getDecl();
   const ASTRecordLayout  = CGM.getContext().getASTRecordLayout(RD);
 
@@ -711,7 +712,7 @@ bool ConstStructBuilder::Build(InitListExpr *ILE, bool 
AllowOverwrite) {
 
 // Get the initializer.  A struct can include fields without initializers,
 // we just use explicit null values for them.
-Expr *Init = nullptr;
+const Expr *Init = nullptr;
 if (ElementNo < ILE->getNumInits())
   Init = ILE->getInit(ElementNo++);
 if (Init && isa(Init))
@@ -879,7 +880,7 @@ llvm::Constant *ConstStructBuilder::Finalize(QualType Type) 
{
 }
 
 llvm::Constant *ConstStructBuilder::BuildStruct(ConstantEmitter ,
-InitListExpr *ILE,
+const InitListExpr *ILE,
 QualType ValTy) {
   ConstantAggregateBuilder Const(Emitter.CGM);
   ConstStructBuilder Builder(Emitter, Const, CharUnits::Zero());
@@ -906,7 +907,8 @@ llvm::Constant 
*ConstStructBuilder::BuildStruct(ConstantEmitter ,
 
 bool ConstStructBuilder::UpdateStruct(ConstantEmitter ,
   ConstantAggregateBuilder ,
-  

[clang] [clang][CodeGen][NFC] Make ConstExprEmitter a ConstStmtVisitor (PR #89041)

2024-04-17 Thread Timm Baeder via cfe-commits

https://github.com/tbaederr created 
https://github.com/llvm/llvm-project/pull/89041

No reason for this to not be one. This gets rid of a few const_casts.

>From 2edf794268aa825391a37053bb5908e362ad62a6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timm=20B=C3=A4der?= 
Date: Wed, 17 Apr 2024 11:02:20 +0200
Subject: [PATCH] [clang][CodeGen][NFC] Make ConstExprEmitter a
 ConstStmtVisitor

No reason for this to not be one. This gets rid of a few
const_casts.
---
 clang/lib/CodeGen/CGExprConstant.cpp | 108 ++-
 1 file changed, 56 insertions(+), 52 deletions(-)

diff --git a/clang/lib/CodeGen/CGExprConstant.cpp 
b/clang/lib/CodeGen/CGExprConstant.cpp
index 9f1b06eebf9ed0..c7557469954e67 100644
--- a/clang/lib/CodeGen/CGExprConstant.cpp
+++ b/clang/lib/CodeGen/CGExprConstant.cpp
@@ -564,12 +564,13 @@ class ConstStructBuilder {
 
 public:
   static llvm::Constant *BuildStruct(ConstantEmitter ,
- InitListExpr *ILE, QualType StructTy);
+ const InitListExpr *ILE,
+ QualType StructTy);
   static llvm::Constant *BuildStruct(ConstantEmitter ,
  const APValue , QualType ValTy);
   static bool UpdateStruct(ConstantEmitter ,
ConstantAggregateBuilder , CharUnits Offset,
-   InitListExpr *Updater);
+   const InitListExpr *Updater);
 
 private:
   ConstStructBuilder(ConstantEmitter ,
@@ -586,7 +587,7 @@ class ConstStructBuilder {
   bool AppendBitField(const FieldDecl *Field, uint64_t FieldOffset,
   llvm::ConstantInt *InitExpr, bool AllowOverwrite = 
false);
 
-  bool Build(InitListExpr *ILE, bool AllowOverwrite);
+  bool Build(const InitListExpr *ILE, bool AllowOverwrite);
   bool Build(const APValue , const RecordDecl *RD, bool IsPrimaryBase,
  const CXXRecordDecl *VTableClass, CharUnits BaseOffset);
   llvm::Constant *Finalize(QualType Ty);
@@ -635,7 +636,7 @@ bool ConstStructBuilder::AppendBitField(
 static bool EmitDesignatedInitUpdater(ConstantEmitter ,
   ConstantAggregateBuilder ,
   CharUnits Offset, QualType Type,
-  InitListExpr *Updater) {
+  const InitListExpr *Updater) {
   if (Type->isRecordType())
 return ConstStructBuilder::UpdateStruct(Emitter, Const, Offset, Updater);
 
@@ -647,7 +648,7 @@ static bool EmitDesignatedInitUpdater(ConstantEmitter 
,
   llvm::Type *ElemTy = Emitter.CGM.getTypes().ConvertTypeForMem(ElemType);
 
   llvm::Constant *FillC = nullptr;
-  if (Expr *Filler = Updater->getArrayFiller()) {
+  if (const Expr *Filler = Updater->getArrayFiller()) {
 if (!isa(Filler)) {
   FillC = Emitter.tryEmitAbstractForMemory(Filler, ElemType);
   if (!FillC)
@@ -658,7 +659,7 @@ static bool EmitDesignatedInitUpdater(ConstantEmitter 
,
   unsigned NumElementsToUpdate =
   FillC ? CAT->getZExtSize() : Updater->getNumInits();
   for (unsigned I = 0; I != NumElementsToUpdate; ++I, Offset += ElemSize) {
-Expr *Init = nullptr;
+const Expr *Init = nullptr;
 if (I < Updater->getNumInits())
   Init = Updater->getInit(I);
 
@@ -667,7 +668,7 @@ static bool EmitDesignatedInitUpdater(ConstantEmitter 
,
 return false;
 } else if (!Init || isa(Init)) {
   continue;
-} else if (InitListExpr *ChildILE = dyn_cast(Init)) {
+} else if (const auto *ChildILE = dyn_cast(Init)) {
   if (!EmitDesignatedInitUpdater(Emitter, Const, Offset, ElemType,
  ChildILE))
 return false;
@@ -683,7 +684,7 @@ static bool EmitDesignatedInitUpdater(ConstantEmitter 
,
   return true;
 }
 
-bool ConstStructBuilder::Build(InitListExpr *ILE, bool AllowOverwrite) {
+bool ConstStructBuilder::Build(const InitListExpr *ILE, bool AllowOverwrite) {
   RecordDecl *RD = ILE->getType()->castAs()->getDecl();
   const ASTRecordLayout  = CGM.getContext().getASTRecordLayout(RD);
 
@@ -711,7 +712,7 @@ bool ConstStructBuilder::Build(InitListExpr *ILE, bool 
AllowOverwrite) {
 
 // Get the initializer.  A struct can include fields without initializers,
 // we just use explicit null values for them.
-Expr *Init = nullptr;
+const Expr *Init = nullptr;
 if (ElementNo < ILE->getNumInits())
   Init = ILE->getInit(ElementNo++);
 if (Init && isa(Init))
@@ -879,7 +880,7 @@ llvm::Constant *ConstStructBuilder::Finalize(QualType Type) 
{
 }
 
 llvm::Constant *ConstStructBuilder::BuildStruct(ConstantEmitter ,
-InitListExpr *ILE,
+const InitListExpr *ILE,
 QualType ValTy) {
   ConstantAggregateBuilder Const(Emitter.CGM);
   ConstStructBuilder Builder(Emitter, Const, CharUnits::Zero());
@@