Revert "[llvm][StackProtector] Add noreturn to __stack_chk_fail call" (#144452)
Reverts llvm/llvm-project#143976 Reverting since this broke a builder: https://lab.llvm.org/buildbot/#/builders/190/builds/21563
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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"}
|
||||
@@ -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 }
|
||||
Reference in New Issue
Block a user