tianqing added inline comments.
================ Comment at: clang/lib/Basic/Targets/X86.cpp:159 + // Enable CRC32 if SSE4.2 is enabled. + // NOTE: In conformance with GCC behavior, CRC32 is still available even if + // it's explicitly disabled. ---------------- pengfei wrote: > hjl.tools wrote: > > craig.topper wrote: > > > hjl.tools wrote: > > > > tianqing wrote: > > > > > craig.topper wrote: > > > > > > This doesn't seem to be true. It causes gcc to crash. > > > > > > https://godbolt.org/z/39rEbsejh > > > > > Well I was using GCC 11.1, it compiles. > > > > > > > > > > The way I see it, crash means a bug (not surprising since it's > > > > > trunk), and can be interpreted as incompletely defined behavior until > > > > > it's fixed. > > > > > > > > > > Some tests on GCC trunk: > > > > > 1. -msse4.2: Pass - sse4.2 enables crc32. > > > > > 2. -mcrc32 -mno-sse4.2: Pass - no-sse4.2 doesn't disable crc32. > > > > > 3. -msse4.2 -mno-sse4.2: Error - no-sse4.2 disables crc32. > > > > > 4. -mno-crc32 -msse4.2: Crash - undefined behavior > > > > > 5. -msse4.2 -mno-crc32: Crash - undefined behavior > > > > > > > > > > > > > > > It's hard to extract some consistent underlying logic from the GCC > > > > > results. > > > > I posted a patch: > > > > https://gcc.gnu.org/pipermail/gcc-patches/2021-July/575741.html > > > @hjl.tools does that turn the crash into making -mno-crc32 into making > > > crc32 instruction disabled? > > Correct. GCC issues an error now. > So we don't align with GCC regarding "1. -msse4.2: Pass - sse4.2 enables > crc32."? It's aligned, see clang/test/Driver/x86-mcrc32.c. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105462/new/ https://reviews.llvm.org/D105462 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits