aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/StackProtector.cpp
diff options
context:
space:
mode:
authorLeonard Chan <leonardchan@google.com>2025-07-16 13:09:04 -0700
committerLeonard Chan <leonardchan@google.com>2025-07-16 13:12:28 -0700
commit94382c8e56e878d1b6a8cf317e3632df5352e23e (patch)
tree82d93c97fd4769ea73d412b6ffdca88666f8e232 /llvm/lib/CodeGen/StackProtector.cpp
parent3a6ef8b359fc3f2459ef60013b8938ebe847831b (diff)
downloadllvm-94382c8e56e878d1b6a8cf317e3632df5352e23e.zip
llvm-94382c8e56e878d1b6a8cf317e3632df5352e23e.tar.gz
llvm-94382c8e56e878d1b6a8cf317e3632df5352e23e.tar.bz2
[llvm][StackProtector] Add noreturn to __stack_chk_fail call (#143976)
This is a reland for 99e53cb4139eda491f97cb33ee42ea424d352200 with the appropriate test fixes. It's possible for __stack_chk_fail to be an alias when using CrossDSOCFI since it will make a jump table entry for this function and replace it with an alias. StackProtector can crash since it always expects this to be a regular function. Instead add the noreturn attribute to the call.
Diffstat (limited to 'llvm/lib/CodeGen/StackProtector.cpp')
-rw-r--r--llvm/lib/CodeGen/StackProtector.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/StackProtector.cpp b/llvm/lib/CodeGen/StackProtector.cpp
index 9cc9af8..b79911b 100644
--- a/llvm/lib/CodeGen/StackProtector.cpp
+++ b/llvm/lib/CodeGen/StackProtector.cpp
@@ -731,8 +731,8 @@ BasicBlock *CreateFailBB(Function *F, const TargetLowering &TLI) {
}
if (StackChkFail) {
- cast<Function>(StackChkFail.getCallee())->addFnAttr(Attribute::NoReturn);
- B.CreateCall(StackChkFail, Args);
+ CallInst *Call = B.CreateCall(StackChkFail, Args);
+ Call->addFnAttr(Attribute::NoReturn);
}
B.CreateUnreachable();