[libcxx-commits] [PATCH] D117157: [libc++][NFC] Remove clang-diagnostic-c++98-compat-extra-semi warnings in experimental/simd
Nikolas Klauser via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Jan 12 15:12:34 PST 2022
philnik added inline comments.
================
Comment at: libcxx/include/experimental/simd:773
_LIBCPP_SPECIALIZE_VEC_EXT(_TYPE, 31); \
- _LIBCPP_SPECIALIZE_VEC_EXT(_TYPE, 32);
+ _LIBCPP_SPECIALIZE_VEC_EXT(_TYPE, 32); _LIBCPP_FORCE_SEMICOLON
----------------
Quuxplusone wrote:
> philnik wrote:
> > Quuxplusone wrote:
> > >
> > These semicolons aren't actually required either, so this won't work.
> Based on the definition of the macro on line 734, either your solution or mine should work to suppress unnecessary-semicolon diagnostics.
> However, it would be //even simpler// to make the semicolon part of the macro itself:
> ```
> #define _LIBCPP_SPECIALIZE_VEC_EXT(_TYPE, _NUM_ELEMENT) \
> template <> \
> struct __vec_ext_traits<_TYPE, sizeof(_TYPE) * _NUM_ELEMENT> { \
> using type = \
> _TYPE __attribute__((vector_size(sizeof(_TYPE) * _NUM_ELEMENT))); \
> };
> ```
> and then
> ```
> #define _LIBCPP_SPECIALIZE_VEC_EXT_32(_TYPE) \
> _LIBCPP_SPECIALIZE_VEC_EXT(_TYPE, 1) \
> _LIBCPP_SPECIALIZE_VEC_EXT(_TYPE, 2) \
> _LIBCPP_SPECIALIZE_VEC_EXT(_TYPE, 3) \
> ~~~
>
> _LIBCPP_SPECIALIZE_VEC_EXT_32(char)
> _LIBCPP_SPECIALIZE_VEC_EXT_32(char16_t)
> _LIBCPP_SPECIALIZE_VEC_EXT_32(char32_t)
> ~~~
> ```
> That should //definitely// satisfy whatever semicolon-checker is complaining.
Sorry, I missed that it's a struct and not a template function.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D117157/new/
https://reviews.llvm.org/D117157
More information about the libcxx-commits
mailing list