-
Notifications
You must be signed in to change notification settings - Fork 14k
Revert "[llvm][StackProtector] Add noreturn to __stack_chk_fail call" #144452
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-llvm-transforms Author: None (PiJoules) ChangesReverts llvm/llvm-project#143976 Reverting since this broke a builder: https://lab.llvm.org/buildbot/#/builders/190/builds/21563 Full diff: https://github.com/llvm/llvm-project/pull/144452.diff 3 Files Affected:
diff --git a/llvm/lib/CodeGen/StackProtector.cpp b/llvm/lib/CodeGen/StackProtector.cpp
index dda392d38b27a..5f866eea7d4e7 100644
--- a/llvm/lib/CodeGen/StackProtector.cpp
+++ b/llvm/lib/CodeGen/StackProtector.cpp
@@ -725,8 +725,8 @@ BasicBlock *CreateFailBB(Function *F, const Triple &Trip) {
StackChkFail =
M->getOrInsertFunction("__stack_chk_fail", Type::getVoidTy(Context));
}
- CallInst *Call = B.CreateCall(StackChkFail, Args);
- Call->addFnAttr(Attribute::NoReturn);
+ cast<Function>(StackChkFail.getCallee())->addFnAttr(Attribute::NoReturn);
+ B.CreateCall(StackChkFail, Args);
B.CreateUnreachable();
return FailBB;
}
diff --git a/llvm/test/Transforms/StackProtector/cross-dso-cfi-stack-chk-fail.ll b/llvm/test/Transforms/StackProtector/cross-dso-cfi-stack-chk-fail.ll
deleted file mode 100644
index af03039813a2e..0000000000000
--- a/llvm/test/Transforms/StackProtector/cross-dso-cfi-stack-chk-fail.ll
+++ /dev/null
@@ -1,33 +0,0 @@
-;; This is a minimal reproducer that caused StackProtector to crash with a bad cast when
-;; CrossDSOCFI is used. This test just needs to not crash.
-; RUN: opt -mtriple=x86_64-pc-linux-gnu %s -passes=lowertypetests,cross-dso-cfi,stack-protector
-
-define hidden void @__stack_chk_fail() !type !1{
- unreachable
-}
-
-define void @store_captures() sspstrong {
-entry:
- %a = alloca i32, align 4
- %j = alloca ptr, align 8
- store ptr %a, ptr %j, align 8
- ret void
-}
-
-define void @func(ptr %0) {
-entry:
- %1 = call i1 @llvm.type.test(ptr %0, metadata !"typeid")
- br i1 %1, label %cont, label %trap
-
-trap: ; preds = %entry
- call void @llvm.trap()
- unreachable
-
-cont: ; preds = %entry
- call void %0()
- ret void
-}
-
-!llvm.module.flags = !{!0}
-!0 = !{i32 4, !"Cross-DSO CFI", i32 1}
-!1 = !{i64 0, !"typeid"}
diff --git a/llvm/test/Transforms/StackProtector/stack-chk-fail-alias.ll b/llvm/test/Transforms/StackProtector/stack-chk-fail-alias.ll
deleted file mode 100644
index ab0a6e3f455e7..0000000000000
--- a/llvm/test/Transforms/StackProtector/stack-chk-fail-alias.ll
+++ /dev/null
@@ -1,21 +0,0 @@
-;; __stack_chk_fail should have the noreturn attr even if it is an alias
-; RUN: opt -mtriple=x86_64-pc-linux-gnu %s -passes=stack-protector -S | FileCheck %s
-
-define hidden void @__stack_chk_fail_impl() {
- unreachable
-}
-
-@__stack_chk_fail = hidden alias void (), ptr @__stack_chk_fail_impl
-
-; CHECK-LABEL: @store_captures(
-; CHECK: CallStackCheckFailBlk:
-; CHECK-NEXT: call void @__stack_chk_fail() [[ATTRS:#.*]]
-define void @store_captures() sspstrong {
-entry:
- %a = alloca i32, align 4
- %j = alloca ptr, align 8
- store ptr %a, ptr %j, align 8
- ret void
-}
-
-; CHECK: attributes [[ATTRS]] = { noreturn }
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/18/builds/17575 Here is the relevant piece of the build log for the reference
|
Reverts #143976
Reverting since this broke a builder: https://lab.llvm.org/buildbot/#/builders/190/builds/21563