[PATCH] D21271: Fix `InstCombine` to not widen metadata on store-to-load forwarding

Yichao Yu via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 12 21:04:13 PDT 2016


On Sun, Jun 12, 2016 at 11:48 PM, Daniel Berlin <dberlin at dberlin.org> wrote:
>
>
> On Sun, Jun 12, 2016 at 8:03 PM, Yichao Yu via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
>>
>> yuyichao added a comment.
>>
>> In another word, IMHO,
>>
>>   %v1 = load i64, i64 *%p1, !tbaa !0
>>   %v2 = load i64, i64 *%p1, !tbaa !1
>>
>> should be invalid IR (and the optimizer should not be allowed to create
>> this) if `!1` and `!2` are non-aliasing tbaa node.
>
> Why?
> It's entirely possible to create a language where this is a valid and useful
> lowering.
> TBAA applies *to the load*, not to the *pointer*, and the langref says
> nothing about it requiring it to assign consistent TBAA nodes to different
> loads of the same pointer.
>

My understanding is that the tbaa metadata is used for alias analysis.
What should be the result of the alias analysis on the two loads in
this case? Won't
tbaa return no aliasing while some other returns always aliasing for
this case?


More information about the llvm-commits mailing list