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

Shoaib Meenai via libcxx-commits libcxx-commits at lists.llvm.org
Fri Apr 3 12:42:12 PDT 2020


Yup, the patch looks good – just wanted to clarify the commit message :)

From: <ldionne at apple.com> on behalf of Louis Dionne <ldionne at apple.com>
Date: Friday, April 3, 2020 at 12:41 PM
To: Shoaib Meenai <smeenai at fb.com>
Cc: Louis Dionne <llvmlistbot at llvm.org>, "libcxx-commits at lists.llvm.org" <libcxx-commits at lists.llvm.org>
Subject: Re: [libcxx-commits] [libcxx] 937040d - [libc++] Add REQUIRES for tests that need -fblocks and -fobjc-arc




On Apr 3, 2020, at 15:38, Shoaib Meenai <smeenai at fb.com<mailto: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<mailto: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=


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20200403/0ff8ed83/attachment-0001.html>


More information about the libcxx-commits mailing list