| /* { dg-do run } */ | |
| /* PR target/101529 */ | |
| typedef unsigned char __attribute__((__vector_size__ (1))) W; | |
| typedef unsigned char __attribute__((__vector_size__ (8))) V; | |
| typedef unsigned short __attribute__((__vector_size__ (16))) U; | |
| unsigned short us; | |
| /* aarch64 used to miscompile foo to just return 0. */ | |
| W | |
| foo (unsigned char uc) | |
| { | |
| V v = __builtin_convertvector ((U){ } >= us, V); | |
| return __builtin_shufflevector ((W){ }, v, 4) & uc; | |
| } | |
| int | |
| main (void) | |
| { | |
| W x = foo (5); | |
| if (x[0] != 5) | |
| __builtin_abort(); | |
| return 0; | |
| } | |