[llvm] fb1e0f3 - [SafeStack,NFC] Add BlockLifetimeInfo constructor

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 14 23:15:04 PDT 2020


Author: Vitaly Buka
Date: 2020-06-14T23:05:42-07:00
New Revision: fb1e0f324fe6db518ae1ad64df55aea52ed372d7

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

LOG: [SafeStack,NFC] Add BlockLifetimeInfo constructor

Added: 
    

Modified: 
    llvm/lib/CodeGen/SafeStackColoring.cpp
    llvm/lib/CodeGen/SafeStackColoring.h

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/SafeStackColoring.cpp b/llvm/lib/CodeGen/SafeStackColoring.cpp
index d5ef92ff7499..ee7dec789a2d 100644
--- a/llvm/lib/CodeGen/SafeStackColoring.cpp
+++ b/llvm/lib/CodeGen/SafeStackColoring.cpp
@@ -94,11 +94,8 @@ void StackColoring::collectMarkers() {
     LLVM_DEBUG(dbgs() << "  " << InstNo << ": BB " << BB->getName() << "\n");
     unsigned BBStart = InstNo++;
 
-    BlockLifetimeInfo &BlockInfo = BlockLiveness[BB];
-    BlockInfo.Begin.resize(NumAllocas);
-    BlockInfo.End.resize(NumAllocas);
-    BlockInfo.LiveIn.resize(NumAllocas);
-    BlockInfo.LiveOut.resize(NumAllocas);
+    BlockLifetimeInfo &BlockInfo =
+        BlockLiveness.try_emplace(BB, NumAllocas).first->getSecond();
 
     auto &BlockMarkerSet = BBMarkerSet[BB];
     if (BlockMarkerSet.empty()) {
@@ -155,7 +152,7 @@ void StackColoring::calculateLocalLiveness() {
     changed = false;
 
     for (BasicBlock *BB : depth_first(&F)) {
-      BlockLifetimeInfo &BlockInfo = BlockLiveness[BB];
+      BlockLifetimeInfo &BlockInfo = BlockLiveness.find(BB)->getSecond();
 
       // Compute LiveIn by unioning together the LiveOut sets of all preds.
       BitVector LocalLiveIn;
@@ -253,7 +250,7 @@ LLVM_DUMP_METHOD void StackColoring::dumpBlockLiveness() {
   dbgs() << "Block liveness:\n";
   for (auto IT : BlockLiveness) {
     BasicBlock *BB = IT.getFirst();
-    BlockLifetimeInfo &BlockInfo = BlockLiveness[BB];
+    const BlockLifetimeInfo &BlockInfo = BlockLiveness.find(BB)->getSecond();
     auto BlockRange = BlockInstRange[BB];
     dbgs() << "  BB [" << BlockRange.first << ", " << BlockRange.second
            << "): begin " << BlockInfo.Begin << ", end " << BlockInfo.End

diff  --git a/llvm/lib/CodeGen/SafeStackColoring.h b/llvm/lib/CodeGen/SafeStackColoring.h
index 926756d6a1d7..79141d9c8054 100644
--- a/llvm/lib/CodeGen/SafeStackColoring.h
+++ b/llvm/lib/CodeGen/SafeStackColoring.h
@@ -40,6 +40,9 @@ class StackColoring {
   /// Each bit in the BitVector represents the liveness property
   /// for a 
diff erent stack slot.
   struct BlockLifetimeInfo {
+    explicit BlockLifetimeInfo(unsigned Size)
+        : Begin(Size), End(Size), LiveIn(Size), LiveOut(Size) {}
+
     /// Which slots BEGINs in each basic block.
     BitVector Begin;
 


        


More information about the llvm-commits mailing list