[llvm-dev] funnel shift, select, and poison
John Regehr via llvm-dev
llvm-dev at lists.llvm.org
Tue Feb 26 13:06:24 PST 2019
> Transforms/InstCombine/select.ll
> ================================
> define i1 @trueval_is_true(i1 %C, i1 %X) {
> %R = select i1 %C, i1 1, i1 %X
> ret i1 %R
> }
> =>
> define i1 @trueval_is_true(i1 %C, i1 %X) {
> %R = or i1 %C, %X
> ret i1 %R
> }
> ERROR: Target is more poisonous than source (when %C = #x1 & %X = poison)
>
> (there are many variations of these select->arithmetic transformations)
This particular little family of transformations can be reliably done by
all of the backends I looked at, so disabling them at the IR level
should be OK. See a bit more discussion here:
> https://bugs.llvm.org/show_bug.cgi?id=40768
John
More information about the llvm-dev
mailing list