diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/store_merging_14.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/store_merging_14.c | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/store_merging_14.c b/gcc/testsuite/gcc.dg/store_merging_14.c index 49af24951cb..3885acb10a2 100644 --- a/gcc/testsuite/gcc.dg/store_merging_14.c +++ b/gcc/testsuite/gcc.dg/store_merging_14.c @@ -104,6 +104,42 @@ f6 (struct S *p, struct S *q) p->g = pg; } +__attribute__((noipa)) void +f7 (struct S *__restrict p, struct S *__restrict q) +{ + p->a |= q->a; + p->b |= q->b; + p->c |= q->c; + p->d |= q->d; + p->e |= q->e; + p->f |= q->f; + p->g |= q->g; +} + +__attribute__((noipa)) void +f8 (struct S *__restrict p, struct S *__restrict q) +{ + p->a &= q->a; + p->b &= q->b; + p->c &= q->c; + p->d &= q->d; + p->e &= q->e; + p->f &= q->f; + p->g &= q->g; +} + +__attribute__((noipa)) void +f9 (struct S *__restrict p, struct S *__restrict q) +{ + p->a ^= q->a; + p->b ^= q->b; + p->c ^= q->c; + p->d ^= q->d; + p->e ^= q->e; + p->f ^= q->f; + p->g ^= q->g; +} + struct S s = { 72, 20, 21, 73, 22, 23, 24, 25, 26, 74, 27 }; struct S t = { 75, 0x71, 0x72, 76, 0x7f04, 0x78, 0x31, 0x32, 0x34, 77, 0xf1f2f3f4f5f6f7f8ULL }; struct S u = { 78, 28, 29, 79, 30, 31, 32, 33, 34, 80, 35 }; @@ -151,7 +187,31 @@ main () || s.e != (40 ^ 0x31) || s.f != (41 ^ 0x32) || s.g != (42 ^ 0x34) || s.k != 74 || s.h != 27) __builtin_abort (); + f3 (&s, &v); + f7 (&s, &t); + asm volatile ("" : : : "memory"); + if (s.i != 72 || s.a != (36 | 0x71) || s.b != (37 | 0x72) || s.j != 73 + || s.c != (38 | 0x7f04) || s.d != (39 | 0x78) + || s.e != (40 | 0x31) || s.f != (41 | 0x32) + || s.g != (42 | 0x34) || s.k != 74 || s.h != 27) + __builtin_abort (); + f3 (&s, &u); + f8 (&s, &t); + asm volatile ("" : : : "memory"); + if (s.i != 72 || s.a != (28 & 0x71) || s.b != (29 & 0x72) || s.j != 73 + || s.c != (30 & 0x7f04) || s.d != (31 & 0x78) + || s.e != (32 & 0x31) || s.f != (33 & 0x32) + || s.g != (34 & 0x34) || s.k != 74 || s.h != 27) + __builtin_abort (); + f2 (&s, &v); + f9 (&s, &t); + asm volatile ("" : : : "memory"); + if (s.i != 72 || s.a != (36 ^ 0x71) || s.b != (37 ^ 0x72) || s.j != 73 + || s.c != (38 ^ 0x7f04) || s.d != (39 ^ 0x78) + || s.e != (40 ^ 0x31) || s.f != (41 ^ 0x32) + || s.g != (42 ^ 0x34) || s.k != 74 || s.h != 27) + __builtin_abort (); return 0; } -/* { dg-final { scan-tree-dump-times "Merging successful" 6 "store-merging" } } */ +/* { dg-final { scan-tree-dump-times "Merging successful" 9 "store-merging" } } */ |