[clang] 29d25f9 - [clang][Interp][NFC] Simplify InterpFrame constructor

Timm Bäder via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 18 09:16:45 PST 2023


Author: Timm Bäder
Date: 2023-01-18T18:14:23+01:00
New Revision: 29d25f9e9a4c075023ac7d8f19e7073e9b2a0359

URL: https://github.com/llvm/llvm-project/commit/29d25f9e9a4c075023ac7d8f19e7073e9b2a0359
DIFF: https://github.com/llvm/llvm-project/commit/29d25f9e9a4c075023ac7d8f19e7073e9b2a0359.diff

LOG: [clang][Interp][NFC] Simplify InterpFrame constructor

Try to decrease the block depth here a bit.

Added: 
    

Modified: 
    clang/lib/AST/Interp/InterpFrame.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/AST/Interp/InterpFrame.cpp b/clang/lib/AST/Interp/InterpFrame.cpp
index 9acfbe3700e98..da228d011f874 100644
--- a/clang/lib/AST/Interp/InterpFrame.cpp
+++ b/clang/lib/AST/Interp/InterpFrame.cpp
@@ -24,19 +24,22 @@ InterpFrame::InterpFrame(InterpState &S, const Function *Func,
     : Caller(Caller), S(S), Func(Func), RetPC(RetPC),
       ArgSize(Func ? Func->getArgSize() : 0),
       Args(static_cast<char *>(S.Stk.top())), FrameOffset(S.Stk.size()) {
-  if (Func) {
-    if (unsigned FrameSize = Func->getFrameSize()) {
-      Locals = std::make_unique<char[]>(FrameSize);
-      for (auto &Scope : Func->scopes()) {
-        for (auto &Local : Scope.locals()) {
-          Block *B = new (localBlock(Local.Offset)) Block(Local.Desc);
-          B->invokeCtor();
-          InlineDescriptor *ID = localInlineDesc(Local.Offset);
-          ID->Desc = Local.Desc;
-          ID->IsActive = true;
-          ID->Offset = sizeof(InlineDescriptor);
-        }
-      }
+  if (!Func)
+    return;
+
+  unsigned FrameSize = Func->getFrameSize();
+  if (FrameSize == 0)
+    return;
+
+  Locals = std::make_unique<char[]>(FrameSize);
+  for (auto &Scope : Func->scopes()) {
+    for (auto &Local : Scope.locals()) {
+      Block *B = new (localBlock(Local.Offset)) Block(Local.Desc);
+      B->invokeCtor();
+      InlineDescriptor *ID = localInlineDesc(Local.Offset);
+      ID->Desc = Local.Desc;
+      ID->IsActive = true;
+      ID->Offset = sizeof(InlineDescriptor);
     }
   }
 }


        


More information about the cfe-commits mailing list