[PATCH] D99853: [InstSimplify] Teach isUndefValue to understand const vector with both undef & poison

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 8 00:39:57 PDT 2021


lebedev.ri added a comment.

In D99853#2675873 <https://reviews.llvm.org/D99853#2675873>, @aqjune wrote:

> In D99853#2667983 <https://reviews.llvm.org/D99853#2667983>, @nikic wrote:
>
>> This problem isn't really limited to this one function in InstSimplify. Might it make sense to adjust UndefValue to actually represent such constants? We'd have to add a bitmask to it that indicates which values are poison.
>
> Hi,
> There is ConstantStruct as well, so to make support that case UndefValue needs to store individual elements, I guess.
>
> What do you think about updating `m_Undef` pattern matcher to recognize constants like `<undef, poison>` & replacing `isa<UndefValue>(V)` with `match(V, m_Undef())`? 
> The benefit is that we don't need to add to UndefValue the data structures ConstantAggregate is having.
>
> p.s:  BTW, `ConstantStruct::get` and `ConstantArray::getImpl` are not returning `poison` even if all elements are poison. I'll make a commit that applies the change that was made to `ConstantVector::getImpl` in the past.

+1 to fixing matcher


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99853/new/

https://reviews.llvm.org/D99853



More information about the llvm-commits mailing list