Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:Thunk

36                                               const ThunkInfo &Thunk) {
44 Thunk.This, Out);
46 getCXXABI().getMangleContext().mangleThunk(MD, Thunk, Out);
54 const ThunkInfo &Thunk, llvm::Function *Fn) {
58 static void setThunkProperties(CodeGenModule &CGM, const ThunkInfo &Thunk,
63 !Thunk.Return.isEmpty());
67 setThunkVisibility(CGM, MD, Thunk, ThunkFn);
85 const ThunkInfo &Thunk) {
109 Thunk.Return);
140 // no-op thunk for the regular definition) call va_start/va_end.
146 GlobalDecl GD, const ThunkInfo &Thunk) {
157 // Clone to thunk.
187 CGM.getCXXABI().performThisAdjustment(*this, ThisPtr, Thunk.This);
190 if (!Thunk.Return.isEmpty()) {
198 RV = PerformReturnAdjustment(*this, ResultType, RV, Thunk);
255 const ThunkInfo *Thunk) {
257 "Please use a new CGF for this thunk");
262 Thunk ? CGM.getCXXABI().performThisAdjustment(
263 *this, LoadCXXThisAddress(), Thunk->This)
270 if (Thunk && !Thunk->Return.isEmpty()) {
272 MD, "non-trivial argument copy for return-adjusting thunk");
326 if (Thunk && !Thunk->Return.isEmpty())
327 RV = PerformReturnAdjustment(*this, ResultType, RV, *Thunk);
344 // Emitting a musttail call thunk doesn't use any of the CGCall.cpp machinery
398 GlobalDecl GD, const ThunkInfo &Thunk) {
407 EmitCallAndReturnForThunk(Callee, &Thunk);
410 Thunk,
415 llvm::Constant *C = CGM.GetAddrOfThunk(GD, Thunk);
436 // Remove the name from the old thunk function and get a new thunk.
438 Entry = cast<llvm::GlobalValue>(CGM.GetAddrOfThunk(GD, Thunk));
440 // If needed, replace the old thunk with a bitcast.
447 // Remove the old thunk.
457 // There is already a thunk emitted for this function, do nothing.
461 setThunkProperties(CGM, Thunk, ThunkFn, ForVTable, GD);
470 // expensive/sucky at the moment, so don't generate the thunk unless
476 CodeGenFunction(CGM).GenerateVarArgsThunk(ThunkFn, FnInfo, GD, Thunk);
478 // Normal thunk body generation.
479 CodeGenFunction(CGM).generateThunk(ThunkFn, FnInfo, GD, Thunk);
482 setThunkProperties(CGM, Thunk, ThunkFn, ForVTable, GD);
486 const ThunkInfo &Thunk) {
488 // the thunk. However, we can allow inlining of thunks if we emit them with
501 emitThunk(GD, Thunk, /*ForVTable=*/true);
519 for (const ThunkInfo& Thunk : *ThunkInfoVector)
520 emitThunk(GD, Thunk, /*ForVTable=*/false);
627 // Check if we should use a thunk.
630 const ThunkInfo &Thunk = VTableThunks[NextVTableThunkIndex].second;
632 maybeEmitThunkForVTable(GD, Thunk);
633 Init = CGM.GetAddrOfThunk(GD, Thunk);