[Bug c++/101651] New: constexpr write to simd vector element
glisse at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jul 27 20:46:17 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101651
Bug ID: 101651
Summary: constexpr write to simd vector element
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
(adapted from https://stackoverflow.com/q/68517921/1918193)
#ifdef WORK
#include <array>
typedef std::array<char,16> vec;
#else
typedef char vec __attribute__((vector_size(16)));
#endif
constexpr auto gen () {
vec ret{};
for (int i = 0; i < sizeof(vec); ++i) {
ret[i] = 2;
}
return ret;
};
constexpr auto m = gen();
c.cc:9:23: in 'constexpr' expansion of 'gen()'
c.cc:9:24: error: modification of '(char [16])ret' is not a constant expression
9 | constexpr auto m = gen();
| ^
However, with -DWORK to use std::array instead of the vector extension, it
compiles just fine, so there shouldn't be any strong obstacle to implement
this.
More information about the Gcc-bugs
mailing list