LGTM
On 16 May 2016 at 14:03, Steven Wu <steve...@apple.com> wrote: > >> On May 16, 2016, at 6:52 AM, Rafael Espíndola <rafael.espind...@gmail.com> >> wrote: >> >> + auto Used = collectUsedGlobalVariables(*M, UsedGlobals, true); >> >> Please use an explicit type instead of auto. > > Sure. > >> >> You deleted the assert > > Are you referring to the assertion that llvm.embedded.module has no uses. I > added it back to check it has exactly one use. > > Attach the final patch with testcase. > > Steven > > > > >> >> I think this is fine otherwise. >> >> Cheers, >> Rafael >> >> >> >> >> >> On 13 May 2016 at 20:00, Steven Wu <steve...@apple.com> wrote: >>> >>>> On May 13, 2016, at 3:56 PM, Duncan P. N. Exon Smith >>>> <dexonsm...@apple.com> wrote: >>>> >>>> Is this something that you need the linker to treat as "used", or just >>>> something you don't want the compiler to drop? If the latter, >>>> @llvm.compiler.used seems more appropriate. >>> >>> Bitcode is actually not really used by the compiler during compilation and >>> shouldn't really used by any part of the code. llvm.compiler.used then. >>> >>> New patch. >>> >>> >>> >>> >>> Steven >>> >>>> >>>>> On 2016-May-13, at 14:01, Steven Wu <steve...@apple.com> wrote: >>>>> >>>>> Attach a patch using private linkage type and adding to llvm.used. I have >>>>> to recreate llvm.used when embedding bitcode. I don't really like it but >>>>> I don't have better solutions. >>>>> Few other options: >>>>> 1. Not allowing re-embedded bitcode will simplify the code a bit but not >>>>> a lot. >>>>> 2. Create a new "llvm.*.used" variable in llvm.metadata section. >>>>> 3. Teach optimizer do not optimize away llvm.* variables. >>>>> >>>>> <0001-Fix-embed-bitcode-linkage-type.patch> >>>>> >>>>> Steven >>>>> >>>>>> On May 13, 2016, at 10:10 AM, Rafael Espíndola >>>>>> <rafael.espind...@gmail.com> wrote: >>>>>> >>>>>> On 13 May 2016 at 13:02, Steven Wu <steve...@apple.com> wrote: >>>>>>> Hi Rafael >>>>>>> >>>>>>> Thanks for notice this! That would definitely cause duplicated symbol >>>>>>> error and I should definitely change that. >>>>>>> Here is some background: >>>>>>> ld64 in Xcode 7+ knows how to handle the embedded bitcode correctly but >>>>>>> not the ones in earlier Xcode. The old ld64 will simply concatenate the >>>>>>> bitcode files which is not the right thing to do. So there is a symbol >>>>>>> generated at the place to prevent user to link the bitcode object file >>>>>>> with old ld64 because older ld64 will fail and report duplicated >>>>>>> symbols. >>>>>>> I have a radar tracking to change the linkage type when upstream but I >>>>>>> dropped the ball on that one. The correct thing to do is to make it >>>>>>> internal and add to llvm.used. I will come up with a patch. >>>>>> >>>>>> Thank you so much! >>>>>> >>>>>> Cheers, >>>>>> Rafael >>>>> >>>> >>> >>> > > _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits