[llvm-dev] GVN Hoist moving a store across load

Kevin Choi via llvm-dev llvm-dev at lists.llvm.org
Fri Aug 5 11:40:20 PDT 2016


Is the aliasing correct? Check the LHS type with type of x to see that they
are properly aliased.

-Kevin

On 5 August 2016 at 11:07, Krzysztof Parzyszek via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi,
>
> I have a scenario, roughly like this:
>
>   if (...) {
>     ... = *x
>     *x = 0
>   } else {
>     ... = *x
>     *x = 0
>   }
>
> The two sides are functionally different, but both load some value and
> then set it to 0.
>
> After GVN Hoist, I get:
>
>   *x = 0
>   if (...) {
>     ... = *x
>   } else {
>     ... = *x
>   }
>
> That is, the store was hoisted above the loads.
>
> The code is not exactly public, so I can't just attach it as a testcase,
> but it seems like some simple check is missing somewhere.
>
> Does this ring a bell?
>
> -Krzysztof
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
> by The Linux Foundation
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160805/eb008df4/attachment.html>


More information about the llvm-dev mailing list