[all-commits] [llvm/llvm-project] 46d5d2: [PowerPC] Improve kill flag computation and add ve...

Nemanja Ivanovic via All-commits all-commits at lists.llvm.org
Fri Sep 22 12:26:53 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 46d5d264fc66a017bbd0182b2b5fcc0f3f23d3be
  Author: Nemanja Ivanovic <nemanja.i.ibm at gmail.com>
  Date:   2023-09-22 (Fri, 22 Sep 2023)

  Changed paths:
    M llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
    M llvm/lib/Target/PowerPC/PPCInstrInfo.h
    M llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
    M llvm/lib/Target/PowerPC/PPCPreEmitPeephole.cpp
    M llvm/test/CodeGen/PowerPC/O3-pipeline.ll
    M llvm/test/CodeGen/PowerPC/combine-sext-and-shl-after-isel.ll
    M llvm/test/CodeGen/PowerPC/convert-ri-addi-to-ri.mir
    M llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-kill-flag.mir
    M llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-out-of-range.mir
    M llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs.mir
    M llvm/test/CodeGen/PowerPC/fixup-kill-dead-flag-crash.mir
    M llvm/test/CodeGen/PowerPC/fold-rlwinm.mir
    M llvm/test/CodeGen/PowerPC/mi-peephole.mir
    M llvm/test/CodeGen/PowerPC/opt-cmp-rec-postra.mir
    M llvm/test/CodeGen/PowerPC/peephole-miscompile-extswsli.mir
    M llvm/test/CodeGen/PowerPC/peephole-phi-acc.mir
    M llvm/test/CodeGen/PowerPC/remove-redundant-li-implicit-reg.mir
    M llvm/test/CodeGen/PowerPC/rlwinm_rldicl_to_andi.mir
    M llvm/test/CodeGen/PowerPC/sext_elimination.mir

  Log Message:
  [PowerPC] Improve kill flag computation and add verification after MI peephole

The MI Peephole pass has grown to include a large number of transformations over the years. Many of the transformations require re-computation of kill flags but don't do a good job of re-computing them. This causes us to have very common failures when the compiler is built with expensive checks. Over time, we added and augmented a function that is supposed to go and fix up kill flags after each transformation but we keep missing cases.
This patch does the following:
- Removes the function to re-compute kill flags
- Adds LiveVariables to compute and maintain kill flags while transforming code
- Adds re-computation of kill flags for the post-RA peepholes for each block that contains a transformed instruction

Reviewed By: stefanp

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

More information about the All-commits mailing list