[all-commits] [llvm/llvm-project] 7fa503: [SROA] rewritePartition()/findCommonType(): if use...

Roman Lebedev via All-commits all-commits at lists.llvm.org
Tue Oct 6 23:21:09 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 7fa503ef4aaddc1c31dd36d970aa6609383e1718
      https://github.com/llvm/llvm-project/commit/7fa503ef4aaddc1c31dd36d970aa6609383e1718
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2020-10-07 (Wed, 07 Oct 2020)

  Changed paths:
    M llvm/lib/Transforms/Scalar/SROA.cpp
    M llvm/test/DebugInfo/ARM/sroa-complex.ll
    M llvm/test/Transforms/SROA/ppcf128-no-fold.ll
    M llvm/test/Transforms/SROA/preserve-nonnull.ll

  Log Message:
  -----------
  [SROA] rewritePartition()/findCommonType(): if uses have conflicting type, try getTypePartition() before falling back to largest integral use type (PR47592)

And another step towards transformss not introducing inttoptr and/or
ptrtoint casts that weren't there already.

In this case, when load/store uses have conflicting types,
instead of falling back to the iN, we can try to use allocated sub-type.
As disscussed, this isn't the best idea overall (we shouldn't rely on
allocated type), but it works fine as a temporary measure.

I've measured, and @ `-O3` as of vanilla llvm test-suite + RawSpeed,
this results in +0.05% more bitcasts, -5.51% less inttoptr
and -1.05% less ptrtoint (at the end of middle-end opt pipeline)

See https://bugs.llvm.org/show_bug.cgi?id=47592

Reviewed By: efriedma

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




More information about the All-commits mailing list