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

Zahira Ammarguellat via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 30 14:31:11 PST 2022


zahiraam marked 3 inline comments as done.
zahiraam added inline comments.


================
Comment at: clang/lib/Sema/SemaDecl.cpp:13896
+          Diag(var->getLocation(), diag::err_constexpr_var_requires_const_init)
+              << var << Init->getSourceRange();
+      }
----------------
efriedma wrote:
> zahiraam wrote:
> > efriedma wrote:
> > > I don't understand why this diagnostic is necessary.
> > Now that the DLLImport variable can be a constant, HasConstInit is returning true (it was before returning false) and when the variable is global a diagnostic should be reported. 
> > 
> > This:
> >   extern int _declspec(dllimport) val;
> >   constexpr int& val_ref = val;
> > 
> > should report a diagnostic, but this:
> > 
> >   int foo() { 
> >      extern int _declspec(dllimport) val; 
> >      constexpr int& val_ref = val;
> >   }
> > 
> >  shouldn't report a diagnostic.
> MSVC doesn't report a diagnostic for either of your examples?
So, these shouldn't fail anymore? 
https://github.com/llvm/llvm-project/blob/main/clang/test/SemaCXX/PR19955.cpp#L5
https://github.com/llvm/llvm-project/blob/main/clang/test/SemaCXX/PR19955.cpp#L8
https://github.com/llvm/llvm-project/blob/main/clang/test/SemaCXX/dllimport-constexpr.cpp#L44


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

https://reviews.llvm.org/D137107



More information about the cfe-commits mailing list