| /* { dg-add-options vect_early_break } */ |
| /* { dg-require-effective-target vect_early_break } */ |
| /* { dg-require-effective-target vect_long_long } */ |
| |
| /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */ |
| |
| #include "tree-vect.h" |
| |
| __attribute__((noipa)) void |
| bar (unsigned long long *p) |
| { |
| __builtin_memset (p, 0, 142 * sizeof (unsigned long long)); |
| p[17] = 0x50000000000ULL; |
| } |
| |
| __attribute__((noipa)) int |
| foo (void) |
| { |
| unsigned long long r[142]; |
| bar (r); |
| unsigned long long v = ((long long) r[0] >> 31); |
| if (v + 1 > 1) |
| return 1; |
| for (unsigned long long i = 1; i <= 140; ++i) |
| if (r[i] != v) |
| return 1; |
| unsigned long long w = r[141]; |
| if ((unsigned long long) (((long long) (w << 60)) >> 60) != v) |
| return 1; |
| return 0; |
| } |
| |
| int |
| main () |
| { |
| check_vect (); |
| |
| if (foo () != 1) |
| __builtin_abort (); |
| } |