[PATCH] D24805: [GVNSink] Initial GVNSink prototype
    Daniel Berlin via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Wed Sep 21 13:30:26 PDT 2016
    
    
  
On Wed, Sep 21, 2016 at 3:27 PM, Sebastian Pop <sebpop at gmail.com> wrote:
> sebpop added a comment.
>
> Hi James,
>
> after I discussed with @hiraditya, we realized that the example you give
> is not supposed to be sinked by a GVN-sink pass:
>
>   [ %a1 = add i32 %b, 1  ]   [ %c1 = add i32 %d, 1  ]
>   [ %a2 = xor i32 %a1, 1 ]   [ %c2 = xor i32 %c1, 1 ]
>                  \           /
>            [ %e = phi i32 %a2, %c2 ]
>            [ add i32 %e, 4         ]
>
> Sinking this example would need the bisimulation algorithm implemented in
> simplifyCFG:
>
So, you can make this work with a GVN-sink pass.
It's just not the traditional definition of "GVN" :)
As you mention, this is complementary to the algorithm one would "expect",
which handles the case you list below.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160921/c893cfe6/attachment.html>
    
    
More information about the llvm-commits
mailing list