llvm/llvm-project
Auf GitHub ansehen[clang++] operator==(vector of long, vector of long) -> vector of long long
Open
#132.604 geöffnet am 23. März 2025
ABIclang:frontenddiverges-from:gccgood first issue
Repository-Metriken
- Stars
- (26.378 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 1T 2h) (1.000 gemergte PRs in 30 T)
Beschreibung
When comparing two variables of vector of long, clang++ returns a vector of long long, inconsistent with g++. https://godbolt.org/z/db9zT6f4r
#include <type_traits>
using T [[gnu::vector_size(sizeof(long))]] = long;
static_assert(std::is_same_v<std::remove_reference_t<decltype((T{} == T{})[0])>, long>);
This makes the following code fails to compile with clang++ with the compilation options -march=x86-64-v4 -std=c++20 (previously reported as gcc bugzilla 118546).
Online link: https://godbolt.org/z/sxqsKrv9e .
#include <experimental/simd>
#include <cstdint>
using deduce_t_element = std::experimental::simd<
std::uint64_t,
std::experimental::simd_abi::deduce_t<std::uint64_t, 4>
>;
auto f(deduce_t_element e) {
return e == 0;
}