summaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/pr51628-7.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/c-c++-common/pr51628-7.c')
-rw-r--r--gcc/testsuite/c-c++-common/pr51628-7.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/c-c++-common/pr51628-7.c b/gcc/testsuite/c-c++-common/pr51628-7.c
new file mode 100644
index 00000000000..ae4a681f966
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr51628-7.c
@@ -0,0 +1,29 @@
+/* PR c/51628. */
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+
+struct pair_t
+{
+ int x;
+ int i[4];
+} __attribute__((packed, aligned (4)));
+
+extern struct pair_t p;
+extern int *x;
+extern void bar (int *);
+
+int *addr = p.i;
+
+int *
+foo (struct pair_t *p)
+{
+ int *p0, *p1;
+ p0 = p->i;
+ bar (p0);
+ p1 = &p->i[1];
+ bar (p1);
+ bar (p->i);
+ bar (&p->i[2]);
+ x = p->i;
+ return &p->i[3];
+}