Ah, sorry I just saw 333501 and this already passed on the bot. All green again. Thanks for the quick patch, sorry for the noise.
-Mike On Tue, May 29, 2018 at 9:33 PM, Mike Edwards <m...@sqlby.me> wrote: > Hi Peter, > Would you please have a look at: > http://green.lab.llvm.org/green/job/clang-stage1-cmake- > RA-incremental/48945/ > > It looks like this commit cause a test failure on the Green Dragon > Incremental Builder. > > Thanks, > Mike > > On Tue, May 29, 2018 at 8:40 PM, Peter Collingbourne via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: pcc >> Date: Tue May 29 20:40:04 2018 >> New Revision: 333498 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=333498&view=rev >> Log: >> Sema: Add a flag for rejecting member pointers with incomplete base types. >> >> Codebases that need to be compatible with the Microsoft ABI can pass >> this flag to avoid issues caused by the lack of a fixed ABI for >> incomplete member pointers. >> >> Differential Revision: https://reviews.llvm.org/D47503 >> >> Added: >> cfe/trunk/test/Driver/complete-member-pointers.cpp >> cfe/trunk/test/SemaCXX/complete-member-pointers.cpp >> Modified: >> cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td >> cfe/trunk/include/clang/Basic/LangOptions.def >> cfe/trunk/include/clang/Driver/Options.td >> cfe/trunk/lib/Driver/ToolChains/Clang.cpp >> cfe/trunk/lib/Frontend/CompilerInvocation.cpp >> cfe/trunk/lib/Sema/SemaType.cpp >> >> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ >> Basic/DiagnosticSemaKinds.td?rev=333498&r1=333497&r2=333498&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original) >> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Tue May 29 >> 20:40:04 2018 >> @@ -6350,6 +6350,8 @@ def err_bad_memptr_rhs : Error< >> def err_bad_memptr_lhs : Error< >> "left hand operand to %0 must be a %select{|pointer to }1class " >> "compatible with the right hand operand, but is %2">; >> +def err_memptr_incomplete : Error< >> + "member pointer has incomplete base type %0">; >> def warn_exception_caught_by_earlier_handler : Warning< >> "exception of type %0 will be caught by earlier handler">, >> InGroup<Exceptions>; >> >> Modified: cfe/trunk/include/clang/Basic/LangOptions.def >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ >> Basic/LangOptions.def?rev=333498&r1=333497&r2=333498&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/include/clang/Basic/LangOptions.def (original) >> +++ cfe/trunk/include/clang/Basic/LangOptions.def Tue May 29 20:40:04 >> 2018 >> @@ -247,6 +247,10 @@ ENUM_LANGOPT(AddressSpaceMapMangling , A >> LANGOPT(IncludeDefaultHeader, 1, 0, "Include default header file for >> OpenCL") >> BENIGN_LANGOPT(DelayedTemplateParsing , 1, 0, "delayed template >> parsing") >> LANGOPT(BlocksRuntimeOptional , 1, 0, "optional blocks runtime") >> +LANGOPT( >> + CompleteMemberPointers, 1, 0, >> + "Require member pointer base types to be complete at the point where >> the " >> + "type's inheritance model would be determined under the Microsoft >> ABI") >> >> ENUM_LANGOPT(GC, GCMode, 2, NonGC, "Objective-C Garbage Collection mode") >> ENUM_LANGOPT(ValueVisibilityMode, Visibility, 3, DefaultVisibility, >> >> Modified: cfe/trunk/include/clang/Driver/Options.td >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ >> Driver/Options.td?rev=333498&r1=333497&r2=333498&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/include/clang/Driver/Options.td (original) >> +++ cfe/trunk/include/clang/Driver/Options.td Tue May 29 20:40:04 2018 >> @@ -782,6 +782,12 @@ def fcomment_block_commands : CommaJoine >> def fparse_all_comments : Flag<["-"], "fparse-all-comments">, >> Group<f_clang_Group>, Flags<[CC1Option]>; >> def fcommon : Flag<["-"], "fcommon">, Group<f_Group>; >> def fcompile_resource_EQ : Joined<["-"], "fcompile-resource=">, >> Group<f_Group>; >> +def fcomplete_member_pointers : Flag<["-"], >> "fcomplete-member-pointers">, Group<f_clang_Group>, >> + Flags<[CoreOption, CC1Option]>, >> + HelpText<"Require member pointer base types to be complete if they >> would be significant under the Microsoft ABI">; >> +def fno_complete_member_pointers : Flag<["-"], >> "fno-complete-member-pointers">, Group<f_clang_Group>, >> + Flags<[CoreOption]>, >> + HelpText<"Do not require member pointer base types to be complete if >> they would be significant under the Microsoft ABI">; >> def fconstant_cfstrings : Flag<["-"], "fconstant-cfstrings">, >> Group<f_Group>; >> def fconstant_string_class_EQ : Joined<["-"], >> "fconstant-string-class=">, Group<f_Group>; >> def fconstexpr_depth_EQ : Joined<["-"], "fconstexpr-depth=">, >> Group<f_Group>; >> >> Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Too >> lChains/Clang.cpp?rev=333498&r1=333497&r2=333498&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original) >> +++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Tue May 29 20:40:04 2018 >> @@ -4784,6 +4784,10 @@ void Clang::ConstructJob(Compilation &C, >> CmdArgs.push_back("-fforce-enable-int128"); >> } >> >> + if (Args.hasFlag(options::OPT_fcomplete_member_pointers, >> + options::OPT_fno_complete_member_pointers, false)) >> + CmdArgs.push_back("-fcomplete-member-pointers"); >> + >> // Finally add the compile command to the compilation. >> if (Args.hasArg(options::OPT__SLASH_fallback) && >> Output.getType() == types::TY_Object && >> >> Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ >> CompilerInvocation.cpp?rev=333498&r1=333497&r2=333498&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) >> +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Tue May 29 20:40:04 >> 2018 >> @@ -2754,6 +2754,8 @@ static void ParseLangArgs(LangOptions &O >> << A->getAsString(Args) << A->getValue(); >> } >> } >> + >> + Opts.CompleteMemberPointers = Args.hasArg(OPT_fcomplete_memb >> er_pointers); >> } >> >> static bool isStrictlyPreprocessorAction(frontend::ActionKind Action) { >> >> Modified: cfe/trunk/lib/Sema/SemaType.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaT >> ype.cpp?rev=333498&r1=333497&r2=333498&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/lib/Sema/SemaType.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaType.cpp Tue May 29 20:40:04 2018 >> @@ -7585,11 +7585,17 @@ bool Sema::RequireCompleteTypeImpl(Sourc >> // assert(!T->isDependentType() && >> // "Can't ask whether a dependent type is complete"); >> >> - // We lock in the inheritance model once somebody has asked us to >> ensure >> - // that a pointer-to-member type is complete. >> - if (Context.getTargetInfo().getCXXABI().isMicrosoft()) { >> - if (const MemberPointerType *MPTy = T->getAs<MemberPointerType>()) { >> - if (!MPTy->getClass()->isDependentType()) { >> + if (const MemberPointerType *MPTy = T->getAs<MemberPointerType>()) { >> + if (!MPTy->getClass()->isDependentType()) { >> + if (getLangOpts().CompleteMemberPointers && >> + !MPTy->getClass()->getAsCXXRecordDecl()->isBeingDefined() && >> + RequireCompleteType(Loc, QualType(MPTy->getClass(), 0), >> + diag::err_memptr_incomplete)) >> + return true; >> + >> + // We lock in the inheritance model once somebody has asked us to >> ensure >> + // that a pointer-to-member type is complete. >> + if (Context.getTargetInfo().getCXXABI().isMicrosoft()) { >> (void)isCompleteType(Loc, QualType(MPTy->getClass(), 0)); >> assignInheritanceModel(*this, MPTy->getMostRecentCXXRecordDe >> cl()); >> } >> >> Added: cfe/trunk/test/Driver/complete-member-pointers.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/co >> mplete-member-pointers.cpp?rev=333498&view=auto >> ============================================================ >> ================== >> --- cfe/trunk/test/Driver/complete-member-pointers.cpp (added) >> +++ cfe/trunk/test/Driver/complete-member-pointers.cpp Tue May 29 >> 20:40:04 2018 >> @@ -0,0 +1,7 @@ >> +// RUN: %clangxx -### -c %s -o %t.o -target x86_64-unknown-linux 2>&1 | >> FileCheck --check-prefix=NOFLAG %s >> +// RUN: %clangxx -### -c %s -o %t.o -target x86_64-unknown-linux >> -fcomplete-member-pointers 2>&1 | FileCheck %s >> +// RUN: %clangxx -### -c %s -o %t.o -target x86_64-unknown-linux >> -fcomplete-member-pointers -fno-complete-member-pointers 2>&1 | FileCheck >> --check-prefix=NOFLAG %s >> +// RUN: %clang_cl -### /c %s /Fo%t.o -target x86_64-pc-win32 >> -fcomplete-member-pointers 2>&1 | FileCheck %s >> + >> +// CHECK: "-fcomplete-member-pointers" >> +// NOFLAG-NOT: "-fcomplete-member-pointers" >> >> Added: cfe/trunk/test/SemaCXX/complete-member-pointers.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/ >> complete-member-pointers.cpp?rev=333498&view=auto >> ============================================================ >> ================== >> --- cfe/trunk/test/SemaCXX/complete-member-pointers.cpp (added) >> +++ cfe/trunk/test/SemaCXX/complete-member-pointers.cpp Tue May 29 >> 20:40:04 2018 >> @@ -0,0 +1,15 @@ >> +// RUN: %clang_cc1 -verify -fsyntax-only -fcomplete-member-pointers %s >> + >> +struct S; // expected-note {{forward declaration of 'S'}} >> +typedef int S::*t; >> +t foo; // expected-error {{member pointer has incomplete base type 'S'}} >> + >> +struct S2 { >> + int S2::*foo; >> +}; >> +int S2::*bar; >> + >> +template <typename T> >> +struct S3 { >> + int T::*foo; >> +}; >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits