1878e5905SArthur Eubanks // RUN: rm -rf %t 2878e5905SArthur Eubanks // RUN: split-file %s %t 3878e5905SArthur Eubanks // RUN: cd %t 4878e5905SArthur Eubanks 5878e5905SArthur Eubanks // RUN: %clang_cc1 -x c++ -std=c++20 -emit-module-interface a.h -o a.pcm -fms-extensions -verify 6878e5905SArthur Eubanks // RUN: %clang_cc1 -std=c++20 a.cpp -fmodule-file=A=a.pcm -fms-extensions -fsyntax-only -verify 7878e5905SArthur Eubanks 8*da00c60dSChuanqi Xu // RUN: %clang_cc1 -x c++ -std=c++20 -emit-reduced-module-interface a.h -o a.pcm -fms-extensions -verify 9*da00c60dSChuanqi Xu // RUN: %clang_cc1 -std=c++20 a.cpp -fmodule-file=A=a.pcm -fms-extensions -fsyntax-only -verify 10*da00c60dSChuanqi Xu 11878e5905SArthur Eubanks //--- a.h 12878e5905SArthur Eubanks 13878e5905SArthur Eubanks // expected-no-diagnostics 14878e5905SArthur Eubanks 15878e5905SArthur Eubanks export module A; 16878e5905SArthur Eubanks 17878e5905SArthur Eubanks export template <typename T> f()18878e5905SArthur Eubanksvoid f() { 19878e5905SArthur Eubanks char a[] = __func__; 20878e5905SArthur Eubanks } 21878e5905SArthur Eubanks 22878e5905SArthur Eubanks //--- a.cpp 23878e5905SArthur Eubanks 24878e5905SArthur Eubanks // expected-warning@a.h:8 {{initializing an array from a '__func__' predefined identifier is a Microsoft extension}} 25878e5905SArthur Eubanks 26878e5905SArthur Eubanks import A; 27878e5905SArthur Eubanks g()28878e5905SArthur Eubanksvoid g() { 29878e5905SArthur Eubanks f<int>(); // expected-note {{in instantiation of function template specialization 'f<int>' requested here}} 30878e5905SArthur Eubanks } 31