<div dir="ltr">Sounds good, thanks!<div>Kind regards,</div><div>Alexander Shaposhnikov</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 13, 2017 at 2:38 AM, Alex L via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On 12 July 2017 at 21:00, Alexander Shaposhnikov <span dir="ltr"><<a href="mailto:alexander.v.shaposhnikov@gmail.com" target="_blank">alexander.v.shaposhnikov@<wbr>gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">Yeah, I think you are right,<div>my question was mostly about if it's on purpose that <span style="font-size:12.8px"> </span><a class="m_7961703700802364036gmail-m_-1424253200725342773gmail-m_2250955971894881811m_1074346319558311326gmail-code" href="https://clang.llvm.org/doxygen/classclang_1_1TargetInfo.html" style="font-size:13px;color:rgb(70,101,162);font-family:monospace,fixed;white-space:pre-wrap;background-color:rgb(251,252,253)" target="_blank">TargetInfo</a> and ASTContext don't expose this information (like they do for size_t). </div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I mean that there is <span style="font-size:12.8px">getSizeType method, but there isn't </span><span style="font-size:12.8px">getSignedSizeType and I'm wondering if it's expected. </span></div><div><span style="font-size:12.8px">If it's not on purpose  - what would people say to adding it ? or what we should use instead.</span></div><div><span style="font-size:12.8px">Many thanks for the reply,</span></div><div><span style="font-size:12.8px">Kind regards,</span></div><div><span style="font-size:12.8px">Alexander Shaposhnikov</span></div><div><span style="font-size:12.8px"><br></span></div></div></blockquote><div><br></div></span><div>I think that the standard says that we can just take the signed version of the SizeType. A method like this in TargetInfo should suffice then:</div><div><br></div><div>IntType getSignedSizeType() const {<br></div><div>  switch (SizeType) {</div><div>  case UnsignedLongLong: return SignedLongLong;</div><div>  ....</div><div>  }</div><div>}</div><div><br></div><div>Then you should be able to add an appropriate method to the ASTContext that returns a QualType that corresponds to this Target type.</div><div><br></div><div>In my opinion this is a reasonable solution to the problem,</div><div>Alex</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><span style="font-size:12.8px"></span></div><div><span style="font-size:12.8px"><br></span></div></div><div class="m_7961703700802364036gmail-HOEnZb"><div class="m_7961703700802364036gmail-h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 12, 2017 at 4:10 AM, Alex L <span dir="ltr"><<a href="mailto:arphaman@gmail.com" target="_blank">arphaman@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">The C11 standard has the following paragraph for 'z':<div><br><div>Specifies that a following d, i, o, u, x, or X conversion specifier applies to a size_t or the corresponding signed integer type argument; or that a following n conversion specifier applies to a pointer to a signed integer type corresponding to size_t argument.<br></div></div><div><br></div><div>If I interpret it correctly (please correct me if I'm wrong) then this means that for '%zd' you can use a type that identical to the target's SizeType, except that it has to be signed.</div><span class="m_7961703700802364036gmail-m_-1424253200725342773HOEnZb"><font color="#888888"><div><br></div><div>Alex</div></font></span></div><div class="m_7961703700802364036gmail-m_-1424253200725342773HOEnZb"><div class="m_7961703700802364036gmail-m_-1424253200725342773h5"><div class="gmail_extra"><br><div class="gmail_quote">On 12 July 2017 at 03:01, Александр Шапошников <span dir="ltr"><<a href="mailto:alexander.v.shaposhnikov@gmail.com" target="_blank">alexander.v.shaposhnikov@gmai<wbr>l.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div class="m_7961703700802364036gmail-m_-1424253200725342773m_2583063698370947840HOEnZb"><div class="m_7961703700802364036gmail-m_-1424253200725342773m_2583063698370947840h5"><div dir="ltr"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 11, 2017 at 5:19 PM, Alexander Shaposhnikov <span dir="ltr"><<a href="mailto:shal1t712@gmail.com" target="_blank">shal1t712@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi, <div>I have a question regarding the right way to get CanQualType/QualType for "ssize_t".</div><div><br></div><div>The class <a class="m_7961703700802364036gmail-m_-1424253200725342773m_2583063698370947840m_-4206623016591368973m_1074346319558311326gmail-code" href="https://clang.llvm.org/doxygen/classclang_1_1ASTContext.html#a7c89acd533ffea38c5011885d8d029e4" style="font-size:13px;color:rgb(70,101,162);font-family:monospace,fixed;white-space:pre-wrap;background-color:rgb(251,252,253)" target="_blank">ASTContext</a> (<a href="https://clang.llvm.org/doxygen/ASTContext_8cpp_source.html#l04524" target="_blank">https://clan<wbr>g.llvm.org/doxygen/ASTContext_<wbr>8cpp_source.html#l04524</a>) </div><div>has a number of methods: getIntMaxType, getUintMaxType, getSizeType etc but if i am not mistaken it doesn't have the counterpart for "ssize_t". </div><div>After looking at the implementation of those methods i see that it's missing in the class <a class="m_7961703700802364036gmail-m_-1424253200725342773m_2583063698370947840m_-4206623016591368973m_1074346319558311326gmail-code" href="https://clang.llvm.org/doxygen/classclang_1_1TargetInfo.html" style="font-size:13px;color:rgb(70,101,162);font-family:monospace,fixed;white-space:pre-wrap;background-color:rgb(251,252,253)" target="_blank">TargetInfo</a> either. <a href="https://clang.llvm.org/doxygen/include_2clang_2Basic_2TargetInfo_8h_source.html#l00228" target="_blank">https://clang.llvm.org/doxygen<wbr>/include_2clang_2Basic_2Target<wbr>Info_8h_source.html#l00228</a> .</div><div><br></div><div>Some context:</div><div><br></div><div>in PrintfSpecifier::getArgType (in ./lib/Analysis/PrintfForma<wbr>tString.cpp)</div><div>there is a FIXME:</div><div><br></div><div>     case LengthModifier::AsSizeT:</div><div>         return ArgType(); // FIXME: ssize_t</div><div><br></div><div>as a result Clang doesn't analyze the format string "%zd" correctly</div><div>and doesn't warn on the following (broken) code:</div><div><br></div><div>    int main() {</div><div>      printf("%zd", 12.2);</div><div>      return 0;</div><div>    }</div><div><br></div><div>Kind regards, </div><span class="m_7961703700802364036gmail-m_-1424253200725342773m_2583063698370947840m_-4206623016591368973HOEnZb"><font color="#888888"><div>Alexander Shaposhnikov</div></font></span></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></span></div><br></div></div>
<br>______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>