<div dir="ltr"><div>I presume this is because it uses value handles to try to keep up to date?</div><div>:(</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 28, 2017 at 12:11 PM, Piotr Padlewski via Phabricator via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Prazek created this revision.<br>
<br>
AliasSetTracker was crashing when the UnknownInstruction<br>
was reduced to Value (llvm.invariant.group.barrier(<wbr>null) to null)<br>
<br>
<br>
<a href="https://reviews.llvm.org/D32654" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D32654</a><br>
<br>
Files:<br>
  include/llvm/Analysis/<wbr>AliasSetTracker.h<br>
  test/Transforms/LICM/2017-28-<wbr>04-invariant.group.ll<br>
<br>
<br>
Index: test/Transforms/LICM/2017-28-<wbr>04-invariant.group.ll<br>
==============================<wbr>==============================<wbr>=======<br>
--- /dev/null<br>
+++ test/Transforms/LICM/2017-28-<wbr>04-invariant.group.ll<br>
@@ -0,0 +1,41 @@<br>
+; RUN: opt -licm < %s<br>
+<br>
+; This test check if nothing explodes if invariant.group.barrier of null is<br>
+; reduced to null.<br>
+; Function Attrs: nounwind uwtable<br>
+define fastcc void @_ZN12_GLOBAL__N_<wbr>117GlobalISelEmitter3runERN4ll<wbr>vm11raw_ostreamE() unnamed_addr align 2 {<br>
+entry:<br>
+  switch i8 undef, label %if.end8.i.i [<br>
+    i8 0, label %if.then.i.i3<br>
+    i8 1, label %if.then4.i.i<br>
+  ]<br>
+<br>
+if.then.i.i3:                                     ; preds = %entry<br>
+  br label %for.body<br>
+<br>
+if.then4.i.i:                                     ; preds = %entry<br>
+  unreachable<br>
+<br>
+if.end8.i.i:                                      ; preds = %entry<br>
+  unreachable<br>
+<br>
+for.body:                                         ; preds = %for.cond66.i.i.for.end151.i.<wbr>i_crit_edge, %if.then.i.i3<br>
+  br label %for.body69.i.i<br>
+<br>
+for.body69.i.i:                                   ; preds = %for.body69.i.i, %for.body<br>
+  %0 = call i8* @llvm.invariant.group.barrier(<wbr>i8* null) #2, !noalias !1<br>
+  br i1 undef, label %for.cond66.i.i.for.end151.i.<wbr>i_crit_edge, label %for.body69.i.i<br>
+<br>
+for.cond66.i.i.for.end151.i.<wbr>i_crit_edge:          ; preds = %for.body69.i.i<br>
+  br label %for.body<br>
+}<br>
+<br>
+; Function Attrs: inaccessiblememonly nounwind<br>
+declare i8* @llvm.invariant.group.barrier(<wbr>i8*) #1<br>
+<br>
+attributes #1 = { inaccessiblememonly nounwind }<br>
+attributes #2 = { nounwind }<br>
+<br>
+!1 = !{!2}<br>
+!2 = distinct !{!2, !3, !"_<wbr>ZN4llvm5Error11takePayloadEv: %agg.result"}<br>
+!3 = distinct !{!3, !"_<wbr>ZN4llvm5Error11takePayloadEv"}<br>
Index: include/llvm/Analysis/<wbr>AliasSetTracker.h<br>
==============================<wbr>==============================<wbr>=======<br>
--- include/llvm/Analysis/<wbr>AliasSetTracker.h<br>
+++ include/llvm/Analysis/<wbr>AliasSetTracker.h<br>
@@ -174,7 +174,7 @@<br>
<br>
   Instruction *getUnknownInst(unsigned i) const {<br>
     assert(i < UnknownInsts.size());<br>
-    return cast_or_null<Instruction>(<wbr>UnknownInsts[i]);<br>
+    return dyn_cast_or_null<Instruction>(<wbr>UnknownInsts[i]);<br>
   }<br>
<br>
 public:<br>
<br>
<br>
<br>______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div>