r300122 - [clang-cl] Make all sanitizer flags available in clang-cl

Akira Hatanaka via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 13 01:12:40 PDT 2017


I’m afraid I have to revert this to turn the bots green again.

> On Apr 12, 2017, at 10:41 PM, Akira Hatanaka via cfe-commits <cfe-commits at lists.llvm.org> wrote:
> 
> I think this broke some of the bots.
> 
> http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/30152/ <http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/30152/>
> 
> Could you take a look?
>  
>> On Apr 12, 2017, at 3:50 PM, Reid Kleckner via cfe-commits <cfe-commits at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>> wrote:
>> 
>> Author: rnk
>> Date: Wed Apr 12 17:50:51 2017
>> New Revision: 300122
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=300122&view=rev <http://llvm.org/viewvc/llvm-project?rev=300122&view=rev>
>> Log:
>> [clang-cl] Make all sanitizer flags available in clang-cl
>> 
>> Summary:
>> Use a tablegen let {} block so that new sanitizer flags are available by
>> default in all driver modes. This should cut down on time wasted with
>> bugs like http://crbug.com/710928 <http://crbug.com/710928>.
>> 
>> Reviewers: vitalybuka, hans
>> 
>> Subscribers: kcc, llvm-commits
>> 
>> Differential Revision: https://reviews.llvm.org/D31988 <https://reviews.llvm.org/D31988>
>> 
>> Modified:
>>    cfe/trunk/include/clang/Driver/Options.td
>>    cfe/trunk/test/Driver/fsanitize.c
>> 
>> Modified: cfe/trunk/include/clang/Driver/Options.td
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=300122&r1=300121&r2=300122&view=diff <http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=300122&r1=300121&r2=300122&view=diff>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Driver/Options.td (original)
>> +++ cfe/trunk/include/clang/Driver/Options.td Wed Apr 12 17:50:51 2017
>> @@ -778,65 +778,71 @@ def fno_signaling_math : Flag<["-"], "fn
>> def fjump_tables : Flag<["-"], "fjump-tables">, Group<f_Group>;
>> def fno_jump_tables : Flag<["-"], "fno-jump-tables">, Group<f_Group>, Flags<[CC1Option]>,
>>   HelpText<"Do not use jump tables for lowering switches">;
>> +
>> +// Begin sanitizer flags. These should all be core options exposed in all driver
>> +// modes.
>> +let Flags = [CC1Option, CoreOption] in {
>> +
>> def fsanitize_EQ : CommaJoined<["-"], "fsanitize=">, Group<f_clang_Group>,
>> -                   Flags<[CC1Option, CoreOption]>, MetaVarName<"<check>">,
>> +                   MetaVarName<"<check>">,
>>                    HelpText<"Turn on runtime checks for various forms of undefined "
>>                             "or suspicious behavior. See user manual for available checks">;
>> def fno_sanitize_EQ : CommaJoined<["-"], "fno-sanitize=">, Group<f_clang_Group>,
>> -                      Flags<[CoreOption]>;
>> +                      Flags<[CoreOption, DriverOption]>;
>> def fsanitize_blacklist : Joined<["-"], "fsanitize-blacklist=">,
>> -                          Group<f_clang_Group>, Flags<[CC1Option, CoreOption]>,
>> +                          Group<f_clang_Group>,
>>                           HelpText<"Path to blacklist file for sanitizers">;
>> def fno_sanitize_blacklist : Flag<["-"], "fno-sanitize-blacklist">,
>>                              Group<f_clang_Group>,
>>                              HelpText<"Don't use blacklist file for sanitizers">;
>> def fsanitize_coverage
>>     : CommaJoined<["-"], "fsanitize-coverage=">,
>> -      Group<f_clang_Group>, Flags<[CoreOption]>,
>> +      Group<f_clang_Group>,
>>       HelpText<"Specify the type of coverage instrumentation for Sanitizers">;
>> def fno_sanitize_coverage
>>     : CommaJoined<["-"], "fno-sanitize-coverage=">,
>> -      Group<f_clang_Group>, Flags<[CoreOption]>,
>> +      Group<f_clang_Group>, Flags<[CoreOption, DriverOption]>,
>>       HelpText<"Disable specified features of coverage instrumentation for "
>>                "Sanitizers">;
>> def fsanitize_memory_track_origins_EQ : Joined<["-"], "fsanitize-memory-track-origins=">,
>> -                                        Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                                        Group<f_clang_Group>,
>>                                         HelpText<"Enable origins tracking in MemorySanitizer">;
>> def fsanitize_memory_track_origins : Flag<["-"], "fsanitize-memory-track-origins">,
>> -                                     Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                                     Group<f_clang_Group>,
>>                                      HelpText<"Enable origins tracking in MemorySanitizer">;
>> def fno_sanitize_memory_track_origins : Flag<["-"], "fno-sanitize-memory-track-origins">,
>> -                                        Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                                        Group<f_clang_Group>,
>> +                                        Flags<[CoreOption, DriverOption]>,
>>                                         HelpText<"Disable origins tracking in MemorySanitizer">;
>> def fsanitize_memory_use_after_dtor : Flag<["-"], "fsanitize-memory-use-after-dtor">,
>> -                                     Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                                     Group<f_clang_Group>,
>>                                      HelpText<"Enable use-after-destroy detection in MemorySanitizer">;
>> def fsanitize_address_field_padding : Joined<["-"], "fsanitize-address-field-padding=">,
>> -                                        Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                                        Group<f_clang_Group>,
>>                                         HelpText<"Level of field padding for AddressSanitizer">;
>> def fsanitize_address_use_after_scope : Flag<["-"], "fsanitize-address-use-after-scope">,
>> -                                        Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                                        Group<f_clang_Group>,
>>                                         HelpText<"Enable use-after-scope detection in AddressSanitizer">;
>> def fno_sanitize_address_use_after_scope : Flag<["-"], "fno-sanitize-address-use-after-scope">,
>> -                                           Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                                           Group<f_clang_Group>,
>> +                                           Flags<[CoreOption, DriverOption]>,
>>                                            HelpText<"Disable use-after-scope detection in AddressSanitizer">;
>> -def fsanitize_recover : Flag<["-"], "fsanitize-recover">, Group<f_clang_Group>,
>> -                        Flags<[CoreOption]>;
>> +def fsanitize_recover : Flag<["-"], "fsanitize-recover">, Group<f_clang_Group>;
>> def fno_sanitize_recover : Flag<["-"], "fno-sanitize-recover">,
>> -                           Group<f_clang_Group>, Flags<[CoreOption]>;
>> +                           Flags<[CoreOption, DriverOption]>,
>> +                           Group<f_clang_Group>;
>> def fsanitize_recover_EQ : CommaJoined<["-"], "fsanitize-recover=">,
>>                            Group<f_clang_Group>,
>> -                           Flags<[CC1Option, CoreOption]>,
>>                            HelpText<"Enable recovery for specified sanitizers">;
>> def fno_sanitize_recover_EQ
>>     : CommaJoined<["-"], "fno-sanitize-recover=">,
>> -      Group<f_clang_Group>, Flags<[CoreOption]>,
>> +      Group<f_clang_Group>,
>> +      Flags<[CoreOption, DriverOption]>,
>>       HelpText<"Disable recovery for specified sanitizers">;
>> def fsanitize_trap_EQ : CommaJoined<["-"], "fsanitize-trap=">, Group<f_clang_Group>,
>> -                        Flags<[CC1Option, CoreOption]>,
>>                         HelpText<"Enable trapping for specified sanitizers">;
>> def fno_sanitize_trap_EQ : CommaJoined<["-"], "fno-sanitize-trap=">, Group<f_clang_Group>,
>> -                           Flags<[CoreOption]>,
>> +                           Flags<[CoreOption, DriverOption]>,
>>                            HelpText<"Disable trapping for specified sanitizers">;
>> def fsanitize_undefined_trap_on_error : Flag<["-"], "fsanitize-undefined-trap-on-error">,
>>                                         Group<f_clang_Group>;
>> @@ -845,39 +851,47 @@ def fno_sanitize_undefined_trap_on_error
>> def fsanitize_link_cxx_runtime : Flag<["-"], "fsanitize-link-c++-runtime">,
>>                                  Group<f_clang_Group>;
>> def fsanitize_cfi_cross_dso : Flag<["-"], "fsanitize-cfi-cross-dso">,
>> -                              Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                              Group<f_clang_Group>,
>>                               HelpText<"Enable control flow integrity (CFI) checks for cross-DSO calls.">;
>> def fno_sanitize_cfi_cross_dso : Flag<["-"], "fno-sanitize-cfi-cross-dso">,
>> -                                 Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                                 Flags<[CoreOption, DriverOption]>,
>> +                                 Group<f_clang_Group>,
>>                                  HelpText<"Disable control flow integrity (CFI) checks for cross-DSO calls.">;
>> def fsanitize_stats : Flag<["-"], "fsanitize-stats">,
>> -                              Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                              Group<f_clang_Group>,
>>                               HelpText<"Enable sanitizer statistics gathering.">;
>> def fno_sanitize_stats : Flag<["-"], "fno-sanitize-stats">,
>> -                                 Group<f_clang_Group>, Flags<[CC1Option]>,
>> +                                 Group<f_clang_Group>,
>> +                                 Flags<[CoreOption, DriverOption]>,
>>                                  HelpText<"Disable sanitizer statistics gathering.">;
>> def fsanitize_thread_memory_access : Flag<["-"], "fsanitize-thread-memory-access">,
>>                                      Group<f_clang_Group>,
>>                                      HelpText<"Enable memory access instrumentation in ThreadSanitizer (default)">;
>> def fno_sanitize_thread_memory_access : Flag<["-"], "fno-sanitize-thread-memory-access">,
>>                                         Group<f_clang_Group>,
>> +                                        Flags<[CoreOption, DriverOption]>,
>>                                         HelpText<"Disable memory access instrumentation in ThreadSanitizer">;
>> def fsanitize_thread_func_entry_exit : Flag<["-"], "fsanitize-thread-func-entry-exit">,
>>                                        Group<f_clang_Group>,
>>                                        HelpText<"Enable function entry/exit instrumentation in ThreadSanitizer (default)">;
>> def fno_sanitize_thread_func_entry_exit : Flag<["-"], "fno-sanitize-thread-func-entry-exit">,
>>                                           Group<f_clang_Group>,
>> +                                          Flags<[CoreOption, DriverOption]>,
>>                                           HelpText<"Disable function entry/exit instrumentation in ThreadSanitizer">;
>> def fsanitize_thread_atomics : Flag<["-"], "fsanitize-thread-atomics">,
>>                                Group<f_clang_Group>,
>>                                HelpText<"Enable atomic operations instrumentation in ThreadSanitizer (default)">;
>> def fno_sanitize_thread_atomics : Flag<["-"], "fno-sanitize-thread-atomics">,
>>                                   Group<f_clang_Group>,
>> +                                  Flags<[CoreOption, DriverOption]>,
>>                                   HelpText<"Disable atomic operations instrumentation in ThreadSanitizer">;
>> def fsanitize_undefined_strip_path_components_EQ : Joined<["-"], "fsanitize-undefined-strip-path-components=">,
>> -  Group<f_clang_Group>, Flags<[CC1Option]>, MetaVarName<"<number>">,
>> +  Group<f_clang_Group>, MetaVarName<"<number>">,
>>   HelpText<"Strip (or keep only, if negative) a given number of path components "
>>            "when emitting check metadata.">;
>> +
>> +} // end -f[no-]sanitize* flags
>> +
>> def funsafe_math_optimizations : Flag<["-"], "funsafe-math-optimizations">,
>>   Group<f_Group>;
>> def fno_unsafe_math_optimizations : Flag<["-"], "fno-unsafe-math-optimizations">,
>> 
>> Modified: cfe/trunk/test/Driver/fsanitize.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fsanitize.c?rev=300122&r1=300121&r2=300122&view=diff <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fsanitize.c?rev=300122&r1=300121&r2=300122&view=diff>
>> ==============================================================================
>> --- cfe/trunk/test/Driver/fsanitize.c (original)
>> +++ cfe/trunk/test/Driver/fsanitize.c Wed Apr 12 17:50:51 2017
>> @@ -109,12 +109,15 @@
>> // CHECK-SANE-SANKA: '-fsanitize=efficiency-{{.*}}' not allowed with '-fsanitize=kernel-address'
>> 
>> // RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE
>> +// RUN: %clang_cl -target x86_64-windows -fsanitize=address -fsanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE
>> // CHECK-USE-AFTER-SCOPE: -cc1{{.*}}-fsanitize-address-use-after-scope
>> 
>> // RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fno-sanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-OFF
>> +// RUN: %clang_cl -target x86_64-windows -fsanitize=address -fno-sanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-OFF
>> // CHECK-USE-AFTER-SCOPE-OFF-NOT: -cc1{{.*}}address-use-after-scope
>> 
>> // RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fno-sanitize-address-use-after-scope -fsanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-BOTH
>> +// RUN: %clang_cl -target x86_64-windows -fsanitize=address -fno-sanitize-address-use-after-scope -fsanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-BOTH
>> // CHECK-USE-AFTER-SCOPE-BOTH: -cc1{{.*}}-fsanitize-address-use-after-scope
>> 
>> // RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-address-use-after-scope -fno-sanitize-address-use-after-scope %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-USE-AFTER-SCOPE-BOTH-OFF
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170413/57d17a04/attachment-0001.html>


More information about the cfe-commits mailing list