[libcxx-commits] [libcxx] 937040d - [libc++] Add REQUIRES for tests that need -fblocks and -fobjc-arc

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Fri Apr 3 12:40:35 PDT 2020



> On Apr 3, 2020, at 15:38, Shoaib Meenai <smeenai at fb.com> wrote:
> 
> To be clear, this is a target thing and not an AppleClang vs. Clang thing. If you built Clang yourself but passed e.g. `-target x86_64-apple-macosx10.15`, you'd also get blocks and ARC by default.

That makes sense, thanks for the information! The patch only detects whether the compiler supports it without checking whether it's AppleClang or another Clang, so I think this is still good.
That was not necessary before because we were skipping .mm tests altogether :-(.

Louis

> 
> On 4/3/20, 7:11 AM, "libcxx-commits on behalf of Louis Dionne via libcxx-commits" <libcxx-commits-bounces at lists.llvm.org <mailto:libcxx-commits-bounces at lists.llvm.org> on behalf of libcxx-commits at lists.llvm.org <mailto:libcxx-commits at lists.llvm.org>> wrote:
> 
> 
>    Author: Louis Dionne
>    Date: 2020-04-03T10:10:35-04:00
>    New Revision: 937040d18196987221ed28fd6f3d2586102a6dbe
> 
>    URL: https://github.com/llvm/llvm-project/commit/937040d18196987221ed28fd6f3d2586102a6dbe
>    DIFF: https://github.com/llvm/llvm-project/commit/937040d18196987221ed28fd6f3d2586102a6dbe.diff
> 
>    LOG: [libc++] Add REQUIRES for tests that need -fblocks and -fobjc-arc
> 
>    AppleClang seems to support these extensions by default, but other
>    compilers don't.
> 
>    Added: 
> 
> 
>    Modified: 
>        libcxx/test/libcxx/selftest/test.arc.pass.mm
>        libcxx/test/libcxx/type_traits/is_pointer.arc.pass.mm
>        libcxx/test/libcxx/type_traits/is_scalar.objc.pass.mm
>        libcxx/test/libcxx/utilities/optional/block.objc.pass.mm
>        libcxx/utils/libcxx/test/config.py
> 
>    Removed: 
> 
> 
> 
>    ################################################################################
>    diff  --git a/libcxx/test/libcxx/selftest/test.arc.pass.mm b/libcxx/test/libcxx/selftest/test.arc.pass.mm
>    index 0c83cc825542..b70b24e63183 100644
>    --- a/libcxx/test/libcxx/selftest/test.arc.pass.mm
>    +++ b/libcxx/test/libcxx/selftest/test.arc.pass.mm
>    @@ -7,6 +7,7 @@
>     //
>     //===----------------------------------------------------------------------===//
> 
>    +// REQUIRES: has-fobjc-arc
>     // ADDITIONAL_COMPILE_FLAGS: -fobjc-arc
> 
>     #if __has_feature(objc_arc) == 0
> 
>    diff  --git a/libcxx/test/libcxx/type_traits/is_pointer.arc.pass.mm b/libcxx/test/libcxx/type_traits/is_pointer.arc.pass.mm
>    index 3b297d5c2271..168869972dd1 100644
>    --- a/libcxx/test/libcxx/type_traits/is_pointer.arc.pass.mm
>    +++ b/libcxx/test/libcxx/type_traits/is_pointer.arc.pass.mm
>    @@ -5,9 +5,9 @@
>     // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
>     //
>     //===----------------------------------------------------------------------===//
>    -//
>    -// UNSUPPORTED: c++98, c++03
> 
>    +// UNSUPPORTED: c++98, c++03
>    +// REQUIRES: has-fobjc-arc
>     // ADDITIONAL_COMPILE_FLAGS: -fobjc-arc
> 
>     // <type_traits>
> 
>    diff  --git a/libcxx/test/libcxx/type_traits/is_scalar.objc.pass.mm b/libcxx/test/libcxx/type_traits/is_scalar.objc.pass.mm
>    index 1f7ffec8efda..23693fc064eb 100644
>    --- a/libcxx/test/libcxx/type_traits/is_scalar.objc.pass.mm
>    +++ b/libcxx/test/libcxx/type_traits/is_scalar.objc.pass.mm
>    @@ -5,8 +5,10 @@
>     // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
>     //
>     //===----------------------------------------------------------------------===//
>    -//
>    +
>     // UNSUPPORTED: c++98, c++03
>    +// REQUIRES: has-fblocks
>    +// ADDITIONAL_COMPILE_FLAGS: -fblocks
> 
>     // <type_traits>
> 
> 
>    diff  --git a/libcxx/test/libcxx/utilities/optional/block.objc.pass.mm b/libcxx/test/libcxx/utilities/optional/block.objc.pass.mm
>    index 8d2722bf8534..77674602f377 100644
>    --- a/libcxx/test/libcxx/utilities/optional/block.objc.pass.mm
>    +++ b/libcxx/test/libcxx/utilities/optional/block.objc.pass.mm
>    @@ -7,6 +7,8 @@
>     //===----------------------------------------------------------------------===//
> 
>     // UNSUPPORTED: c++98, c++03, c++11, c++14
>    +// REQUIRES: has-fblocks
>    +// ADDITIONAL_COMPILE_FLAGS: -fblocks
> 
>     // <optional>
> 
> 
>    diff  --git a/libcxx/utils/libcxx/test/config.py b/libcxx/utils/libcxx/test/config.py
>    index 20d0a796a3af..0a5f62eefe30 100644
>    --- a/libcxx/utils/libcxx/test/config.py
>    +++ b/libcxx/utils/libcxx/test/config.py
>    @@ -6,6 +6,7 @@
>     #
>     #===----------------------------------------------------------------------===##
> 
>    +import copy
>     import locale
>     import os
>     import platform
>    @@ -149,6 +150,8 @@ def configure(self):
>             self.configure_coverage()
>             self.configure_modules()
>             self.configure_coroutines()
>    +        self.configure_blocks()
>    +        self.configure_objc_arc()
>             self.configure_substitutions()
>             self.configure_features()
> 
>    @@ -987,6 +990,16 @@ def configure_coroutines(self):
>                 if intMacroValue(macros['__cpp_coroutines']) >= 201703:
>                     self.config.available_features.add('fcoroutines-ts')
> 
>    +    def configure_blocks(self):
>    +        if self.cxx.hasCompileFlag('-fblocks'):
>    +            self.config.available_features.add('has-fblocks')
>    +
>    +    def configure_objc_arc(self):
>    +        cxx = copy.deepcopy(self.cxx)
>    +        cxx.source_lang = 'objective-c++'
>    +        if cxx.hasCompileFlag('-fobjc-arc'):
>    +            self.config.available_features.add('has-fobjc-arc')
>    +
>         def configure_modules(self):
>             modules_flags = ['-fmodules']
>             if not self.target_info.is_darwin():
> 
> 
> 
>    _______________________________________________
>    libcxx-commits mailing list
>    libcxx-commits at lists.llvm.org
>    https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_libcxx-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=WrGGZgQwQdGbIJlkwYK5We3mB6G7BX5Lei0LseLjse4&s=e_OBmVPWyRQ-yAI1s47eBm8NTT3Y8zV926MFYA_PG_0&e= <https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_libcxx-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=WrGGZgQwQdGbIJlkwYK5We3mB6G7BX5Lei0LseLjse4&s=e_OBmVPWyRQ-yAI1s47eBm8NTT3Y8zV926MFYA_PG_0&e=>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20200403/d5bc3b2b/attachment-0001.html>


More information about the libcxx-commits mailing list