[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