Re: r333498 - Sema: Add a flag for rejecting member pointers with incomplete base types.

2018-05-29 Thread Mike Edwards via cfe-commits
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.

2018-05-29 Thread Mike Edwards via cfe-commits
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