<div>Hi:</div><div>One of my users suggested that my transform passes yields unlinkable object files. I ran llvm-nm on the input Bitcode and noticed there is one remaining clang.arc.use callsite like the following:</div><div><br></div><div>```</div><div>.....</div><div>call void (...) @clang.arc.use(i8* bitcast (%struct.__NSConstantString_tag* @_unnamed_cfstring_.4 to i8*)) #5, !dbg !74</div><div>.....</div><div><div>!llvm.dbg.cu = !{!0}</div><div>!clang.arc.retainAutoreleasedReturnValueMarker = !{!18}</div><div>!llvm.module.flags = !{!19, !20, !21, !22, !23, !24, !25, !26, !27}</div><div>!llvm.linker.options = !{!28, !29, !30, !31}</div><div>!llvm.ident = !{!32}</div></div><div>```</div><div>I then tried to skip the transform pass entirely and manually Expand ARC markers using the following command:</div><div><br></div><div>```</div><div><div>λ : >>> bin/opt -objc-arc-expand ~/Downloads/OBDemo.bc -objc-arc -o OBDemoNoARC.bc</div><div>λ : >>> bin/llvm-nm OBDemoNoARC.bc</div><div>---------------- t +[OBDemo P1]</div><div>---------------- t +[OBDemo myName]</div><div>                 U _NSLog</div><div>                 U _OBJC_CLASS_$_NSArray</div><div>                 U _OBJC_CLASS_$_NSObject</div><div>                 U _OBJC_CLASS_$_NSString</div><div>---------------- D _OBJC_CLASS_$_OBDemo</div><div>                 U _OBJC_METACLASS_$_NSObject</div><div>---------------- D _OBJC_METACLASS_$_OBDemo</div><div>                 U ___CFConstantStringClassReference</div><div>                 U __objc_empty_cache</div><div>                 U _clang.arc.use</div><div>                 U _objc_msgSend</div><div>                 U _objc_release</div><div>                 U _objc_retainAutoreleasedReturnValue</div></div><div>```</div><div><br></div><div>Which you can see the function is still referenced.</div><div> I don't have a reproducible ObjC Code for this issue since the users said, which I quote here "I changed another computer and the issue no longer appears, magic".</div><div><br></div><div>So, my question is, are those passes supposed to ignore such callsites or am I doing something really wrong here?</div><div><br></div><div><includetail><!--<![endif]--></includetail></div>