pengfei added a subscriber: hjl.tools.
pengfei added a comment.
In D122789#3446865 <https://reviews.llvm.org/D122789#3446865>, @MaskRay wrote:
> To kurly (original Gentoo reporter):
>
> printf '#include <smmintrin.h>\n#include <stdint.h>\nuint32_t
> computeHardwareCRC32(uint32_t Crc, uint32_t Data) { return _mm_crc32_u32(Crc,
> Data); }' > a.c
>
>
>
> % clang -m32 -march=i686 -msse4.2 -c a.c # seems to compile fine
> % gcc -m32 -march=i686 -msse4.2 -c a.c
> % gcc -m32 -march=i686 -mcrc32 -c a.c
> In file included from a.c:1:
> a.c: In function ‘computeHardwareCRC32’:
> /usr/lib/gcc/x86_64-linux-gnu/11/include/smmintrin.h:839:1: error: inlining
> failed in call to ‘always_inline’ ‘_mm_crc32_u32’: target specific option
> mismatch
> 839 | _mm_crc32_u32 (unsigned int __C, unsigned int __V)
> | ^~~~~~~~~~~~~
> a.c:3:69: note: called from here
> 3 | uint32_t computeHardwareCRC32(uint32_t Crc, uint32_t Data) { return
> _mm_crc32_u32(Crc, Data); }
> |
> ^~~~~~~~~~~~~~~~~~~~~~~~
>
> I have some older GCC and latest GCC (2022-04, multilib), `gcc -m32
> -march=i686 -msse4.2 -c a.c` builds while `-mcrc32` doesn't.
>
> I suspect we should revert the `-mcrc32` change. The `__CRC32__` macro may be
> fine.
Thanks for the infromation. I got the same result. That's weird. I believe at
some point, GCC supported `-mcrc32`. @hjl.tools, did GCC intentionally remove
the support for `-mcrc32`?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D122789/new/
https://reviews.llvm.org/D122789
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits