diff options
author | John Naylor | 2025-04-01 05:01:58 +0000 |
---|---|---|
committer | John Naylor | 2025-04-01 05:01:58 +0000 |
commit | af0c248557aecb335462d980cb7319bdf85a5c66 (patch) | |
tree | 485a2fe57e46f881f0d965222e2d665c7e89ba88 | |
parent | 3dbdf86c6364d6b8470fa4067096062cea62405a (diff) |
Use function attributes for SSE 4.2 even when targeting that extension
On Red Hat 9 systems (or similar), the packaged gcc targets x86-64-v2,
but clang does not. This has caused build failures in the wake of
commit e2809e3a1 when building --with-llvm.
The most expedient fix is to use the same function attributes for
the inlined function as we do for the global function.
Reported-by: Kyotaro Horiguchi <[email protected]> (plus members skimmer and bumblebee)
Diagnosed-by: Tom Lane <[email protected]>
Tested-by: Todd Cook <[email protected]>
Discussion: https://postgr.es/m/CANWCAZZSxs3a1YRKehkgk2OHKbrVn+xZ+AWW8Co2R_f70NqqmA@mail.gmail.com
-rw-r--r-- | src/include/port/pg_crc32c.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/include/port/pg_crc32c.h b/src/include/port/pg_crc32c.h index 0ab7513f523..9376d223fef 100644 --- a/src/include/port/pg_crc32c.h +++ b/src/include/port/pg_crc32c.h @@ -52,7 +52,13 @@ typedef uint32 pg_crc32c; extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len); +/* + * We can only get here if the host compiler targets SSE 4.2, but on some + * systems gcc and clang don't have the same built-in targets, so we still + * must use a function attribute here to accommodate "--with-llvm" builds. + */ pg_attribute_no_sanitize_alignment() +pg_attribute_target("sse4.2") static inline pg_crc32c pg_comp_crc32c_dispatch(pg_crc32c crc, const void *data, size_t len) |