Re: r333498 - Sema: Add a flag for rejecting member pointers with incomplete base types.
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 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=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=333497=333498=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; >> >> Modified: cfe/trunk/include/clang/Basic/LangOptions.def >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ >> Basic/LangOptions.def?rev=333498=333497=333498=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=333497=333498=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, Flags<[CC1Option]>; >> def fcommon : Flag<["-"], "fcommon">, Group; >> def fcompile_resource_EQ : Joined<["-"], "fcompile-resource=">, >> Group; >> +def fcomplete_member_pointers : Flag<["-"], >> "fcomplete-member-pointers">, 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, >> + 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; >> def fconstant_string_class_EQ : Joined<["-"], >> "fconstant-string-class=">, Group; >> def fconstexpr_depth_EQ : Joined<["-"], "fconstexpr-depth=">, >> Group; >> >> Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp >> URL:
Re: r333498 - Sema: Add a flag for rejecting member pointers with incomplete base types.
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=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=333497=333498=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; > > Modified: cfe/trunk/include/clang/Basic/LangOptions.def > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/ > clang/Basic/LangOptions.def?rev=333498=333497=333498=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=333497=333498=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, Flags<[CC1Option]>; > def fcommon : Flag<["-"], "fcommon">, Group; > def fcompile_resource_EQ : Joined<["-"], "fcompile-resource=">, > Group; > +def fcomplete_member_pointers : Flag<["-"], "fcomplete-member-pointers">, > 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, > + 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; > def fconstant_string_class_EQ : Joined<["-"], "fconstant-string-class=">, > Group; > def fconstexpr_depth_EQ : Joined<["-"], "fconstexpr-depth=">, > Group; > > Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ > ToolChains/Clang.cpp?rev=333498=333497=333498=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