diff --git a/include/ircd/simd/unaligned.h b/include/ircd/simd/unaligned.h index dde38538c..e4199f091 100644 --- a/include/ircd/simd/unaligned.h +++ b/include/ircd/simd/unaligned.h @@ -24,23 +24,24 @@ namespace ircd::simd /// T = inner aligned type template struct -__attribute__((packed)) -__attribute__((aligned(1))) -__attribute__((visibility("internal"))) +[[using clang: internal_linkage, nodebug]] +[[using gnu: packed, aligned(1), visibility("internal")]] ircd::simd::unaligned { using value_type = T; T val; - operator T() const + [[gnu::always_inline]] + operator T() const noexcept { return val; } template - unaligned(U&& val) - :val(std::forward(val)) + [[gnu::always_inline]] + unaligned(const U val) noexcept + :val(val) {} };