zahiraam added a comment. In D117569#3259928 <https://reviews.llvm.org/D117569#3259928>, @majnemer wrote:
> Your example is different from mine as it nests the constexpr variable inside > the function rather than having it at translation-unit scope. And I suppose we are interested in the latter? In D117569#3259928 <https://reviews.llvm.org/D117569#3259928>, @majnemer wrote: > Your example is different from mine as it nests the constexpr variable inside > the function rather than having it at translation-unit scope. Aargh! Getting lots of link errors with various tests I tried. Tried this: dll.cpp: __declspec(dllexport) int& get() { extern int __declspec(dllimport) dll_import_int; constexpr int& dll_import_constexpr_ref = dll_import_int; return dll_import_constexpr_ref; } testapp.cpp: extern int& __declspec(dllimport) get(); int main() { get(); return 0; } $ cl dll.cpp /LD /EHsc Microsoft (R) C/C++ Optimizing Compiler Version 19.29.30133 for x64 Copyright (C) Microsoft Corporation. All rights reserved. dll.cpp Microsoft (R) Incremental Linker Version 14.29.30133.0 Copyright (C) Microsoft Corporation. All rights reserved. /out:dll.dll /dll /implib:dll.lib dll.obj Creating library dll.lib and object dll.exp dll.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) int dll_import_int" (__imp_?dll_import_int@@3HA) referenced in function "int & __cdecl get(void)" (?get@@YAAEAHXZ) dll.dll : fatal error LNK1120: 1 unresolved externals $ Can't seem to find the right combination to find the potential bug! Would that be enough to show that there is a MS bug? extern int __declspec(dllimport) dll_import_int; constexpr int& dll_import_constexpr_ref = dll_import_int; int f() { return dll_import_constexpr_ref; } int main() { return f(); } Compiled with clang: $ dumpbin /symbols a.o | grep dll 010 00000000 UNDEF notype External | __imp_?dll_import_int@@3HA (__declspec(dllimport) int dll_import_int) 012 00000000 SECT5 notype External | ?dll_import_constexpr_ref@@3AEAHEA (int & dll_import_constexpr_ref) 013 00000000 UNDEF notype External | ?dll_import_int@@3HA (int dll_import_int) Compiled with MSVC: $ dumpbin /symbols a.obj | grep dll 007 00000000 UNDEF notype External | ?dll_import_int@@3HA (int dll_import_int) 015 00000000 SECT6 notype Static | ?dll_import_constexpr_ref@@3AEAHEA (int & dll_import_constexpr_ref) $ CHANGES SINCE LAST ACTION https://reviews.llvm.org/D117569/new/ https://reviews.llvm.org/D117569 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits