[all-commits] [llvm/llvm-project] 59325c: libcxx: Don't apply ABI tags to extern "C" fns

Haojian Wu via All-commits all-commits at lists.llvm.org
Fri Jan 27 06:29:54 PST 2023


  Branch: refs/heads/release/16.x
  Home:   https://github.com/llvm/llvm-project
  Commit: 59325c94ed632a718045320fbfaf8f96ba2f816d
      https://github.com/llvm/llvm-project/commit/59325c94ed632a718045320fbfaf8f96ba2f816d
  Author: Arsen Arsenović <arsen at gentoo.org>
  Date:   2023-01-27 (Fri, 27 Jan 2023)

  Changed paths:
    M libcxx/include/__config
    M libcxx/include/__support/android/locale_bionic.h
    M libcxx/include/__support/musl/xlocale.h
    M libcxx/include/__support/openbsd/xlocale.h
    M libcxx/include/__support/xlocale/__nop_locale_mgmt.h
    M libcxx/include/__support/xlocale/__posix_l_fallback.h
    M libcxx/include/__support/xlocale/__strtonum_fallback.h

  Log Message:
  -----------
  libcxx: Don't apply ABI tags to extern "C" fns

GCC rejects ABI tags on non mangled functions, as they would otherwise
be a no-op.  This commit replaces such instances with equivalent
_LIBCPP_HIDE_FROM_ABI constants but without ABI tags attached.

  .../include/c++/v1/__support/musl/xlocale.h:28:68: error: 'abi_tag'
  attribute applied to extern "C" declaration 'long long int
  strtoll_l(const char*, char**, int, locale_t)'
     28 | strtoll_l(const char *__nptr, char **__endptr, int __base, locale_t) {
        |                                                                    ^

Bug: https://bugs.gentoo.org/869038

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D142415


  Commit: 99777ef91870f8b26cefebd03f26e2052d0e0535
      https://github.com/llvm/llvm-project/commit/99777ef91870f8b26cefebd03f26e2052d0e0535
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2023-01-27 (Fri, 27 Jan 2023)

  Changed paths:
    M clang/lib/Headers/smmintrin.h
    M clang/test/CodeGen/X86/sse41-builtins.c

  Log Message:
  -----------
  [X86] Ensure the _mm_test_all_ones macro does not reuse argument (PR60006)

The macro _mm_test_all_ones(V) was defined as _mm_testc_si128((V), _mm_cmpeq_epi32((V), (V))) - which could cause side effects depending on the source of the V value.

The _mm_cmpeq_epi32((V), (V)) trick was just to materialize an all-ones value, which can be more safely generated with _mm_set1_epi32(-1) .

Fixes #60006

Differential Revision: https://reviews.llvm.org/D142477

(cherry picked from commit c9b28233599a753506687f2f8a4f96331cd5dbb2)


  Commit: c39e95cf4562eae42197d64958f9b3aa331720fb
      https://github.com/llvm/llvm-project/commit/c39e95cf4562eae42197d64958f9b3aa331720fb
  Author: Haojian Wu <hokein.wu at gmail.com>
  Date:   2023-01-27 (Fri, 27 Jan 2023)

  Changed paths:
    M clang-tools-extra/clangd/unittests/SelectionTests.cpp
    M clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp
    M clang/include/clang/Sema/DeclSpec.h
    M clang/include/clang/Sema/Sema.h
    M clang/lib/Parse/ParseDecl.cpp
    M clang/lib/Parse/ParseDeclCXX.cpp
    M clang/lib/Sema/SemaDecl.cpp
    M clang/lib/Sema/SemaDeclCXX.cpp
    M clang/lib/Sema/SemaTemplate.cpp
    M clang/lib/Sema/SemaType.cpp
    M clang/test/CXX/drs/dr2xx.cpp
    M clang/test/CXX/drs/dr4xx.cpp

  Log Message:
  -----------
  Revert "[clang] Build UsingType for elaborated type specifiers."

This reverts commit e70ca7b35319a3621f9d9c6475926428f8c5c000 and the
followup patch "[clang] Fix the location of UsingTypeLoc"
(ebbeb164c25a40cb6ba9c6b18dce5dcd06c0bb07).

The patch causes an incorrect lookup result:

```
namespace ns { struct Foo { };}

using ns::Foo;
void test() {
  struct Foo {
  } k; // the type of k refers to ns::Foo, rather than the local Foo!
}
```

(cherry picked from commit e400c63cc39680538a3726a7736baf6b7844c3a8)


Compare: https://github.com/llvm/llvm-project/compare/46d5a57801bc...c39e95cf4562


More information about the All-commits mailing list