[all-commits] [llvm/llvm-project] a587bf: [NFC][SimplifyCFG] Count the number of invokes tur...

Roman Lebedev via All-commits all-commits at lists.llvm.org
Sat Aug 8 10:04:48 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: a587bf3eb074340710a36c0c00c16dadcf5adb79
      https://github.com/llvm/llvm-project/commit/a587bf3eb074340710a36c0c00c16dadcf5adb79
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2020-08-08 (Sat, 08 Aug 2020)

  Changed paths:
    M llvm/lib/Transforms/Utils/SimplifyCFG.cpp

  Log Message:
  -----------
  [NFC][SimplifyCFG] Count the number of invokes turned into calls due to empty cleanup blocks


  Commit: c2ebb3246551eb144fb4d684bc597c9495c0d0c0
      https://github.com/llvm/llvm-project/commit/c2ebb3246551eb144fb4d684bc597c9495c0d0c0
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2020-08-08 (Sat, 08 Aug 2020)

  Changed paths:
    A llvm/test/Transforms/SimplifyCFG/invoke_unwind_lifetime.ll

  Log Message:
  -----------
  [NFC][SimplifyCFG] Add a test showing invoke->call simplification failure


  Commit: 1f452ac1d784dbeba983aed7986827e3a7cd9c59
      https://github.com/llvm/llvm-project/commit/1f452ac1d784dbeba983aed7986827e3a7cd9c59
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2020-08-08 (Sat, 08 Aug 2020)

  Changed paths:
    M llvm/lib/Transforms/Utils/SimplifyCFG.cpp

  Log Message:
  -----------
  [NFC][SimplifyCFG] Rewrite isCleanupBlockEmpty() to be iterator_range-based


  Commit: e492f0e03b01a5e4ec4b6333abb02d303c3e479e
      https://github.com/llvm/llvm-project/commit/e492f0e03b01a5e4ec4b6333abb02d303c3e479e
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2020-08-08 (Sat, 08 Aug 2020)

  Changed paths:
    M llvm/lib/Transforms/Utils/SimplifyCFG.cpp
    M llvm/test/Transforms/SimplifyCFG/invoke_unwind_lifetime.ll

  Log Message:
  -----------
  [SimplifyCFG] Fix invoke->call fold w/ multiple invokes in presence of lifetime intrinsics

SimplifyCFG has two main folds for resumes - one when resume is directly
using the landingpad, and the other one where resume is using a PHI node.

While for the first case, we were already correctly ignoring all the
PHI nodes, and both the debug info intrinsics and lifetime intrinsics,
in the PHI-based-one, we weren't ignoring PHI's in the resume block,
and weren't ignoring lifetime intrinsics. That is clearly a bug.

On RawSpeed library, this results in +9.34% (+81) more invoke->call folds,
-0.19% (-39) landing pads, -0.24% (-81) invoke instructions
but +51 call instructions and -132 basic blocks.

Though, the run-time performance impact appears to be within the noise.


Compare: https://github.com/llvm/llvm-project/compare/99cd56906a4d...e492f0e03b01


More information about the All-commits mailing list