[all-commits] [llvm/llvm-project] 91836f: [LVI][CVP] Handle (x | y) < C style conditions

Nikita Popov via All-commits all-commits at lists.llvm.org
Wed Jul 1 11:47:58 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 91836fd7f3c128b4c608bd4b389a64ff4ac1db8a
      https://github.com/llvm/llvm-project/commit/91836fd7f3c128b4c608bd4b389a64ff4ac1db8a
  Author: Nikita Popov <nikita.ppv at gmail.com>
  Date:   2020-07-01 (Wed, 01 Jul 2020)

  Changed paths:
    M llvm/lib/Analysis/LazyValueInfo.cpp
    M llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll

  Log Message:
  -----------
  [LVI][CVP] Handle (x | y) < C style conditions

InstCombine may convert conditions like (x < C) && (y < C) into
(x | y) < C (for some C). This patch teaches LVI to recognize that
in this case, it can infer either x < C or y < C along the edge.

This fixes the issue reported at
https://github.com/rust-lang/rust/issues/73827.

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




More information about the All-commits mailing list