mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Add a new parameter convention @in_cxx for non-trivial C++ classes that are passed indirectly and destructed by the caller (#73019)
This corresponds to the parameter-passing convention of the Itanium C++ ABI, in which the argument is passed indirectly and possibly modified, but not destroyed, by the callee. @in_cxx is handled the same way as @in in callers and @in_guaranteed in callees. OwnershipModelEliminator emits the call to destroy_addr that is needed to destroy the argument in the caller. rdar://122707697
This commit is contained in:
@@ -610,6 +610,7 @@ inline bool SILModuleConventions::isIndirectSILParam(SILParameterInfo param,
|
||||
|
||||
case ParameterConvention::Indirect_In:
|
||||
case ParameterConvention::Indirect_In_Guaranteed:
|
||||
case ParameterConvention::Indirect_In_CXX:
|
||||
return isTypeIndirectForIndirectParamConvention(param.getInterfaceType(),
|
||||
loweredAddresses);
|
||||
case ParameterConvention::Indirect_Inout:
|
||||
|
||||
Reference in New Issue
Block a user