summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr46387.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr46387.c')
-rw-r--r--gcc/testsuite/gcc.dg/pr46387.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr46387.c b/gcc/testsuite/gcc.dg/pr46387.c
new file mode 100644
index 000000000..e06bd3b10
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr46387.c
@@ -0,0 +1,32 @@
+/* PR debug/46387 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2" } */
+
+struct S { double x; double y; short z; };
+int a = 0, b = 0, c;
+void bar (int, int, int);
+void baz (int *, int *, int *);
+
+void
+foo (struct S *v)
+{
+ int x, y, z;
+ if (!a && b != 0)
+ return;
+ if (v->z)
+ baz (&x, &y, &z);
+ else
+ {
+ x = v->x;
+ y = v->y;
+ }
+ x = x / (5 + 1);
+ y = y / (5 + 1);
+ if (x < 0)
+ x = 0;
+ if (x > c - 1)
+ x = c - 1;
+ if (b == 0)
+ bar (x, y, 1);
+ return;
+}