[PATCH] D137107: Allow MS extension: support of constexpr with __declspec(dllimport).

Zahira Ammarguellat via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 6 12:15:47 PST 2022


zahiraam added a subscriber: eli.friedman.
zahiraam added a comment.

@eli.friedman Thanks.



================
Comment at: clang/lib/CodeGen/CGDeclCXX.cpp:572
     PrioritizedCXXGlobalInits.push_back(std::make_pair(Key, Fn));
+  } else if (D->hasConstantInitialization() && !(D->hasAttr<ConstInitAttr>())) {
+    OrderGlobalInitsOrStermFinalizers Key(201,
----------------
efriedma wrote:
> zahiraam wrote:
> > efriedma wrote:
> > > How is ConstInitAttr relevant here?
> > This change made (without the !(D->hasAttr<ConstInitAttr>()) made the LIT behavior of aix-static-init.cpp. The IR generated for 
> > namespace test3 {
> >   struct Test3 {
> >     constexpr Test3() {};
> >     ~Test3() {};
> >   };
> > 
> >   constinit Test3 t;
> > } // namespace test3
> > 
> > was different. I would have thought that the change we made for constexpr wouldn't affter constinit? 
> I think the significant bit there isn't the use of constinit; it's the non-trivial destructor.  I think the priority modification should only affect constructors, not destructors.  (Not sure how to make that work, at first glance.)
Let's see if this is an acceptable solution.


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

https://reviews.llvm.org/D137107



More information about the cfe-commits mailing list