<div dir="ltr">So your patch just triggered the bug? +David Blaikie.<div><br></div><div>David</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 15, 2019 at 12:02 AM Carrot Wei via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">When function LiveDebugValues::ExtendRanges works on following MBB<br>
<br>
bb.62 (%ir-block.187):<br>
; predecessors: %bb.61<br>
successors: %bb.63(0x80000000); %bb.63(100.00%)<br>
liveins: $edi, $edx<br>
DBG_VALUE $edi, $noreg, !"range", !DIExpression(), debug-location !136<br>
32; ../../v8\src/torque/utils.h:0 @[<br>
../../v8/src/torque/csa-generator.cc:94 @[<br>
../../v8/src/torque/csa-generator.cc:76 ] ] line no:263<br>
DBG_VALUE $esi, 0, !"range", !DIExpression(DW_OP_LLVM_fragment, 0, 32)<br>
, debug-location !13632; ../../v8\src/torque/utils.h:0 @[ ../../v8/src/t<br>
orque/csa-generator.cc:94 @[ ../../v8/src/torque/csa-generator.cc:76 ] ]<br>
line no:263 indirect<br>
renamable $eax = MOV32rm $esi, 1, $noreg, 0, $noreg :: (load 4 from %stack.54)<br>
MOV32mr $esi, 1, $noreg, 24, $noreg, killed renamable $edx :: (store 4<br>
into %stack.56)<br>
renamable $edx = MOV32rm $esi, 1, $noreg, 20, $noreg :: (load 4 from %<br>
stack.55)<br>
renamable $eax = SHL32ri killed renamable $eax(tied-def 0), 2,<br>
implicit-def dead $eflags, debug-location !13658;<br>
../../v8\src/torque/utils.h:2<br>
66 @[ ../../v8/src/torque/csa-generator.cc:94 @[ ../../v8/src/torque/csa<br>
-generator.cc:76 ] ]<br>
renamable $ebx = LEA32r killed renamable $eax, 2, renamable $eax, 0, $<br>
noreg, debug-location !13658; ../../v8\src/torque/utils.h:266 @[ ../../v<br>
8/src/torque/csa-generator.cc:94 @[ ../../v8/src/torque/csa-generator.cc:76 ] ]<br>
renamable $eax = LEA32r $noreg, 4, killed renamable $edi, 0, $noreg, d<br>
ebug-location !13658; ../../v8\src/torque/utils.h:266 @[ ../../v8/src/to<br>
rque/csa-generator.cc:94 @[ ../../v8/src/torque/csa-generator.cc:76 ] ]<br>
renamable $eax = LEA32r killed renamable $eax, 2, renamable $eax, 0, $<br>
noreg, debug-location !13658; ../../v8\src/torque/utils.h:266 @[<br>
../../v8/src/torque/csa-generator.cc:94 @[<br>
../../v8/src/torque/csa-generator.cc<br>
:76 ] ]<br>
MOV32mr $esi, 1, $noreg, 0, $noreg, killed renamable $eax :: (store 4<br>
into %stack.54)<br>
<br>
The data structure OpenRanges got inconsistent internal state. Its<br>
field OpenRanges.Vars and OpenRanges.VarLocs should have same number<br>
of elements.<br>
<br>
Before handling the third instruction<br>
<br>
renamable $eax = MOV32rm $esi, 1, $noreg, 0, $noreg :: (load 4 from %stack.54)<br>
<br>
Both OpenRanges.Vars and OpenRanges.VarLocs have 2 elements. Then<br>
function insertTransferDebugPair is called, it calls OpenRanges.erase<br>
to delete 1 element from OpenRanges, then both OpenRanges.Vars and<br>
OpenRanges.VarLocs have 1 element. Later OpenRanges.insert is called<br>
for the new fragment, this function adds new element to<br>
OpenRanges.Vars and OpenRanges.VarLocs at the same time, but the<br>
SmallDenseMap OpenRanges.Vars already has the same key, so<br>
OpenRanges.Vars just replaced the old value with new one, it still has<br>
only 1 element, OpenRanges.VarLocs has 2 elements now. Later when<br>
elements are removed from OpenRanges.Vars, OpenRanges.VarLocs still<br>
contains 1 value, and caused the assertion failure in function<br>
OpenRanges.empty.<br>
<br>
I'm not familiar with debug information, could anybody help to give me a hint?<br>
<br>
thanks a lot!<br>
<br>
On Tue, Aug 13, 2019 at 10:45 PM Carrot Wei <<a href="mailto:carrot@google.com" target="_blank">carrot@google.com</a>> wrote:<br>
><br>
> I didn't know llvm on linux can cross build windows binary.<br>
> Now I can reproduce it.<br>
><br>
> On Tue, Aug 13, 2019 at 12:21 AM Hans Wennborg <<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>> wrote:<br>
> ><br>
> > Did you look at<br>
> > <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=992871#c3" rel="noreferrer" target="_blank">https://bugs.chromium.org/p/chromium/issues/detail?id=992871#c3</a> ? It<br>
> > shows how to reproduce using the tarball on Linux.<br>
> ><br>
> > On Mon, Aug 12, 2019 at 8:17 PM Carrot Wei <<a href="mailto:carrot@google.com" target="_blank">carrot@google.com</a>> wrote:<br>
> > ><br>
> > > The MBP patch doesn't touch debug information, I suspect there is<br>
> > > something unrelated was triggered.<br>
> > > I tried your tarball, but found it is for windows, I don't have a<br>
> > > windows machine :(. Do you have a linux reproduce? It's even better to<br>
> > > have a compiler command line.<br>
> > ><br>
> > > On Mon, Aug 12, 2019 at 7:24 AM Hans Wennborg <<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>> wrote:<br>
> > > ><br>
> > > > I've reverted this in r368579 since it causes asserts when building<br>
> > > > Chromium. See <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=992871" rel="noreferrer" target="_blank">https://bugs.chromium.org/p/chromium/issues/detail?id=992871</a><br>
> > > > for details and reproducer.<br>
> > > ><br>
> > > > On Thu, Aug 8, 2019 at 10:24 PM Guozhi Wei via llvm-commits<br>
> > > > <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
> > > > ><br>
> > > > > Author: carrot<br>
> > > > > Date: Thu Aug 8 13:25:23 2019<br>
> > > > > New Revision: 368339<br>
> > > > ><br>
> > > > > URL: <a href="http://llvm.org/viewvc/llvm-project?rev=368339&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=368339&view=rev</a><br>
> > > > > Log:<br>
> > > > > [MBP] Disable aggressive loop rotate in plain mode<br>
> > > > ><br>
> > > > > Patch <a href="https://reviews.llvm.org/D43256" rel="noreferrer" target="_blank">https://reviews.llvm.org/D43256</a> introduced more aggressive loop layout optimization which depends on profile information. If profile information is not available, the statically estimated profile information(generated by BranchProbabilityInfo.cpp) is used. If user program doesn't behave as BranchProbabilityInfo.cpp expected, the layout may be worse.<br>
> > > > ><br>
> > > > > To be conservative this patch restores the original layout algorithm in plain mode. But user can still try the aggressive layout optimization with -force-precise-rotation-cost=true.<br>
> > > > ><br>
> > > > > Differential Revision: <a href="https://reviews.llvm.org/D65673" rel="noreferrer" target="_blank">https://reviews.llvm.org/D65673</a><br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>