jyknight added a comment.

Note that this change caused LLVM to no longer be aware that a TLS variable 
cannot be NULL. Thus, code like:

  __thread int x;
  int main() {
    int* y = &x;
    return *y;
  }

built with `clang -O -fsanitize=null` emits a null-pointer check, when it 
wouldn't previously. I think llvm.threadlocal.address's return value probably 
ought to be given the nonnull attribute. We also might want to infer other 
properties of the returned pointer based on knowledge of the global value 
parameter, such as alignment.

Furthermore, while the above problem should simply be a very minor optimization 
degradation, in fact it caused miscompiles, due to a pre-existing bug in the 
X86 backend. I've sent https://reviews.llvm.org/D131716 to fix //that// part of 
the problem.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129833/new/

https://reviews.llvm.org/D129833

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to