forked from OSchip/llvm-project
Pass the globaldecl into GetOrCreateLLVMFunction so that llvm
function attributes like byval get applied to the function definition. This fixes PR7058 and makes i386 llvm/clang bootstrap pass all the same tests as x86-64 bootstrap for me (the llvmc tests still fail in both). llvm-svn: 103131
This commit is contained in:
parent
7e60a6bd71
commit
3baada6fd7
|
@ -2548,7 +2548,7 @@ llvm::Constant *CodeGenModule::GetAddrOfThunk(GlobalDecl GD,
|
|||
getMangleContext().mangleThunk(MD, Thunk, Name);
|
||||
|
||||
const llvm::Type *Ty = getTypes().GetFunctionTypeForVTable(MD);
|
||||
return GetOrCreateLLVMFunction(Name, Ty, GlobalDecl());
|
||||
return GetOrCreateLLVMFunction(Name, Ty, GD);
|
||||
}
|
||||
|
||||
static llvm::Value *PerformTypeAdjustment(CodeGenFunction &CGF,
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
// Non-trivial dtors, should both be passed indirectly.
|
||||
struct S {
|
||||
~S();
|
||||
int s;
|
||||
short s;
|
||||
};
|
||||
|
||||
// CHECK: define void @_Z1fv(%struct.S* sret %
|
||||
|
@ -22,3 +22,32 @@ C g() { return C(); }
|
|||
|
||||
// CHECK: define void @_Z1f1C(%class.C*)
|
||||
void f(C) { }
|
||||
|
||||
|
||||
|
||||
|
||||
// PR7058 - Missing byval on MI thunk definition.
|
||||
|
||||
// CHECK: define void @_ZThn4_N18BasicAliasAnalysis13getModRefInfoE8CallSite
|
||||
// ...
|
||||
// CHECK: %struct.CallSite* byval %CS)
|
||||
struct CallSite {
|
||||
unsigned Ptr;
|
||||
CallSite(unsigned XX) : Ptr(XX) {}
|
||||
};
|
||||
|
||||
struct AliasAnalysis {
|
||||
virtual void xyz();
|
||||
virtual void getModRefInfo(CallSite CS) = 0;
|
||||
};
|
||||
|
||||
struct ModulePass {
|
||||
virtual void xx();
|
||||
};
|
||||
|
||||
struct BasicAliasAnalysis : public ModulePass, public AliasAnalysis {
|
||||
void getModRefInfo(CallSite CS);
|
||||
};
|
||||
|
||||
void BasicAliasAnalysis::getModRefInfo(CallSite CS) {
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue