cor3ntin added a comment.

In D136554#4024719 <https://reviews.llvm.org/D136554#4024719>, @rupprecht wrote:

> In D136554#4024628 <https://reviews.llvm.org/D136554#4024628>, @rupprecht 
> wrote:
>
>> I still see one behavior change (actually it was there before, but I missed 
>> it in the test results), but as far as I can tell, it's a good one? If I 
>> reduce it too much, I get the warning with the baseline toolchain, so it's 
>> not erroneous AFAICT. Although I won't pretend I know all the intricacies of 
>> `static` and `inline`.
>
> I missed another place in the unreduced repro that was referencing this 
> method, and that was the trick. I reduced the newly-enabled warning case to 
> this:
>
>   // a.h
>   static const std::pair<double, double>& GetFakePairRef() {
>     static constexpr std::pair<double, double> fake = {1.0, 2.0};
>     return fake;
>   }
>   
>   struct Metadata {
>     const std::pair<double, double>& data = GetFakePairRef();
>   };
>   
>   // main.cc, compiled with -Wunused-function
>   #include "a.h"
>   int main() { return 0; }
>
> Again, still LGTM.

Yes, this is a nice improvement.
It make sense. We now only mark default member initializers odr used when they 
are actually odr used.
default constructing an instance of MetaData silences the warning, which is 
expected!

I'll probably land today.
Thanks a lot for helping me find and reduce all of these corner cases, it was 
very useful and appreciated :)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136554/new/

https://reviews.llvm.org/D136554

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to