<div dir="ltr">Yes, this fix works for me.<div><br></div><div>Jordy</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 20, 2016 at 3:12 PM, Krzysztof Parzyszek <span dir="ltr"><<a href="mailto:kparzysz@codeaurora.org" target="_blank">kparzysz@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Jordy,<br>
<br>
Does this fix work for you?<span class=""><br>
<br>
  unsigned SI = Scavenged.size(), Diff = UINT_MAX;<br></span>
+ int FIB = MFI.getObjectIndexBegin(), FIE = MFI.getObjectIndexEnd();<span class=""><br>
  for (unsigned I = 0; I < Scavenged.size(); ++I) {<br></span><span class="">
    if (Scavenged[I].Reg != 0)<br></span>
      continue;<span class=""><br>
    // Verify that this slot is valid for this register.<br></span><span class="">
    int FI = Scavenged[I].FrameIndex;<br></span>
+   if (FI < FIB || FI >= FIE)<br>
+     continue;<br>
    unsigned S = MFI.getObjectSize(FI);<br>
    unsigned A = MFI.getObjectAlignment(FI);<br>
<br>
-Krzysztof<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
On 5/20/2016 7:04 AM, Jordy Potman wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Krzysztof,<br>
<br>
I'm seeing an "Invalid Object Idx" assert in the call to<br>
MFI.getObjectSize(FI) in the code below on my out of tree target after<br>
this commit.<br>
<br>
    +    // Verify that this slot is valid for this register.<br>
    +    int FI = Scavenged[I].FrameIndex;<br>
    +    unsigned S = MFI.getObjectSize(FI);<br>
    +    unsigned A = MFI.getObjectAlignment(FI);<br>
    +    if (NeedSize > S || NeedAlign > A)<br>
    +      continue;<br>
<br>
<br>
The reason for this is that the Scavenged vector may contain a<br>
ScavengedInfo structure with a FrameIndex of -1 after the first call of<br>
scavengeRegister on targets where there is no spill slot but the target<br>
knows how to save/restore the register (using<br>
TRI->saveScavengerRegister). This ScavengedInfo structure with a<br>
FrameIndex of -1 is added to the Scavenged vector by the code on lines<br>
425-429 in the first call of scavengeRegister.<br>
<br>
I have fixed this in my tree by adding<br>
<br>
if (FI < 0)<br>
  continue;<br>
<br>
before the the call to MFI.getObjectSize(FI) in the code above, see the<br>
attached patch, but there may be a cleaner/better solution.<br>
<br>
Jordy<br>
</blockquote>
<br>
<br></div></div><span class="HOEnZb"><font color="#888888">
-- <br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation<br>
</font></span></blockquote></div><br></div>