<div dir="ltr">Dávid: Please just disable it for initializers of structs. That seems to be the common denominator in all the false positives I've observed on this thread.<div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Aug 11, 2020 at 3:07 PM Dávid Bolvanský <<a href="mailto:david.bolvansky@gmail.com">david.bolvansky@gmail.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">Ok, I will bump that limit + 1.<br>
<br>
ut 11. 8. 2020 o 20:52 Arthur Eubanks via Phabricator<br>
<<a href="mailto:reviews@reviews.llvm.org" target="_blank">reviews@reviews.llvm.org</a>> napísal(a):<br>
><br>
> aeubanks added a comment.<br>
><br>
> In D85545#2211070 <<a href="https://reviews.llvm.org/D85545#2211070" rel="noreferrer" target="_blank">https://reviews.llvm.org/D85545#2211070</a>>, @xbolva00 wrote:<br>
><br>
> > I check if all elements of init list are strings, so this is not<br>
> > exactly true "struct checker" (I have no such info in that part of<br>
> > code..) but I consider it good enough. Your test case is based on real<br>
> > code? Does not seem so - well sure, we could construct many examples<br>
> > where warning fires uselessly but my focus is on real world false<br>
> > positive cases :)<br>
> ><br>
> > ut 11. 8. 2020 o 19:55 Arthur Eubanks via Phabricator<br>
> > <<a href="mailto:reviews@reviews.llvm.org" target="_blank">reviews@reviews.llvm.org</a>> napísal(a):<br>
> ><br>
> >> aeubanks added a comment.<br>
> >><br>
> >> Actually sorry, it does still seem like there are false positives on structs. Reduced:<br>
> >><br>
> >>   $ cat /tmp/a.cpp<br>
> >><br>
> >>   struct A {<br>
> >>     const char* a;<br>
> >>     const char* b;<br>
> >>     const char* c;<br>
> >>   };<br>
> >><br>
> >>   static constexpr A foo2 = A{"",<br>
> >>                               ""<br>
> >>                               "",<br>
> >>                               ""};<br>
> >><br>
> >>   $ ~/repos/llvm-project/build_cmake/bin/clang /tmp/a.cpp -o /dev/null -c -Wstring-concatenation<br>
> >>   /tmp/a.cpp:10:29: warning: suspicious concatenation of string literals in an array initialization; did you mean to separate the elements with a comma? [-Wstring-concatenation]<br>
> >>                               "",<br>
> >>                               ^<br>
> >>   /tmp/a.cpp:9:29: note: place parentheses around the string literal to silence warning<br>
> >>                               ""<br>
> >>                               ^<br>
> >>   1 warning generated.<br>
> >><br>
> >> Repository:<br>
> >><br>
> >>   rG LLVM Github Monorepo<br>
> >><br>
> >> CHANGES SINCE LAST ACTION<br>
> >><br>
> >>   <a href="https://reviews.llvm.org/D85545/new/" rel="noreferrer" target="_blank">https://reviews.llvm.org/D85545/new/</a><br>
> >><br>
> >> <a href="https://reviews.llvm.org/D85545" rel="noreferrer" target="_blank">https://reviews.llvm.org/D85545</a><br>
><br>
> Yup it's reduced from real world code, same link as before: <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/dawn/src/dawn_native/Toggles.cpp;drc=80f927d763211ea8e6a6377f86282809c86dc107;l=32" rel="noreferrer" target="_blank">https://source.chromium.org/chromium/chromium/src/+/master:third_party/dawn/src/dawn_native/Toggles.cpp;drc=80f927d763211ea8e6a6377f86282809c86dc107;l=32</a>.<br>
> Clearly if there are 3 strings in the struct and the initializer has three strings, then the warning shouldn't apply.<br>
><br>
><br>
> Repository:<br>
>   rG LLVM Github Monorepo<br>
><br>
> CHANGES SINCE LAST ACTION<br>
>   <a href="https://reviews.llvm.org/D85545/new/" rel="noreferrer" target="_blank">https://reviews.llvm.org/D85545/new/</a><br>
><br>
> <a href="https://reviews.llvm.org/D85545" rel="noreferrer" target="_blank">https://reviews.llvm.org/D85545</a><br>
><br>
</blockquote></div>