[all-commits] [llvm/llvm-project] fc8240: [Attributor] Simplify operands inside of simplific...

Johannes Doerfert via All-commits all-commits at lists.llvm.org
Tue Jul 6 20:45:02 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: fc82409b5ce5ddcd038ff0bf192a9a2a03b23020
      https://github.com/llvm/llvm-project/commit/fc82409b5ce5ddcd038ff0bf192a9a2a03b23020
  Author: Johannes Doerfert <johannes at jdoerfert.de>
  Date:   2021-07-06 (Tue, 06 Jul 2021)

  Changed paths:
    M llvm/include/llvm/Transforms/IPO/Attributor.h
    M llvm/lib/Transforms/IPO/Attributor.cpp
    M llvm/lib/Transforms/IPO/AttributorAttributes.cpp
    M llvm/test/Transforms/Attributor/ArgumentPromotion/inalloca.ll
    M llvm/test/Transforms/Attributor/IPConstantProp/PR16052.ll
    M llvm/test/Transforms/Attributor/callgraph.ll
    M llvm/test/Transforms/Attributor/cb_range_enabled.ll
    M llvm/test/Transforms/Attributor/cgscc_bugs.ll
    M llvm/test/Transforms/Attributor/depgraph.ll
    M llvm/test/Transforms/Attributor/dereferenceable-1.ll
    M llvm/test/Transforms/Attributor/internalize.ll
    M llvm/test/Transforms/Attributor/liveness.ll
    M llvm/test/Transforms/Attributor/lvi-after-jumpthreading.ll
    M llvm/test/Transforms/Attributor/nonnull.ll
    M llvm/test/Transforms/Attributor/potential.ll
    M llvm/test/Transforms/Attributor/range.ll
    M llvm/test/Transforms/Attributor/value-simplify-pointer-info.ll
    M llvm/test/Transforms/Attributor/value-simplify.ll
    M llvm/test/Transforms/Attributor/willreturn.ll

  Log Message:
  -----------
  [Attributor] Simplify operands inside of simplification AAs first

When we do simplification via AAPotentialValues or AAValueConstantRange
we need to simplify the operands of an instruction we deconstruct first.
This does not only improve the result, see for example range.ll, but is
required as we allow outside AAs to provide simplification rules via
callbacks. If we do ignore the simplification rules and base other
simplifications on the IR instead we can create an inconsistent state.


  Commit: aa3768278d4b1c91e6e55b596fa0d832a25428dc
      https://github.com/llvm/llvm-project/commit/aa3768278d4b1c91e6e55b596fa0d832a25428dc
  Author: Johannes Doerfert <johannes at jdoerfert.de>
  Date:   2021-07-06 (Tue, 06 Jul 2021)

  Changed paths:
    M llvm/include/llvm/Transforms/IPO/Attributor.h
    M llvm/lib/Transforms/IPO/Attributor.cpp
    M llvm/lib/Transforms/IPO/AttributorAttributes.cpp
    M llvm/test/Transforms/Attributor/dereferenceable-1.ll
    M llvm/test/Transforms/Attributor/liveness.ll
    M llvm/test/Transforms/Attributor/lvi-after-jumpthreading.ll
    M llvm/test/Transforms/Attributor/nocapture-2.ll
    M llvm/test/Transforms/Attributor/nonnull.ll
    M llvm/test/Transforms/Attributor/potential.ll
    M llvm/test/Transforms/Attributor/range.ll
    M llvm/test/Transforms/Attributor/returned.ll
    M llvm/test/Transforms/Attributor/value-simplify.ll

  Log Message:
  -----------
  [Attributor] Introduce a helper function to deal with undef + none

We often need to deal with the value lattice that contains none and
undef as special values. A simple helper makes this much nicer.

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


  Commit: 9bd2ee07885cc1ef47dedd0b827908f51fb3565f
      https://github.com/llvm/llvm-project/commit/9bd2ee07885cc1ef47dedd0b827908f51fb3565f
  Author: Johannes Doerfert <johannes at jdoerfert.de>
  Date:   2021-07-06 (Tue, 06 Jul 2021)

  Changed paths:
    M llvm/test/Transforms/Attributor/heap_to_stack.ll

  Log Message:
  -----------
  [Attriibutor][NFC] Precommit heap-2-stack test case


  Commit: 168a9234d7bbeebec3a5f16c619b68a3eba7b114
      https://github.com/llvm/llvm-project/commit/168a9234d7bbeebec3a5f16c619b68a3eba7b114
  Author: Johannes Doerfert <johannes at jdoerfert.de>
  Date:   2021-07-06 (Tue, 06 Jul 2021)

  Changed paths:
    M llvm/include/llvm/Transforms/IPO/Attributor.h
    M llvm/lib/Transforms/IPO/Attributor.cpp
    M llvm/test/Transforms/Attributor/potential.ll

  Log Message:
  -----------
  [Attributor][FIX] Replace uses first, then values

Before we replaced value by registering all their uses. However, as we
replace a value old uses become stale. We now replace values explicitly
and keep track of "new values" when doing so to avoid replacing only
uses in stale/old values but not their replacements.


Compare: https://github.com/llvm/llvm-project/compare/11d88c4acb68...168a9234d7bb


More information about the All-commits mailing list