[all-commits] [llvm/llvm-project] 8b51e5: [NewPM][Inliner] Make inlined calls to functions i...

Timm Bäder via All-commits all-commits at lists.llvm.org
Tue Mar 8 19:23:36 PST 2022


  Branch: refs/heads/release/14.x
  Home:   https://github.com/llvm/llvm-project
  Commit: 8b51e5ee0a2e6a38886e7ededd3267443cb99f1e
      https://github.com/llvm/llvm-project/commit/8b51e5ee0a2e6a38886e7ededd3267443cb99f1e
  Author: Arthur Eubanks <aeubanks at google.com>
  Date:   2022-03-08 (Tue, 08 Mar 2022)

  Changed paths:
    M llvm/include/llvm/Analysis/InlineCost.h
    M llvm/lib/Analysis/InlineCost.cpp
    M llvm/lib/Transforms/IPO/Inliner.cpp
    M llvm/test/Transforms/Inline/inline-cost-attributes.ll
    A llvm/test/Transforms/Inline/mut-rec-scc-2.ll
    A llvm/test/Transforms/Inline/mut-rec-scc.ll

  Log Message:
  -----------
  [NewPM][Inliner] Make inlined calls to functions in same SCC as callee exponentially expensive

Introduce a new attribute "function-inline-cost-multiplier" which
multiplies the inline cost of a call site (or all calls to a callee) by
the multiplier.

When processing the list of calls created by inlining, check each call
to see if the new call's callee is in the same SCC as the original
callee. If so, set the "function-inline-cost-multiplier" attribute of
the new call site to double the original call site's attribute value.
This does not happen when the original call site is intra-SCC.

This is an alternative to D120584, which marks the call sites as
noinline.

Hopefully fixes PR45253.

Reviewed By: davidxl

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

(cherry picked from commit 53e5e586709a329370ea268a8e8191b16fd641b7)


  Commit: da3953fb0315c0e65cc12479f3cd56a1dad7bc3f
      https://github.com/llvm/llvm-project/commit/da3953fb0315c0e65cc12479f3cd56a1dad7bc3f
  Author: Andrew Wei <weiwei64 at huawei.com>
  Date:   2022-03-08 (Tue, 08 Mar 2022)

  Changed paths:
    A llvm/test/Transforms/PhaseOrdering/simplifycfg-switch-lowering-vs-correlatedpropagation.ll

  Log Message:
  -----------
  [NFC][PhaseOrdering] Add some tests from D119839

Based on original tests from D119839.

See https://github.com/llvm/llvm-project/issues/53853


  Commit: ba9ff030d302910e0d2155536558f71da98d5a5a
      https://github.com/llvm/llvm-project/commit/ba9ff030d302910e0d2155536558f71da98d5a5a
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2022-03-08 (Tue, 08 Mar 2022)

  Changed paths:
    M llvm/include/llvm/Transforms/Utils/SimplifyCFGOptions.h
    M llvm/lib/Passes/PassBuilder.cpp
    M llvm/lib/Passes/PassBuilderPipelines.cpp
    M llvm/lib/Passes/PassRegistry.def
    M llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
    M llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
    M llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
    M llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp
    M llvm/lib/Transforms/Utils/SimplifyCFG.cpp
    M llvm/test/Other/new-pm-print-pipeline.ll
    M llvm/test/Transforms/Coroutines/coro-catchswitch-cleanuppad.ll
    M llvm/test/Transforms/LoopUnroll/ARM/upperbound.ll
    M llvm/test/Transforms/PhaseOrdering/simplifycfg-switch-lowering-vs-correlatedpropagation.ll
    M llvm/test/Transforms/SimplifyCFG/DeadSetCC.ll
    M llvm/test/Transforms/SimplifyCFG/EqualPHIEdgeBlockMerge.ll
    M llvm/test/Transforms/SimplifyCFG/FoldValueComparisonIntoPredecessors-no-new-successors.ll
    M llvm/test/Transforms/SimplifyCFG/ForwardSwitchConditionToPHI.ll
    M llvm/test/Transforms/SimplifyCFG/preserve-branchweights.ll
    M llvm/test/Transforms/SimplifyCFG/switch-dead-default.ll
    M llvm/test/Transforms/SimplifyCFG/switch-range-to-icmp.ll
    M llvm/test/Transforms/SimplifyCFG/switch-to-icmp.ll
    M llvm/test/Transforms/SimplifyCFG/switch_create-custom-dl.ll
    M llvm/test/Transforms/SimplifyCFG/switch_create.ll

  Log Message:
  -----------
  [SimplifyCFG][PhaseOrdering] Defer lowering switch into an integer range comparison and branch until after at least the IPSCCP

That transformation is lossy, as discussed in
https://github.com/llvm/llvm-project/issues/53853
and https://github.com/rust-lang/rust/issues/85133#issuecomment-904185574

This is an alternative to D119839,
which would add a limited IPSCCP into SimplifyCFG.

Unlike lowering switch to lookup, we still want this transformation
to happen relatively early, but after giving a chance for the things
like CVP to do their thing. It seems like deferring it just until
the IPSCCP is enough for the tests at hand, but perhaps we need to
be more aggressive and disable it until CVP.

Fixes https://github.com/llvm/llvm-project/issues/53853
Refs. https://github.com/rust-lang/rust/issues/85133

Reviewed By: nikic

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


  Commit: d843bde69aab7fbb3efff34229e8876b1ce80a5b
      https://github.com/llvm/llvm-project/commit/d843bde69aab7fbb3efff34229e8876b1ce80a5b
  Author: Timm Bäder <tbaeder at redhat.com>
  Date:   2022-03-08 (Tue, 08 Mar 2022)

  Changed paths:
    M clang/lib/Driver/ToolChains/PPCLinux.cpp

  Log Message:
  -----------
  [clang][driver] Fix float128 diagnostics with glibc >= 2.32

Fix checking for an unsupported stdlib++.

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

(cherry picked from commit 5b7941ad7c893b4bb019e3c96b760b0f2670ccfc)


Compare: https://github.com/llvm/llvm-project/compare/6a713120502a...d843bde69aab


More information about the All-commits mailing list