Hello Richard, This commit added broken test to the builder: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/26522 . . . Failing Tests (2): Clang :: Preprocessor/has_attribute.cpp . . .
Please have a look? The builder was already red and did not send notifications. Thanks Galina On Fri, Jun 21, 2019 at 1:20 PM Richard Smith via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: rsmith > Date: Fri Jun 21 13:20:21 2019 > New Revision: 364102 > > URL: http://llvm.org/viewvc/llvm-project?rev=364102&view=rev > Log: > Fix __has_cpp_attribute expansion to produce trailing L and (where > necessary) leading whitespace. > > Simplify unit test and extend to cover no_unique_address attribute. > > Modified: > cfe/trunk/lib/Lex/PPMacroExpansion.cpp > cfe/trunk/test/Preprocessor/has_attribute.cpp > > Modified: cfe/trunk/lib/Lex/PPMacroExpansion.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPMacroExpansion.cpp?rev=364102&r1=364101&r2=364102&view=diff > > ============================================================================== > --- cfe/trunk/lib/Lex/PPMacroExpansion.cpp (original) > +++ cfe/trunk/lib/Lex/PPMacroExpansion.cpp Fri Jun 21 13:20:21 2019 > @@ -1330,9 +1330,13 @@ already_lexed: > > // The last ')' has been reached; return the value if one found or > // a diagnostic and a dummy value. > - if (Result.hasValue()) > + if (Result.hasValue()) { > OS << Result.getValue(); > - else { > + // For strict conformance to __has_cpp_attribute rules, use 'L' > + // suffix for dated literals. > + if (Result.getValue() > 1) > + OS << 'L'; > + } else { > OS << 0; > if (!SuppressDiagnostic) > PP.Diag(Tok.getLocation(), > diag::err_too_few_args_in_macro_invoc); > @@ -1454,6 +1458,8 @@ void Preprocessor::ExpandBuiltinMacro(To > // Set up the return result. > Tok.setIdentifierInfo(nullptr); > Tok.clearFlag(Token::NeedsCleaning); > + bool IsAtStartOfLine = Tok.isAtStartOfLine(); > + bool HasLeadingSpace = Tok.hasLeadingSpace(); > > if (II == Ident__LINE__) { > // C99 6.10.8: "__LINE__: The presumed line number (within the current > @@ -1807,6 +1813,8 @@ void Preprocessor::ExpandBuiltinMacro(To > llvm_unreachable("Unknown identifier!"); > } > CreateString(OS.str(), Tok, Tok.getLocation(), Tok.getLocation()); > + Tok.setFlagValue(Token::StartOfLine, IsAtStartOfLine); > + Tok.setFlagValue(Token::LeadingSpace, HasLeadingSpace); > } > > void Preprocessor::markMacroAsUsed(MacroInfo *MI) { > > Modified: cfe/trunk/test/Preprocessor/has_attribute.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/has_attribute.cpp?rev=364102&r1=364101&r2=364102&view=diff > > ============================================================================== > --- cfe/trunk/test/Preprocessor/has_attribute.cpp (original) > +++ cfe/trunk/test/Preprocessor/has_attribute.cpp Fri Jun 21 13:20:21 2019 > @@ -1,98 +1,80 @@ > -// RUN: %clang_cc1 -triple i386-unknown-unknown -fms-compatibility > -std=c++11 -E %s -o - | FileCheck %s > +// RUN: %clang_cc1 -triple i386-unknown-unknown -fms-compatibility > -std=c++11 -E %s -o - | FileCheck %s --check-prefixes=CHECK,ITANIUM > --implicit-check-not=: > +// RUN: %clang_cc1 -triple i386-windows -fms-compatibility -std=c++11 -E > %s -o - | FileCheck %s --check-prefixes=CHECK,WINDOWS --implicit-check-not=: > > -// CHECK: has_cxx11_carries_dep > -#if __has_cpp_attribute(carries_dependency) > - int has_cxx11_carries_dep(); > -#endif > - > -// CHECK: has_clang_fallthrough_1 > -#if __has_cpp_attribute(clang::fallthrough) > - int has_clang_fallthrough_1(); > -#endif > - > -// CHECK: does_not_have_selectany > -#if !__has_cpp_attribute(selectany) > - int does_not_have_selectany(); > -#endif > +#define CXX11(x) x: __has_cpp_attribute(x) > + > +// CHECK: clang::fallthrough: 201603L > +CXX11(clang::fallthrough) > + > +// CHECK: selectany: 0 > +CXX11(selectany) > > // The attribute name can be bracketed with double underscores. > -// CHECK: has_clang_fallthrough_2 > -#if __has_cpp_attribute(clang::__fallthrough__) > - int has_clang_fallthrough_2(); > -#endif > +// CHECK: clang::__fallthrough__: 201603L > +CXX11(clang::__fallthrough__) > > // The scope cannot be bracketed with double underscores unless it is > // for gnu or clang. > -// CHECK: does_not_have___gsl___suppress > -#if !__has_cpp_attribute(__gsl__::suppress) > - int does_not_have___gsl___suppress(); > -#endif > +// CHECK: __gsl__::suppress: 0 > +CXX11(__gsl__::suppress) > > // We do somewhat support the __clang__ vendor namespace, but it is a > // predefined macro and thus we encourage users to use _Clang instead. > // Because of this, we do not support __has_cpp_attribute for that > // vendor namespace. > -// CHECK: does_not_have___clang___fallthrough > -#if !__has_cpp_attribute(__clang__::fallthrough) > - int does_not_have___clang___fallthrough(); > -#endif > - > -// CHECK: does_have_Clang_fallthrough > -#if __has_cpp_attribute(_Clang::fallthrough) > - int does_have_Clang_fallthrough(); > -#endif > - > -// CHECK: has_gnu_const > -#if __has_cpp_attribute(__gnu__::__const__) > - int has_gnu_const(); > -#endif > - > -// Test that C++11, target-specific attributes behave properly. > - > -// CHECK: does_not_have_mips16 > -#if !__has_cpp_attribute(gnu::mips16) > - int does_not_have_mips16(); > -#endif > - > -// Test that the version numbers of attributes listed in SD-6 are > supported > -// correctly. > - > -// CHECK: has_cxx11_carries_dep_vers > -#if __has_cpp_attribute(carries_dependency) == 200809 > - int has_cxx11_carries_dep_vers(); > -#endif > - > -// CHECK: has_cxx11_noreturn_vers > -#if __has_cpp_attribute(noreturn) == 200809 > - int has_cxx11_noreturn_vers(); > -#endif > - > -// CHECK: has_cxx14_deprecated_vers > -#if __has_cpp_attribute(deprecated) == 201309 > - int has_cxx14_deprecated_vers(); > -#endif > - > -// CHECK: has_cxx1z_nodiscard > -#if __has_cpp_attribute(nodiscard) == 201603 > - int has_cxx1z_nodiscard(); > -#endif > - > -// CHECK: has_cxx1z_fallthrough > -#if __has_cpp_attribute(fallthrough) == 201603 > - int has_cxx1z_fallthrough(); > -#endif > - > -// CHECK: has_declspec_uuid > -#if __has_declspec_attribute(uuid) > - int has_declspec_uuid(); > -#endif > - > -// CHECK: has_declspec_uuid2 > -#if __has_declspec_attribute(__uuid__) > - int has_declspec_uuid2(); > -#endif > - > -// CHECK: does_not_have_declspec_fallthrough > -#if !__has_declspec_attribute(fallthrough) > - int does_not_have_declspec_fallthrough(); > -#endif > +// > +// Note, we can't use CXX11 here because it will expand __clang__ to 1 > +// too early. > +// CHECK: 1::fallthrough: 0 > +__clang__::fallthrough: __has_cpp_attribute(__clang__::fallthrough) > + > +// CHECK: _Clang::fallthrough: 201603L > +CXX11(_Clang::fallthrough) > + > +// CHECK: __gnu__::__const__: 1 > +CXX11(__gnu__::__const__) > + > +// Test that C++11, target-specific attributes behave properly. > + > +// CHECK: gnu::mips16: 0 > +CXX11(gnu::mips16) > + > +// Test for standard attributes as listed in C++2a [cpp.cond] paragraph 6. > + > +CXX11(assert) > +CXX11(carries_dependency) > +CXX11(deprecated) > +CXX11(ensures) > +CXX11(expects) > +CXX11(fallthrough) > +CXX11(likely) > +CXX11(maybe_unused) > +CXX11(no_unique_address) > +CXX11(nodiscard) > +CXX11(noreturn) > +CXX11(unlikely) > +// FIXME(201806L) CHECK: assert: 0 > +// CHECK: carries_dependency: 200809L > +// CHECK: deprecated: 201309L > +// FIXME(201806L) CHECK: ensures: 0 > +// FIXME(201806L) CHECK: expects: 0 > +// CHECK: fallthrough: 201603L > +// FIXME(201803L) CHECK: likely: 0 > +// CHECK: maybe_unused: 201603L > +// ITANIUM: no_unique_address: 201803L > +// WINDOWS: no_unique_address: 0 > +// CHECK: nodiscard: 201603L > +// CHECK: noreturn: 200809L > +// FIXME(201803L) CHECK: unlikely: 0 > + > +// Test for Microsoft __declspec attributes > + > +#define DECLSPEC(x) x: __has_declspec_attribute(x) > + > +// CHECK: uuid: 1 > +// CHECK: __uuid__: 1 > +DECLSPEC(uuid) > +DECLSPEC(__uuid__) > + > +// CHECK: fallthrough: 0 > +DECLSPEC(fallthrough) > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits