We're seeing that the ObjCARCContract pass never runs in llc (at any optimization level!) when bitcode is lowered to assembly. As a result, ARC-enabled code becomes unlinkable. We can run the pass manually, but it'd be preferred to have this rolled somewhere logical like pass configuration. I see that there was a previous discussion about how to appropriately remove them. Did anything ever come about? I've attempted running the pass "always" per the original discussion. While that works for me, I doubt it's acceptable for all languages, targets, etc. See my strawman patch. Any recommendations on a smaller hammer fix that would be upstreamable? I like the idea of a cleanup pass, but even that seems too special case. Joe ______________________________ Joe Abbey Senior Director of Product Development Arxan Technologies jabbey at arxan.com<mailto:jabbey at arxan.com> www.arxan.com<http://www.arxan.com/> Protecting the App Economy™ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130918/d6734ddd/attachment.html> -------------- next part -------------- A non-text attachment was scrubbed... Name: ObjCARCContractStrawman.patch Type: application/octet-stream Size: 722 bytes Desc: ObjCARCContractStrawman.patch URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130918/d6734ddd/attachment.obj> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130918/d6734ddd/attachment.htm>
On Sep 18, 2013, at 3:19 PM, Joe Abbey <jabbey at arxan.com> wrote:> We're seeing that the ObjCARCContract pass never runs in llc (at any optimization level!) when bitcode is lowered to assembly. As a result, ARC-enabled code becomes unlinkable. We can run the pass manually, but it'd be preferred to have this rolled somewhere logical like pass configuration. > > I see that there was a previous discussion about how to appropriately remove them. Did anything ever come about? > > I've attempted running the pass "always" per the original discussion. While that works for me, I doubt it's acceptable for all languages, targets, etc. See my strawman patch. > > Any recommendations on a smaller hammer fix that would be upstreamable? I like the idea of a cleanup pass, but even that seems too special case.As long as language-specific “intrinsics" exist, I think you just have to assume that language-specific cleanup passes will be necessary. I don’t think you can solve this with architecture. John.