canBeNullAtBuildTime is associated with a weak symbol while __tls_get_addr is not a weak symbo in the writer, which changes the symbol semantics. The reason I was mentioning about removing the __tls_get_addr atom for the executable is for the code was not PIC. http://reviews.llvm.org/D5505