summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr51695.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-04 19:58:03 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-04 19:58:03 +0000
commit3003ad994664de6369b138fb81b6a91901cf64e8 (patch)
treeaf140ca4a2f43d4298d8e2199c1b85c8ba511715 /gcc/testsuite/gcc.dg/pr51695.c
parent79bdd1fe22d663bc3bb6e926bc3ae1d3af4dbfa5 (diff)
downloadgcc-3003ad994664de6369b138fb81b6a91901cf64e8.tar.gz
PR debug/51695
* dwarf2out.c (output_loc_list): For now drop >= 64KB expressions in .debug_loc on the floor. * gcc.dg/pr51695.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182886 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr51695.c')
-rw-r--r--gcc/testsuite/gcc.dg/pr51695.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr51695.c b/gcc/testsuite/gcc.dg/pr51695.c
new file mode 100644
index 00000000000..6eb45400b65
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr51695.c
@@ -0,0 +1,52 @@
+/* PR debug/51695 */
+/* { dg-do compile { target { int32plus } } } */
+/* { dg-options "-O2 -g" } */
+
+typedef struct
+{
+ struct { unsigned int t1, t2, t3, t4, t5, t6; } t;
+ int p;
+ struct { double X, Y, Z; } r;
+} T;
+typedef struct { T *h; } S;
+
+static unsigned int v = 0x12345678;
+
+int
+foo (void)
+{
+ v = (v & 0x80000000) ? ((v << 1) ^ 0xa398655d) : (v << 1);
+ return 0;
+}
+
+double
+bar (void)
+{
+ unsigned int o;
+ v = (v & 0x80000000) ? ((v << 1) ^ 0xa398655d) : (v << 1);
+ o = v & 0xffff;
+ return (double) o / 32768.0;
+}
+
+int
+baz (void)
+{
+ foo ();
+ return 0;
+}
+
+void
+test (S *x)
+{
+ T *t = x->h;
+ t->t.t1 = foo ();
+ t->t.t2 = foo ();
+ t->t.t3 = foo ();
+ t->t.t4 = foo ();
+ t->t.t5 = foo ();
+ t->t.t6 = foo ();
+ t->p = baz ();
+ t->r.X = bar ();
+ t->r.Y = bar ();
+ t->r.Z = bar ();
+}