forked from OSchip/llvm-project
Call CGM.SetLLVMFunctionAttributesForDefinition on thunks so that they get
attributes like uwtable. Without uwtable a stack unwinder would be unable to go past the thunks. llvm-svn: 164411
This commit is contained in:
parent
2efe53e448
commit
86792438dc
|
@ -466,6 +466,8 @@ void CodeGenVTables::EmitThunk(GlobalDecl GD, const ThunkInfo &Thunk,
|
|||
return;
|
||||
}
|
||||
|
||||
CGM.SetLLVMFunctionAttributesForDefinition(GD.getDecl(), ThunkFn);
|
||||
|
||||
if (ThunkFn->isVarArg()) {
|
||||
// Varargs thunks are special; we can't just generate a call because
|
||||
// we can't copy the varargs. Our implementation is rather
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: %clang_cc1 %s -triple=x86_64-pc-linux-gnu -emit-llvm -o - | FileCheck %s
|
||||
// RUN: %clang_cc1 %s -triple=x86_64-pc-linux-gnu -fhidden-weak-vtables -emit-llvm -o - | FileCheck -check-prefix=HIDDEN %s
|
||||
// RUN: %clang_cc1 %s -triple=x86_64-pc-linux-gnu -munwind-tables -emit-llvm -o - | FileCheck %s
|
||||
// RUN: %clang_cc1 %s -triple=x86_64-pc-linux-gnu -munwind-tables -fhidden-weak-vtables -emit-llvm -o - | FileCheck -check-prefix=HIDDEN %s
|
||||
|
||||
namespace Test1 {
|
||||
|
||||
|
@ -327,6 +327,21 @@ namespace Test13 {
|
|||
// CHECK: ret %"struct.Test13::D"*
|
||||
}
|
||||
|
||||
namespace Test14 {
|
||||
class A {
|
||||
virtual void f();
|
||||
};
|
||||
class B {
|
||||
virtual void f();
|
||||
};
|
||||
class C : public A, public B {
|
||||
virtual void f();
|
||||
};
|
||||
void C::f() {
|
||||
}
|
||||
// CHECK: define void @_ZThn8_N6Test141C1fEv({{.*}}) {{.*}} uwtable
|
||||
}
|
||||
|
||||
/**** The following has to go at the end of the file ****/
|
||||
|
||||
// This is from Test5:
|
||||
|
|
Loading…
Reference in New Issue