<div dir="ltr">Yes, I also think I have misunderstood. <div>In this documentation[1], it is mentioned that "<b>Each record consists of a pair of Locations.</b>". That is why I assumed there must be 4 locations for gc-live operands(there are 2 gc-live operands). Please consider below two cases.</div><div>1. "<b>gc-live"(i8 addrspace(1)* %5)</b></div><div>2. "<b>gc-live"(i8 addrspace(1)* %35, i8 addrspace(1)* %34)</b></div><div>I have copied the relevant stack map section for the above cases. For case 1, we can find two locations and for case 2 we can find 4 locations. This result is matched with the above statement of documentation[1].</div><div>But for my initial example, there are only two locations. I am a bit confused about this result.</div><div>Where did I misunderstand?</div><div><br></div><div><div><b>case 1:</b></div><div> .quad 2882400000<br> .long .Ltmp1-_B_foo<br> .short 0<br> .short 5<br> .byte 4<br> .byte 0<br> .short 8<br> .short 0<br> .short 0<br> .long 0<br> .byte 4<br> .byte 0<br> .short 8<br> .short 0<br> .short 0<br> .long 0<br> .byte 4<br> .byte 0<br> .short 8<br> .short 0<br> .short 0<br> .long 0</div><div>// 2 locations<br> .byte 3<br> .byte 0<br> .short 8<br> .short 7<br> .short 0<br> .long 0<br> .byte 3<br> .byte 0<br> .short 8<br> .short 7<br> .short 0<br> .long 0<br></div><div><br></div><div><b>case 2:</b></div><div> .quad 2882400000<br> .long .Ltmp5-_B_foo<br> .short 0<br> .short 7<br> .byte 4<br> .byte 0<br> .short 8<br> .short 0<br> .short 0<br> .long 0<br> .byte 4<br> .byte 0<br> .short 8<br> .short 0<br> .short 0<br> .long 0<br> .byte 4<br> .byte 0<br> .short 8<br> .short 0<br> .short 0<br> .long 0</div><div>// 4 locations<br> .byte 3<br> .byte 0<br> .short 8<br> .short 7<br> .short 0<br> .long 8<br> .byte 3<br> .byte 0<br> .short 8<br> .short 7<br> .short 0<br> .long 8<br> .byte 3<br> .byte 0<br> .short 8<br> .short 7<br> .short 0<br> .long 0<br> .byte 3<br> .byte 0<br> .short 8<br> .short 7<br> .short 0<br> .long 0<b><br></b></div><div><br></div><div>[1]: <a href="https://llvm.org/docs/Statepoints.html#stack-map-format">https://llvm.org/docs/Statepoints.html#stack-map-format</a></div><div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Kavindu Gimhan Zoysa,</div><div>BSc(Hons) | ENTC | UoM,<br></div><div dir="ltr">ATL | WSO2<div><br></div><div><a href="https://github.com/KavinduZoysa" target="_blank">GitHub</a> <a href="https://www.linkedin.com/in/kavindu-gimhan-zoysa-85939a122/" target="_blank">LinkedIn</a> <a href="https://medium.com/@kavindugimhanzoysa" target="_blank">Medium</a></div></div></div></div></div></div></div></div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 21 Sept 2021 at 01:20, Philip Reames <<a href="mailto:listmail@philipreames.com">listmail@philipreames.com</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">
<div>
<p>The lowering described appears to match the expected behavior of
the statepoint you've described. It's not clear why you believe
there should be four values in the lowering when that is not what
you've specified in the IR. You'll need to provide a bit more
context if you want help. My best guess is that you've
misunderstood the documentation - maybe you've confused the
stackmap format with the behavior of RS4GC?<br>
</p>
<p>Philip<br>
</p>
<div>On 9/18/21 11:57 AM, Kavindu Gimhan
Zoysa via llvm-dev wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>Hi all,</div>
<div><br>
</div>
<div><b>[ "gc-live"(<2 x i8 addrspace(1)*> %68, <2 x i8
addrspace(1)*> %base_ie) ]</b><br>
</div>
<div><b><br>
</b></div>
<div>Please consider that I have an LLVM IR which has a
statepoint with the above gc-live operands.</div>
<div>The generated stackmap record for the above statepoint has
below properties.</div>
<div><br>
</div>
<div>1. only 2 locations</div>
<div>2. both are indirect</div>
<div>3. size of each location is 16 bytes</div>
<div>4. offsets are different. i.e. 0x30 and 0x20</div>
<div><br>
</div>
<div>As I understand, in stackmap we can see pair of locations
always for a single pointer. But in this case, there should be
4 locations because we have 2 pointers in the statepoint.</div>
<div><br>
</div>
<div>Can you help me to solve this?</div>
<div><br>
</div>
<div>Thank you,</div>
<div>Kavindu</div>
<br clear="all">
<div>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div>Kavindu Gimhan Zoysa,</div>
<div>BSc(Hons) | ENTC | UoM,<br>
</div>
<div dir="ltr">ATL | WSO2
<div><br>
</div>
<div><a href="https://github.com/KavinduZoysa" target="_blank">GitHub</a> <a href="https://www.linkedin.com/in/kavindu-gimhan-zoysa-85939a122/" target="_blank">LinkedIn</a> <a href="https://medium.com/@kavindugimhanzoysa" target="_blank">Medium</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
</div>
</blockquote></div>