[all-commits] [llvm/llvm-project] 6bbccd: GlobalsModRef, ValueTracking: Look through threadl...

Matthias Braun via All-commits all-commits at lists.llvm.org
Fri Apr 19 10:02:04 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 6bbccd2516c3a843809a8303da48abce58a88855
      https://github.com/llvm/llvm-project/commit/6bbccd2516c3a843809a8303da48abce58a88855
  Author: Matthias Braun <matze at braunis.de>
  Date:   2024-04-19 (Fri, 19 Apr 2024)

  Changed paths:
    M llvm/include/llvm/Analysis/ValueTracking.h
    M llvm/lib/Analysis/GlobalsModRef.cpp
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/test/Analysis/GlobalsModRef/nonescaping-noalias.ll
    M llvm/test/CodeGen/PowerPC/aix-small-local-dynamic-tls-largeaccess.ll
    M llvm/test/CodeGen/PowerPC/aix-small-local-exec-tls-largeaccess.ll
    M llvm/test/CodeGen/PowerPC/aix-small-tls-globalvarattr-funcattr.ll
    M llvm/test/CodeGen/X86/threadlocal_address.ll

  Log Message:
  -----------
  GlobalsModRef, ValueTracking: Look through threadlocal.address intrinsic (#88418)

This improves handling of `threadlocal.address` intrinsic in analyses:

The thread-id cannot change within a function with the exception of
suspend points of pre-split coroutines. This changes
`llvm::getUnderlyingObject` to look through `threadlocal.address` in
these cases.

`GlobalsAAResult::AnalyzeUsesOfPointer` checks whether an address can be
traced to simple loads/stores or escapes to other places. Starting the
analysis from a thread-local `GlobalValue` the `threadlocal.address`
intrinsic is safe to skip here.

This improves issue #87437



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list