[llvm-dev] After InstCombine pass, expected output got changed
Rohit Aggarwal via llvm-dev
llvm-dev at lists.llvm.org
Fri Aug 20 05:45:19 PDT 2021
Hi Florian,
On Thu, Aug 19, 2021 at 3:46 PM Florian Hahn <florian_hahn at apple.com> wrote:
>
>
> On 19 Aug 2021, at 11:01, Rohit Aggarwal via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>
> Hi All,
>
> Thanks Florian for response.
>
> Adding more details to the issue:
>
> - I revert the commit [ConstantFold] Allow propagation of poison for
> and/or i1
> <https://github.com/llvm/llvm-project/commit/2fd3037ac615643fe8058292d2b89bb19a49cb2f#> then
> it is working fine.
> - In this commit, a check is removed to stop the constantfold of
> instruction to poison value incase of integer ADD or OR instruction if
> either of operands are poison.
> - Using both release branch and commit reverted branch, a poison value
> is generated by a shift left instruction due to overflow (UB is present)
>
>
> Ok so it sounds like this is the reason for the different output and the
> transformation is correct.
>
>> Yes, this poison which is generated is handled differently in
llvm-trunk and reverted commit code down the pipeline.
>
> - Now in the release branch, this poison value is propagated down to
> 'or' inst. and is constantfolds %or = or true poison -> poison
>
>
- where as in the reverted code, %or = or true poison -> true
>> Here is the main reason, where the problem started
>
> - In the release branch, the poison value propagates to its uses
> - There is a store instruction which now has a poison value
> - In visitStoreInst, store instruction got removed due to poison value
> - But in revert branch, store is not getting remove as it has defined
> value
>
> See the below diff for more clarity.
> [image: image.png]
>
> Reattaching the image. PFA for more clarity.
Thanks,
Rohit Aggarwal
>
--
Disclaimer:- This footer text is to convey that this email is sent by one
of the users of IITH. So, do not mark it as SPAM.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210820/254a07f4/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: diff_compare.png
Type: image/png
Size: 72050 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210820/254a07f4/attachment-0001.png>
More information about the llvm-dev
mailing list