summaryrefslogtreecommitdiff
path: root/lib/CodeGen/StackProtector.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2008-11-06 22:18:44 +0000
committerBill Wendling <isanbard@gmail.com>2008-11-06 22:18:44 +0000
commit703ccfe0538a30d674b52fdbb4f5debf9b062354 (patch)
tree918a3c2f7f160c34b1ca24fb86551a6990b5f5a2 /lib/CodeGen/StackProtector.cpp
parent97f48c39fd158ad1a701002e2d6798c4b4ae4ab8 (diff)
downloadllvm-703ccfe0538a30d674b52fdbb4f5debf9b062354.tar.gz
llvm-703ccfe0538a30d674b52fdbb4f5debf9b062354.tar.bz2
llvm-703ccfe0538a30d674b52fdbb4f5debf9b062354.tar.xz
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
Diffstat (limited to 'lib/CodeGen/StackProtector.cpp')
-rw-r--r--lib/CodeGen/StackProtector.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/lib/CodeGen/StackProtector.cpp b/lib/CodeGen/StackProtector.cpp
index 318be93b40..b1f18edd4c 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<ConstantInt>(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