[llvm-branch-commits] [llvm] 76817ab - Merging r373219:

Tom Stellard via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Nov 21 15:59:11 PST 2019


Author: Paul Robinson
Date: 2019-11-21T15:41:34-08:00
New Revision: 76817ab1e1043d269f415928fabd3f4a533b7e83

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

LOG: Merging r373219:

------------------------------------------------------------------------
r373219 | probinson | 2019-09-30 08:08:38 -0700 (Mon, 30 Sep 2019) | 3 lines

[SSP] [2/3] Refactor an if/dyn_cast chain to switch on opcode. NFC

Differential Revision: https://reviews.llvm.org/D67844
------------------------------------------------------------------------

Added: 
    

Modified: 
    llvm/lib/CodeGen/StackProtector.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/StackProtector.cpp b/llvm/lib/CodeGen/StackProtector.cpp
index aa55bb3506c3..68e902c2780c 100644
--- a/llvm/lib/CodeGen/StackProtector.cpp
+++ b/llvm/lib/CodeGen/StackProtector.cpp
@@ -159,33 +159,42 @@ bool StackProtector::ContainsProtectableArray(Type *Ty, bool &IsLarge,
 bool StackProtector::HasAddressTaken(const Instruction *AI,
                                 SmallPtrSetImpl<const PHINode *> &VisitedPHIs) {
   for (const User *U : AI->users()) {
-    if (const StoreInst *SI = dyn_cast<StoreInst>(U)) {
-      if (AI == SI->getValueOperand())
+    const auto *I = cast<Instruction>(U);
+    switch (I->getOpcode()) {
+    case Instruction::Store:
+      if (AI == cast<StoreInst>(I)->getValueOperand())
         return true;
-    } else if (const PtrToIntInst *SI = dyn_cast<PtrToIntInst>(U)) {
-      if (AI == SI->getOperand(0))
+      break;
+    case Instruction::PtrToInt:
+      if (AI == cast<PtrToIntInst>(I)->getOperand(0))
         return true;
-    } else if (const CallInst *CI = dyn_cast<CallInst>(U)) {
+      break;
+    case Instruction::Call: {
       // Ignore intrinsics that are not calls. TODO: Use isLoweredToCall().
+      const auto *CI = cast<CallInst>(I);
       if (!isa<DbgInfoIntrinsic>(CI) && !CI->isLifetimeStartOrEnd())
         return true;
-    } else if (isa<InvokeInst>(U)) {
+      break;
+    }
+    case Instruction::Invoke:
       return true;
-    } else if (const SelectInst *SI = dyn_cast<SelectInst>(U)) {
-      if (HasAddressTaken(SI, VisitedPHIs))
+    case Instruction::BitCast:
+    case Instruction::GetElementPtr:
+    case Instruction::Select:
+      if (HasAddressTaken(I, VisitedPHIs))
         return true;
-    } else if (const PHINode *PN = dyn_cast<PHINode>(U)) {
+      break;
+    case Instruction::PHI: {
       // Keep track of what PHI nodes we have already visited to ensure
       // they are only visited once.
+      const auto *PN = cast<PHINode>(I);
       if (VisitedPHIs.insert(PN).second)
         if (HasAddressTaken(PN, VisitedPHIs))
           return true;
-    } else if (const GetElementPtrInst *GEP = dyn_cast<GetElementPtrInst>(U)) {
-      if (HasAddressTaken(GEP, VisitedPHIs))
-        return true;
-    } else if (const BitCastInst *BI = dyn_cast<BitCastInst>(U)) {
-      if (HasAddressTaken(BI, VisitedPHIs))
-        return true;
+      break;
+    }
+    default:
+      break;
     }
   }
   return false;


        


More information about the llvm-branch-commits mailing list