From 703ccfe0538a30d674b52fdbb4f5debf9b062354 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Thu, 6 Nov 2008 22:18:44 +0000 Subject: [PATCH] The size limit is for individual arrays. So if any array has more than 8 bytes in it, then emit stack protectors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58819 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/StackProtector.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/CodeGen/StackProtector.cpp b/lib/CodeGen/StackProtector.cpp index 318be93b40d..b1f18edd4c6 100644 --- a/lib/CodeGen/StackProtector.cpp +++ b/lib/CodeGen/StackProtector.cpp @@ -192,9 +192,6 @@ bool StackProtector::RequiresStackProtector() const { default: return false; case SSP::ALL: return true; case SSP::SOME: { - // If the size of the local variables allocated on the stack is greater than - // SSPBufferSize, then we require a stack protector. - uint64_t StackSize = 0; const TargetData *TD = TLI->getTargetData(); for (Function::iterator I = F->begin(), E = F->end(); I != E; ++I) { @@ -208,9 +205,10 @@ bool StackProtector::RequiresStackProtector() const { if (ConstantInt *CI = dyn_cast(AI->getArraySize())) { const Type *Ty = AI->getAllocatedType(); uint64_t TySize = TD->getABITypeSize(Ty); - StackSize += TySize * CI->getZExtValue(); // Total allocated size. - if (SSPBufferSize <= StackSize) + // If an array has more than 8 bytes of allocated space, then we + // emit stack protectors. + if (SSPBufferSize <= TySize * CI->getZExtValue()) return true; } else { // This is a call to alloca with a variable size. Default to adding -- 2.11.0