[all-commits] [llvm/llvm-project] cbde24: Add getDemandedBits for uses.

Joseph Tremoulet via All-commits all-commits at lists.llvm.org
Wed Jun 2 07:08:17 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: cbde2487367a54355329c5fb942914627e01e598
      https://github.com/llvm/llvm-project/commit/cbde2487367a54355329c5fb942914627e01e598
  Author: Qunyan Mangus <qumangus at microsoft.com>
  Date:   2021-06-02 (Wed, 02 Jun 2021)

  Changed paths:
    M llvm/include/llvm/Analysis/DemandedBits.h
    M llvm/lib/Analysis/DemandedBits.cpp
    M llvm/test/Analysis/DemandedBits/basic.ll

  Log Message:
  -----------
  Add getDemandedBits for uses.

Add getDemandedBits method for uses so we can query demanded bits for each use.  This can help getting better use information. For example, for the code below
define i32 @test_use(i32 %a) {
  %1 = and i32 %a, -256
  %2 = or i32 %1, 1
  %3 = trunc i32 %2 to i8 (didn't optimize this to 1 for illustration purpose)
  ... some use of %3
  ret %2
}
if we look at the demanded bit of %2 (which is all 32 bits because of the return), we would conclude that %a is used regardless of how its return is used. However, if we look at each use separately, we will see that the demanded bit of %2 in trunc only uses the lower 8 bits of %a which is redefined, therefore %a's usage depends on how the function return is used.

Reviewed By: RKSimon

Differential Revision: https://reviews.llvm.org/D97074




More information about the All-commits mailing list