<div dir="ltr">I'm probably missing something, from looking here:<br><br><div>  FieldOffset = 0;</div><div>  if (CGM.getLangOpts().OpenCL) {</div><div>    FType = CGM.getContext().IntTy;</div><div>    EltTys.push_back(CreateMemberType(Unit, FType, "__size", &FieldOffset));</div><div>    EltTys.push_back(CreateMemberType(Unit, FType, "__align", &FieldOffset));</div><div>  } else {</div><div>    FType = CGM.getContext().getPointerType(CGM.getContext().VoidTy);</div><div>    EltTys.push_back(CreateMemberType(Unit, FType, "__isa", &FieldOffset));</div><div>    FType = CGM.getContext().IntTy;</div><div>    EltTys.push_back(CreateMemberType(Unit, FType, "__flags", &FieldOffset));</div><div>    EltTys.push_back(CreateMemberType(Unit, FType, "__reserved", &FieldOffset));</div><div>    FType = CGM.getContext().getPointerType(Ty->getPointeeType());</div><div>    EltTys.push_back(CreateMemberType(Unit, FType, "__FuncPtr", &FieldOffset));</div><div>    FType = CGM.getContext().getPointerType(CGM.getContext().VoidTy);</div><div>    FieldSize = CGM.getContext().getTypeSize(Ty);</div><div>    FieldAlign = CGM.getContext().getTypeAlign(Ty);</div><div>    EltTys.push_back(DBuilder.createMemberType(</div><div>        Unit, "__descriptor", nullptr, LineNo, FieldSize, FieldAlign, FieldOffset,</div><div>        llvm::DINode::FlagZero, DescTy));</div><div>    FieldOffset += FieldSize;</div><div>  }</div><div><br></div><div>FieldOffset is only advanced for non opencl blocks. And then just used in the type.</div><div><br></div><div>I'll be honest none of that makes any particular sense, but in particular these two definitely don't match for the type.</div><div><br></div><div>Thoughts? At any rate if you could document what the intended code is here I'd appreciate it.</div><div><br></div><div>-eric</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jul 31, 2018 at 9:18 AM <<a href="mailto:scott@scottlinder.com">scott@scottlinder.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I think this version is right; the FieldOffset for OpenCL here will be 2 <br>
* getTypeSize(IntTy). The final `FieldOffset += FieldSize` that was <br>
moved only applies to the non-OpenCL "__descriptor" field.<br>
<br>
Scott<br>
<br>
On 2018-07-30 19:22, Eric Christopher wrote:<br>
> Is 0 right for FieldOffset for OpenCL here? Seems a little odd.<br>
> <br>
> -eric<br>
> <br>
> On Mon, Jul 30, 2018 at 3:56 PM Scott Linder via cfe-commits<br>
> <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<br>
> <br>
>> Author: scott.linder<br>
>> Date: Mon Jul 30 15:52:07 2018<br>
>> New Revision: 338321<br>
>> <br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=338321&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=338321&view=rev</a> [1]<br>
>> Log:<br>
>> Fix use of uninitialized variable in r338299<br>
>> <br>
>> Modified:<br>
>> cfe/trunk/lib/CodeGen/CGDebugInfo.cpp<br>
>> <br>
>> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp<br>
>> URL:<br>
>> <br>
> <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=338321&r1=338320&r2=338321&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=338321&r1=338320&r2=338321&view=diff</a><br>
>> [2]<br>
>> <br>
> ==============================================================================<br>
>> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)<br>
>> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Mon Jul 30 15:52:07 2018<br>
>> @@ -989,9 +989,9 @@ llvm::DIType *CGDebugInfo::CreateType(co<br>
>> EltTys.push_back(DBuilder.createMemberType(<br>
>> Unit, "__descriptor", nullptr, LineNo, FieldSize,<br>
>> FieldAlign, FieldOffset,<br>
>> llvm::DINode::FlagZero, DescTy));<br>
>> + FieldOffset += FieldSize;<br>
>> }<br>
>> <br>
>> - FieldOffset += FieldSize;<br>
>> Elements = DBuilder.getOrCreateArray(EltTys);<br>
>> <br>
>> // The __block_literal_generic structs are marked with a special<br>
>> <br>
>> _______________________________________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a> [3]<br>
> <br>
> <br>
> Links:<br>
> ------<br>
> [1] <a href="http://llvm.org/viewvc/llvm-project?rev=338321&amp;view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=338321&amp;view=rev</a><br>
> [2]<br>
> <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=338321&amp;r1=338320&amp;r2=338321&amp;view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=338321&amp;r1=338320&amp;r2=338321&amp;view=diff</a><br>
> [3] <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div></div>