ObjCExport: optimize receiving autoreleased references from Obj-C/Swift

when the callee supports this.
This commit is contained in:
Svyatoslav Scherbina
2022-01-18 17:18:11 +03:00
committed by Space
parent 874cc6c51c
commit cd62b5b3b3
6 changed files with 202 additions and 20 deletions
@@ -245,6 +245,13 @@ extern "C" const char* Kotlin_callsCheckerGoodFunctionNames[] = {
"llvm.objc.autorelease",
"llvm.objc.autoreleaseReturnValue",
"llvm.objc.retain",
// Not used in Runnable state, but this would be ok.
// If we don't include it to the good functions list, the code generator will emit redundant state check at the callsite,
// and this would ruin the code: the state check would be inserted between retainAutoreleasedReturnValue and the actual call
// producing "autoreleased return value", so the latter won't be able to detect the former, and the autorelease elimination
// won't work.
"llvm.objc.retainAutoreleasedReturnValue",
"llvm.objectsize.*",
"llvm.pow.*",
"llvm.rint.*",