[PATCH] D32654: Fix AliasSetTracker

Daniel Berlin via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 28 12:14:48 PDT 2017


I presume this is because it uses value handles to try to keep up to date?
:(


On Fri, Apr 28, 2017 at 12:11 PM, Piotr Padlewski via Phabricator via
llvm-commits <llvm-commits at lists.llvm.org> wrote:

> Prazek created this revision.
>
> AliasSetTracker was crashing when the UnknownInstruction
> was reduced to Value (llvm.invariant.group.barrier(null) to null)
>
>
> https://reviews.llvm.org/D32654
>
> Files:
>   include/llvm/Analysis/AliasSetTracker.h
>   test/Transforms/LICM/2017-28-04-invariant.group.ll
>
>
> Index: test/Transforms/LICM/2017-28-04-invariant.group.ll
> ===================================================================
> --- /dev/null
> +++ test/Transforms/LICM/2017-28-04-invariant.group.ll
> @@ -0,0 +1,41 @@
> +; RUN: opt -licm < %s
> +
> +; This test check if nothing explodes if invariant.group.barrier of null
> is
> +; reduced to null.
> +; Function Attrs: nounwind uwtable
> +define fastcc void @_ZN12_GLOBAL__N_117GlobalISelEmitter3runERN4llvm11raw_ostreamE()
> unnamed_addr align 2 {
> +entry:
> +  switch i8 undef, label %if.end8.i.i [
> +    i8 0, label %if.then.i.i3
> +    i8 1, label %if.then4.i.i
> +  ]
> +
> +if.then.i.i3:                                     ; preds = %entry
> +  br label %for.body
> +
> +if.then4.i.i:                                     ; preds = %entry
> +  unreachable
> +
> +if.end8.i.i:                                      ; preds = %entry
> +  unreachable
> +
> +for.body:                                         ; preds =
> %for.cond66.i.i.for.end151.i.i_crit_edge, %if.then.i.i3
> +  br label %for.body69.i.i
> +
> +for.body69.i.i:                                   ; preds =
> %for.body69.i.i, %for.body
> +  %0 = call i8* @llvm.invariant.group.barrier(i8* null) #2, !noalias !1
> +  br i1 undef, label %for.cond66.i.i.for.end151.i.i_crit_edge, label
> %for.body69.i.i
> +
> +for.cond66.i.i.for.end151.i.i_crit_edge:          ; preds =
> %for.body69.i.i
> +  br label %for.body
> +}
> +
> +; Function Attrs: inaccessiblememonly nounwind
> +declare i8* @llvm.invariant.group.barrier(i8*) #1
> +
> +attributes #1 = { inaccessiblememonly nounwind }
> +attributes #2 = { nounwind }
> +
> +!1 = !{!2}
> +!2 = distinct !{!2, !3, !"_ZN4llvm5Error11takePayloadEv: %agg.result"}
> +!3 = distinct !{!3, !"_ZN4llvm5Error11takePayloadEv"}
> Index: include/llvm/Analysis/AliasSetTracker.h
> ===================================================================
> --- include/llvm/Analysis/AliasSetTracker.h
> +++ include/llvm/Analysis/AliasSetTracker.h
> @@ -174,7 +174,7 @@
>
>    Instruction *getUnknownInst(unsigned i) const {
>      assert(i < UnknownInsts.size());
> -    return cast_or_null<Instruction>(UnknownInsts[i]);
> +    return dyn_cast_or_null<Instruction>(UnknownInsts[i]);
>    }
>
>  public:
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170428/e23a8978/attachment.html>


More information about the llvm-commits mailing list