[all-commits] [llvm/llvm-project] 4a16c5: [InstCombine] Disable unsafe select transform behi...

Nikita Popov via All-commits all-commits at lists.llvm.org
Mon Dec 28 13:44:14 PST 2020


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 4a16c507cb68e425226e81598d91963aacdd57ed
      https://github.com/llvm/llvm-project/commit/4a16c507cb68e425226e81598d91963aacdd57ed
  Author: Nikita Popov <nikita.ppv at gmail.com>
  Date:   2020-12-28 (Mon, 28 Dec 2020)

  Changed paths:
    M llvm/include/llvm/Transforms/InstCombine/InstCombiner.h
    M llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
    A llvm/test/Transforms/InstCombine/select-and-or.ll

  Log Message:
  -----------
  [InstCombine] Disable unsafe select transform behind a flag

This disables the poison-unsafe select -> and/or transform behind
a flag (we continue to perform the fold by default). This is intended
to simplify evaluation and testing while we teach various passes
to directly recognize the select pattern.

This only disables the main select -> and/or transform. A number of
related ones are instead changed to canonicalize to the a ? b : false
and a ? true : b forms which represent and/or respectively. This
requires a bit of care to avoid infinite loops, as we do not want
!a ? b : false to be converted into a ? false : b.

The basic idea here is the same as D93065, but keeps the change
behind a flag for now.

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




More information about the All-commits mailing list