diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-11-25 22:52:30 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2015-11-25 22:52:30 +0000 |
commit | 9842d61ca4b20a62c5d3dd68201b62d2d3685e09 (patch) | |
tree | 4d36bcc3bd80c23a40b09fc6dafd80014181c0f4 | |
parent | a62513c5dc1d82625fce96ff7182007c6a2171bf (diff) | |
download | bcm5719-llvm-9842d61ca4b20a62c5d3dd68201b62d2d3685e09.tar.gz bcm5719-llvm-9842d61ca4b20a62c5d3dd68201b62d2d3685e09.zip |
[safestack] Fix alignment of dynamic allocas.
Fixes PR25588.
llvm-svn: 254109
-rw-r--r-- | llvm/lib/Transforms/Instrumentation/SafeStack.cpp | 2 | ||||
-rw-r--r-- | llvm/test/Transforms/SafeStack/setjmp2.ll | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/SafeStack.cpp b/llvm/lib/Transforms/Instrumentation/SafeStack.cpp index e51822f6942..6071ca5a875 100644 --- a/llvm/lib/Transforms/Instrumentation/SafeStack.cpp +++ b/llvm/lib/Transforms/Instrumentation/SafeStack.cpp @@ -541,7 +541,7 @@ void SafeStack::moveDynamicAllocasToUnsafeStack( if (DynamicTop) IRB.CreateStore(NewTop, DynamicTop); - Value *NewAI = IRB.CreateIntToPtr(SP, AI->getType()); + Value *NewAI = IRB.CreatePointerCast(NewTop, AI->getType()); if (AI->hasName() && isa<Instruction>(NewAI)) NewAI->takeName(AI); diff --git a/llvm/test/Transforms/SafeStack/setjmp2.ll b/llvm/test/Transforms/SafeStack/setjmp2.ll index 65fd920d63d..bb15d7e03ac 100644 --- a/llvm/test/Transforms/SafeStack/setjmp2.ll +++ b/llvm/test/Transforms/SafeStack/setjmp2.ll @@ -25,7 +25,7 @@ entry: ; CHECK-NEXT: %[[INTTOPTR:.*]] = inttoptr i64 %[[AND]] to i8* ; CHECK-NEXT: store i8* %[[INTTOPTR]], i8** @__safestack_unsafe_stack_ptr ; CHECK-NEXT: store i8* %[[INTTOPTR]], i8** %unsafe_stack_dynamic_ptr - ; CHECK-NEXT: %[[ALLOCA:.*]] = inttoptr i64 %[[SUB]] to i32* + ; CHECK-NEXT: %[[ALLOCA:.*]] = bitcast i8* %[[INTTOPTR]] to i32* %a = alloca i32, i32 %size ; CHECK: setjmp |