aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20070212-3.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20070212-3.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20070212-3.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20070212-3.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20070212-3.c
new file mode 100644
index 000000000..174be2bd9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20070212-3.c
@@ -0,0 +1,30 @@
+struct foo { int i; int j; };
+
+int bar (struct foo *k, int k2, int f, int f2)
+{
+ int *p, *q;
+ int res;
+ if (f)
+ p = &k->i;
+ else
+ p = &k->j;
+ res = *p;
+ k->i = 1;
+ if (f2)
+ q = p;
+ else
+ q = &k2;
+ return res + *q;
+}
+
+extern void abort (void);
+
+int main()
+{
+ struct foo k;
+ k.i = 0;
+ k.j = 1;
+ if (bar (&k, 1, 1, 1) != 1)
+ abort ();
+ return 0;
+}