<div dir="ltr">Got it, thanks! <br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Tim Northover <<a href="mailto:t.p.northover@gmail.com">t.p.northover@gmail.com</a>> 于2019年4月2日周二 上午12:27写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Duan,<br>
<br>
On Mon, 1 Apr 2019 at 16:16, Duan Bing via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> ifElseEnd41:                                      ; preds = %ifElse40, %ifElseEnd56<br>
>   call void @add_gas(i64 2)<br>
>   %380 = phi i32 [ %378, %ifElseEnd56 ], [ %379, %ifElse40 ]<br>
>   br label %ifElseEnd3<br>
><br>
><br>
> Use still stuck around after Def is destroyed:  %380 = phi i32 [ %40, %ifThen1 ], [ <badref>, %ifElseEnd41 ], !dbg !27<br>
> Assertion failed: (use_empty() && "Uses remain when a value is destroyed!"), function ~Value, file /Users/duanbing/Project/llvm/llvm/lib/IR/Value.cpp, line 90.<br>
><br>
> Can you give me some tips about what's happened or how to debug this?<br>
<br>
The issue is that phi instructions must always be at the start of<br>
their basic block (see <a href="https://llvm.org/docs/LangRef.html#i-phi" rel="noreferrer" target="_blank">https://llvm.org/docs/LangRef.html#i-phi</a>). You<br>
can use BasicBlock::getFirstNonPHI to get the correct insertion point<br>
for your call.<br>
<br>
Cheers.<br>
<br>
Tim.<br>
</blockquote></div>