I noticed a small issue with icc's support for GCC vector extensions: the >>= and <<= operators seem to be broken.
Here is a quick example (or, on Compiler Explorer if you prefer):
#include <stdint.h>
typedef int32_t vec __attribute__((__vector_size__(16)));
vec se(vec a) {
#if defined(CONFUSE_ICC)
a >>= 31;
#else
a = a >> 31;
#endif
return a;
}
If you define CONFUSE_ICC, that will result in something like
foo.c(7): error: expression must have integral or unscoped enum type
a >>= 31;
^
compilation aborted for foo.c (code 2)
Compiler returned: 2As you can see, the workaround is straightforward enough, I just thought I should report the bug.
TCE Level:
TCE Open Date:
Sunday, March 15, 2020 - 11:07