URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/tags/gnu-src/gcc-4.5.1/gcc-4.5.1-or32-1.0rc1/gcc/testsuite/g++.dg/debug
- from Rev 301 to Rev 338
- ↔ Reverse comparison
Rev 301 → Rev 338
/pr34895.C
0,0 → 1,19
// { dg-do compile } |
// { dg-options "-O2 -g" } |
// |
// Copyright (C) 2008 Free Software Foundation, Inc. |
// Contributed by Theodore.Papadopoulo 20 Jan 2008 <Theodore.Papadopoulo@sophia.inria.fr> |
|
struct A { |
A() { } |
unsigned operator()() { return 1; } |
}; |
struct B: public A { |
typedef const A base; |
using base::operator(); |
B() { } |
}; |
int |
main() { |
B b; |
} |
pr34895.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug.exp
===================================================================
--- debug.exp (nonexistent)
+++ debug.exp (revision 338)
@@ -0,0 +1,30 @@
+# Copyright (C) 2002, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# .
+
+# G++ testsuite that uses the `dg.exp' driver.
+
+# Load support procs.
+load_lib g++-dg.exp
+
+# Initialize `dg'.
+dg-init
+
+# Main loop.
+gcc-dg-debug-runtest g++_target_compile trivial.C [list -O2 -O3] \
+ [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
+
+# All done.
+dg-finish
Index: dwarf-eh-personality-1.C
===================================================================
--- dwarf-eh-personality-1.C (nonexistent)
+++ dwarf-eh-personality-1.C (revision 338)
@@ -0,0 +1,17 @@
+// { dg-options "-fno-dwarf2-cfi-asm" }
+
+extern void bar (void);
+int foo (void)
+{
+ try {
+ bar();
+ } catch (...) {
+ return 1;
+ }
+ return 0;
+}
+
+int foobar (void)
+{
+}
+
dwarf-eh-personality-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: minimal1.C
===================================================================
--- minimal1.C (nonexistent)
+++ minimal1.C (revision 338)
@@ -0,0 +1,7 @@
+// PR debug/6387
+// Verify that -g1 works with local class member functions.
+
+void foo();
+void bar() {
+ struct A { A() { foo(); } } a;
+}
minimal1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug1.C
===================================================================
--- debug1.C (nonexistent)
+++ debug1.C (revision 338)
@@ -0,0 +1,48 @@
+// Test whether dwarf2 debug info works with named return value optimization
+// { dg-do compile }
+
+struct S
+{
+ virtual ~S();
+ S (const char *str);
+ S& operator= (const char *str);
+ operator const char *() const;
+ S& operator+= (const char *str);
+};
+inline S operator+ (const char *s1, const S &s2)
+{
+ S x (s1);
+ x += s2;
+ return x;
+}
+struct U
+{
+ U ();
+ U& operator= (const char *);
+ const char *foo() const;
+ operator const char *() const { return foo(); }
+};
+template struct V
+{
+ T v;
+};
+template struct W
+{
+ V *w;
+ W() : w (0) {}
+ const T& operator* () const { return w->v; }
+ T& operator* () { return w->v; }
+};
+struct X {
+ X();
+};
+struct Y {
+ Y (const U &u);
+};
+X::X()
+{
+ W a;
+ U b;
+ b = (*a) + "xx";
+ Y c (b);
+}
debug1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug2.C
===================================================================
--- debug2.C (nonexistent)
+++ debug2.C (revision 338)
@@ -0,0 +1,42 @@
+/* Verify that sched re-inserts needed scopes properly. */
+/* { dg-do compile } */
+/* { dg-options "-mcpu=ev5" { target alpha*-*-* } } */
+
+template
+inline void foo()
+{
+ void (T::*x)() __attribute__ ((__unused__)) = &T::bar;
+}
+
+template
+struct D
+{
+ void bar() {
+ }
+ T i;
+};
+
+template
+struct E
+{
+ void bar() {
+ foo > ();
+ *i-- = *i;
+ }
+ T i;
+};
+
+struct A {};
+template struct B { typedef typename T::t t; };
+template struct B { typedef T& t; };
+template
+struct C
+{
+ T b;
+ explicit C (const T& i) : b (i) { }
+ typename B::t operator* () const { return *b; }
+ C operator-- (int) { return C (b--); }
+};
+
+template void foo > > ();
+template void foo > > ();
debug2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: static1.C
===================================================================
--- static1.C (nonexistent)
+++ static1.C (revision 338)
@@ -0,0 +1,16 @@
+// PR c++/24569
+
+template
+struct S
+{
+ static const int u = 2 * dim;
+ static const int p[u];
+ static int f();
+};
+
+template <>
+inline int S<3>::f () { return 1; }
+
+template const int S::u;
+
+template class S<3>;
static1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug3.C
===================================================================
--- debug3.C (nonexistent)
+++ debug3.C (revision 338)
@@ -0,0 +1,47 @@
+// PR optimization/5547
+// This testcase caused ICE on IA-32, since DWARF-2 was unable
+// to emit location expression for parameter a of operator+.
+// { dg-do compile { target fpic } }
+// { dg-options "-fpic" }
+
+struct A { char *s; };
+
+inline A operator+ (char a, const A &b)
+{
+ A s;
+ s.s = new char[12];
+ s.s[0] = a;
+ return s;
+}
+
+int b (const A &);
+
+void test1 (const A &x, int y)
+{
+ int j = b ("012345"[y] + x);
+ for (int i = 0; i < y; i++);
+}
+
+void test2 (const A &x, int y)
+{
+ int j = b ("012345678"[y + 2] + x);
+ for (int i = 0; i < y; i++);
+}
+
+void test3 (const A &x, int y)
+{
+ int j = b ("012345678"[y - 6] + x);
+ for (int i = 0; i < y; i++);
+}
+
+void test4 (const A &x, int y)
+{
+ int j = b ("012345678"[2 * y - 10] + x);
+ for (int i = 0; i < y; i++);
+}
+
+void test5 (const A &x, int y)
+{
+ int j = b ("012345678"[4 * y] + x);
+ for (int i = 0; i < y; i++);
+}
debug3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr43010.C
===================================================================
--- pr43010.C (nonexistent)
+++ pr43010.C (revision 338)
@@ -0,0 +1,8 @@
+// PR debug/43010
+// { dg-do compile }
+// { dg-options "-g -femit-struct-debug-baseonly" }
+# 1 "foo.C"
+# 1 "bar.h" 1
+typedef struct { int i; } S __attribute__((aligned));
+typedef struct { struct { int i; } j; } T __attribute__((aligned));
+# 1 "foo.C" 2
pr43010.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug4.C
===================================================================
--- debug4.C (nonexistent)
+++ debug4.C (revision 338)
@@ -0,0 +1,17 @@
+/* PR debug/5770
+ This testcase failed at -O -g because the following constants
+ were optimized away since they were never referenced, but
+ since they are variables with initializers, rtl_for_decl_location
+ run expand_expr on their initializers and returned it.
+ This lead to references to constants which were deferred and thus
+ never emitted. */
+/* { dg-do link } */
+
+static const char foo[] = "foo string";
+static const char bar[30] = "bar string";
+static const wchar_t baz[] = L"baz string";
+
+int
+main ()
+{
+}
debug4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trivial.C
===================================================================
--- trivial.C (nonexistent)
+++ trivial.C (revision 338)
@@ -0,0 +1,6 @@
+/* { dg-do run } */
+
+int main(void)
+{
+ return 0;
+}
trivial.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug5.C
===================================================================
--- debug5.C (nonexistent)
+++ debug5.C (revision 338)
@@ -0,0 +1,10 @@
+// { dg-do compile }
+
+int foo()
+{
+ int a = 1;
+ int b = 1;
+ int e[a][b];
+ e[0][0] = 0;
+ return e[a-1][b-1];
+}
debug5.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug6.C
===================================================================
--- debug6.C (nonexistent)
+++ debug6.C (revision 338)
@@ -0,0 +1,7 @@
+// { dg-do compile }
+
+void foo()
+{
+ int i=1, x[i];
+}
+
debug6.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: namespace1.C
===================================================================
--- namespace1.C (nonexistent)
+++ namespace1.C (revision 338)
@@ -0,0 +1,258 @@
+/* Test DWARF namespace support.
+ This test case is based on GDB testsuite test case. */
+/* { dg-do compile } */
+
+namespace AAA {
+ char c;
+ int i;
+ int A_xyzq (int);
+ char xyzq (char);
+ class inA {
+ public:
+ int xx;
+ int fum (int);
+ };
+};
+
+int AAA::inA::fum (int i)
+{
+ return 10 + i;
+}
+
+namespace BBB {
+ char c;
+ int i;
+ int B_xyzq (int);
+ char xyzq (char);
+
+ namespace CCC {
+ char xyzq (char);
+ };
+
+ class Klasse {
+ public:
+ char xyzq (char);
+ int dummy;
+ };
+};
+
+int AAA::A_xyzq (int x)
+{
+ return 2 * x;
+}
+
+char AAA::xyzq (char c)
+{
+ return 'a';
+}
+
+
+int BBB::B_xyzq (int x)
+{
+ return 3 * x;
+}
+
+char BBB::xyzq (char c)
+{
+ return 'b';
+}
+
+char BBB::CCC::xyzq (char c)
+{
+ return 'z';
+}
+
+char BBB::Klasse::xyzq (char c)
+{
+ return 'o';
+}
+
+void marker1(void)
+{
+ return;
+}
+
+namespace
+{
+ int X = 9;
+
+ namespace G
+ {
+ int Xg = 10;
+
+ namespace
+ {
+ int XgX = 11;
+ }
+ }
+}
+
+namespace H
+{
+ int h = 14;
+}
+
+namespace I = H;
+
+namespace J
+{
+ int j = 15;
+}
+
+using namespace J;
+
+namespace K
+{
+ int k = 16;
+}
+
+namespace L
+{
+ using namespace K;
+}
+
+namespace O
+{
+ int o = 18;
+}
+
+namespace P
+{
+ using namespace O;
+}
+
+namespace Q
+{
+ using namespace P;
+}
+
+namespace R
+{
+ int r1 = 19;
+ int r2 = 20;
+}
+
+using R::r1;
+
+namespace C
+{
+ int c = 1;
+ int shadow = 12;
+
+ class CClass {
+ public:
+ int x;
+ class NestedClass {
+ public:
+ int y;
+ };
+ };
+
+ namespace
+ {
+ int cX = 6;
+
+ namespace F
+ {
+ int cXf = 7;
+
+ namespace
+ {
+ int cXfX = 8;
+ }
+ }
+ }
+
+ namespace C
+ {
+ int cc = 2;
+ }
+
+ namespace E
+ {
+ int ce = 4;
+ }
+
+ namespace D
+ {
+ int cd = 3;
+ int shadow = 13;
+
+ namespace E
+ {
+ int cde = 5;
+ }
+
+ namespace M
+ {
+ int cdm = 17;
+ }
+
+ using namespace M;
+
+ void marker2 (void)
+ {
+ // NOTE: carlton/2003-04-23: I'm listing the expressions that I
+ // plan to have GDB try to print out, just to make sure that the
+ // compiler and I agree which ones should be legal! It's easy
+ // to screw up when testing the boundaries of namespace stuff.
+ c;
+ //cc;
+ C::cc;
+ cd;
+ //C::D::cd;
+ E::cde;
+ shadow;
+ //E::ce;
+ cX;
+ F::cXf;
+ F::cXfX;
+ X;
+ G::Xg;
+ //cXOtherFile;
+ //XOtherFile;
+ G::XgX;
+ I::h;
+ j;
+ L::k;
+ //k;
+ cdm;
+ Q::o;
+ //o;
+ r1;
+ //r2;
+
+ return;
+ }
+
+ }
+}
+
+int main ()
+{
+ using AAA::inA;
+ char c1;
+
+ using namespace BBB;
+
+ c1 = xyzq ('x');
+ c1 = AAA::xyzq ('x');
+ c1 = BBB::CCC::xyzq ('m');
+
+ inA ina;
+
+ ina.xx = 33;
+
+ int y;
+
+ y = AAA::A_xyzq (33);
+ y += B_xyzq (44);
+
+ BBB::Klasse cl;
+
+ c1 = cl.xyzq('e');
+
+ marker1();
+
+ C::D::marker2 ();
+}
namespace1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug7.C
===================================================================
--- debug7.C (nonexistent)
+++ debug7.C (revision 338)
@@ -0,0 +1,18 @@
+// { dg-do compile }
+
+void f (int);
+
+int
+main() {
+
+ int a = 4;
+ int b = 5;
+ int (*x)[b] = new int[a][b]; // { dg-error "" }
+
+ x[2][1] = 7;
+
+ for (int i = 0; i < a; ++i)
+ for (int j = 0; j < b; ++j)
+ f (x[i][j]);
+ delete [] x;
+}
debug7.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug8.C
===================================================================
--- debug8.C (nonexistent)
+++ debug8.C (revision 338)
@@ -0,0 +1,2 @@
+struct t{};
+struct g : public t{};
debug8.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: namespace2.C
===================================================================
--- namespace2.C (nonexistent)
+++ namespace2.C (revision 338)
@@ -0,0 +1,8 @@
+// PR debug/36278
+// { dg-do compile }
+
+namespace N
+{
+ typedef void T;
+}
+using N::T;
namespace2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: debug9.C
===================================================================
--- debug9.C (nonexistent)
+++ debug9.C (revision 338)
@@ -0,0 +1,26 @@
+/* { dg-do assemble } */
+/* This testcase requires entries in the debug_range section in DWARF which
+ refer to a vague linkage function. */
+
+struct s
+{
+ ~s ();
+};
+
+bool f1 ();
+s f2 (s);
+
+template void
+f3(const s & a)
+{
+ while (f1 () && f1 ())
+ {
+ s c = f2(a);
+ }
+}
+
+int main()
+{
+ f3<0>(s ());
+ return 0;
+}
debug9.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: typedef1.C
===================================================================
--- typedef1.C (nonexistent)
+++ typedef1.C (revision 338)
@@ -0,0 +1,17 @@
+// PR debug/6436
+// { dg-do compile }
+
+typedef struct
+{
+ unsigned int a0, a1;
+} A __attribute__ ((aligned(8)));
+
+typedef struct
+{
+ A a;
+} B;
+
+struct C
+{
+ B *bp;
+};
typedef1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: typedef2.C
===================================================================
--- typedef2.C (nonexistent)
+++ typedef2.C (revision 338)
@@ -0,0 +1,12 @@
+// PR c++/17695
+
+template struct A
+{
+ T t;
+ A();
+};
+
+struct B
+{
+ B() { typedef int C; A a; }
+} b;
typedef2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: typedef3.C
===================================================================
--- typedef3.C (nonexistent)
+++ typedef3.C (revision 338)
@@ -0,0 +1,19 @@
+// PR debug/16261
+// { dg-do compile }
+
+namespace N
+{
+ struct A {};
+ typedef A B;
+}
+
+void foo()
+{
+ struct C
+ {
+ C(N::B) {}
+ };
+
+ N::B b;
+ C c(b);
+}
typedef3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2-1.C
===================================================================
--- dwarf2-1.C (nonexistent)
+++ dwarf2-1.C (revision 338)
@@ -0,0 +1,22 @@
+// Copyright (C) 2006 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 6 Jan 2006
+
+// PR 24824
+// Origin: wanderer@rsu.ru
+
+// { dg-options "-feliminate-dwarf2-dups" }
+
+namespace N
+{
+ struct Base
+ {
+ int m;
+ };
+
+ struct Derived : Base
+ {
+ using Base::m;
+ };
+}
+
+N::Derived thing;
dwarf2-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr44182.C
===================================================================
--- pr44182.C (nonexistent)
+++ pr44182.C (revision 338)
@@ -0,0 +1,26 @@
+// PR tree-optimization/44182
+// { dg-do compile }
+// { dg-options "-fcompare-debug" }
+
+struct S
+{
+ int i;
+ S ();
+ ~S ();
+ void f1 ();
+ void f2 (S s)
+ {
+ f3 (s.i);
+ for (int j = 0; j < s.i; j++) f1 ();
+ }
+ void f3 (int j)
+ {
+ if (j > i) f1 ();
+ }
+};
+
+void
+f (S *x)
+{
+ x->f2 (S ());
+}
pr44182.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2-2.C
===================================================================
--- dwarf2-2.C (nonexistent)
+++ dwarf2-2.C (revision 338)
@@ -0,0 +1,17 @@
+// PR debug/27057
+// { dg-do compile }
+// { dg-options "-g -feliminate-dwarf2-dups" }
+
+namespace N
+{
+}
+
+struct A
+{
+ void foo ();
+};
+
+void A::foo ()
+{
+ using namespace N;
+}
dwarf2-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: template1.C
===================================================================
--- template1.C (nonexistent)
+++ template1.C (revision 338)
@@ -0,0 +1,15 @@
+// PR c++/5118
+
+template
+class d
+{
+public:
+ d()
+ {
+ myInt = Count;
+ }
+ int myInt;
+ virtual ~d() {}
+};
+
+volatile d<5> instD;
template1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr27657.C
===================================================================
--- pr27657.C (nonexistent)
+++ pr27657.C (revision 338)
@@ -0,0 +1,9 @@
+/* { dg-do link } */
+
+const char s[] = "";
+const char *const p = s;
+
+int main()
+{
+ return 0;
+}
pr27657.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: vartrack1.C
===================================================================
--- vartrack1.C (nonexistent)
+++ vartrack1.C (revision 338)
@@ -0,0 +1,99 @@
+// This testcase used to hang the compiler in vt_find_locations.
+// { dg-do compile }
+// { dg-options "-O2 -g" }
+
+struct S
+{
+ int a;
+ S *b, *c, *d;
+};
+
+struct T
+{
+ void f1 (S *x);
+ void f2 (S *x);
+ void f3 (S *x, S *y);
+ S *e;
+};
+
+void
+T::f3 (S *x, S *y)
+{
+ while (x != this->e && (!x || x->a == 1))
+ {
+ if (x == y->c)
+ {
+ S *w = y->d;
+ if (w && w->a == 0)
+ {
+ w->a = 1;
+ y->a = 0;
+ f2 (y);
+ w = y->d;
+ }
+ if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))
+ {
+ w->a = 0;
+ x = y;
+ y = x->b;
+ }
+ else
+ {
+ if (w && (!w->d || w->d->a == 1))
+ {
+ if (w->c)
+ w->c->a = 1;
+ w->a = 0;
+ f1 (w);
+ w = y->d;
+ }
+ if (w)
+ {
+ w->a = y->a;
+ if (w->d)
+ w->d->a = 1;
+ }
+ y->a = 1;
+ f2 (y);
+ x = e;
+ }
+ }
+ else
+ {
+ S *w = y->c;
+ if (w && w->a == 0)
+ {
+ w->a = 1;
+ y->a = 0;
+ f1 (y);
+ w = y->c;
+ }
+ if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))
+ {
+ w->a = 0;
+ x = y;
+ y = x->b;
+ }
+ else
+ {
+ if (w && (!w->c || w->c->a == 1))
+ {
+ w->a = 0;
+ if (w->d)
+ w->d->a = 1;
+ f2 (w);
+ w = y->c;
+ }
+ if (w)
+ {
+ w->a = y->a;
+ if (w->c)
+ w->c->a = 1;
+ }
+ y->a = 1;
+ f1 (y);
+ x = e;
+ }
+ }
+ }
+}
vartrack1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: enum-1.C
===================================================================
--- enum-1.C (nonexistent)
+++ enum-1.C (revision 338)
@@ -0,0 +1,16 @@
+/* Verify that used enums are output. */
+/* { dg-do compile } */
+/* { dg-final { scan-assembler "JTI_MAX" } } */
+
+int var;
+
+enum java_tree_index
+{
+ JTI_MAX
+};
+
+void function (void)
+{
+ var = JTI_MAX;
+}
+
enum-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: enum-2.C
===================================================================
--- enum-2.C (nonexistent)
+++ enum-2.C (revision 338)
@@ -0,0 +1,22 @@
+/* Verify that used enums are output. */
+/* { dg-do compile } */
+/* { dg-final { scan-assembler "JTI_MAX" } } */
+
+int var;
+
+enum java_tree_index
+{
+ JTI_MAX
+};
+
+template
+void tmpl (void)
+{
+ var = JTI_MAX + X;
+}
+
+void
+function (void)
+{
+ tmpl<2>();
+}
enum-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/global-used-types-1.C
===================================================================
--- dwarf2/global-used-types-1.C (nonexistent)
+++ dwarf2/global-used-types-1.C (revision 338)
@@ -0,0 +1,13 @@
+// Contributed by Dodji Seketeli
+// { dg-options "-g -dA -fno-merge-debug-strings" }
+// { dg-do compile }
+// { dg-final { scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_enumeration_type" 1 } }
+// { dg-final { scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_enumerator" 2 } }
+// { dg-final { scan-assembler-times "ascii \"a.0\"\[\t \]+.*?DW_AT_name" 1 } }
+// { dg-final { scan-assembler-times "ascii \"b.0\"\[\t \]+.*?DW_AT_name" 1 } }
+
+struct foo
+{
+ enum { a, b };
+};
+char s[foo::b];
dwarf2/global-used-types-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-params-5.C
===================================================================
--- dwarf2/template-params-5.C (nonexistent)
+++ dwarf2/template-params-5.C (revision 338)
@@ -0,0 +1,29 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-g -dA" }
+// { dg-final { scan-assembler "DW_TAG_template_type_param" } }
+// { dg-final { scan-assembler "T.*DW_AT_name" } }
+
+template
+struct vector
+{
+ int size;
+
+ vector () : size (0)
+ {
+ }
+};
+
+template class U>
+struct bar
+{
+ U u;
+ int m;
+ bar () : m (u.size)
+ {
+ }
+};
+
+vector v;
+bar b;
+
dwarf2/template-params-5.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-params-6.C
===================================================================
--- dwarf2/template-params-6.C (nonexistent)
+++ dwarf2/template-params-6.C (revision 338)
@@ -0,0 +1,44 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-g -dA -fno-merge-debug-strings" }
+// { dg-final { scan-assembler-times "DW_TAG_GNU_template_template_param" 2 } }
+// { dg-final { scan-assembler-times "\"vector.0\".*?DW_AT_GNU_template_name" 1 } }
+// { dg-final { scan-assembler-times ".ascii \"U.0\".*?DW_AT_name" 1 } }
+
+template
+struct vector_base
+{
+ T tab[3 + 1];
+ static int get_sizeof_t()
+ {
+ return sizeof (tab);
+ }
+};
+
+template
+struct vector : public vector_base
+{
+ static int get_sizeof_t()
+ {
+ return sizeof (T);
+ }
+ T member1;
+ T member2;
+};
+
+template class U>
+struct bar
+{
+ int foo()
+ {
+ return U::get_sizeof_t ();
+ }
+};
+
+
+int
+foo_func ()
+{
+ bar b;
+ return b.foo ();
+}
dwarf2/template-params-6.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-params-7.C
===================================================================
--- dwarf2/template-params-7.C (nonexistent)
+++ dwarf2/template-params-7.C (revision 338)
@@ -0,0 +1,21 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-std=c++0x -g -dA -fno-merge-debug-strings" }
+
+// The type M<> should have one DW_TAG_GNU_template_parameter_pack DIE,
+// with no DW_AT_name attribute. We don't test the fact that it has no
+// DW_AT_name though.
+// { dg-final { scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_GNU_template_parameter_pack" 1 } }
+
+
+template
+struct M
+{
+};
+
+struct R :
+ M<>
+{
+};
+
+R r;
dwarf2/template-params-7.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/icf.C
===================================================================
--- dwarf2/icf.C (nonexistent)
+++ dwarf2/icf.C (revision 338)
@@ -0,0 +1,50 @@
+// Test support for ICF debugging.
+// { dg-do compile }
+// { dg-options "-O0 -gdwarf-2 -fenable-icf-debug -dA" }
+
+class A
+{
+ public:
+ A();
+ virtual void work();
+ virtual int p();
+ private:
+ int i;
+};
+
+class B
+{
+ public:
+ B();
+ ~B();
+ void work(const A* a);
+ private:
+ int j;
+};
+
+int
+test1(A* a)
+{
+ a->work();
+}
+
+int
+test2(A* a)
+{
+ if (a->p())
+ {
+ B b;
+ b.work(a);
+ }
+}
+
+// Verify that we get .debug_dcall and .debug_vcall tables generated
+// and that we see entries for both virtual calls.
+// { dg-final { scan-assembler "\\.section.*\.debug_dcall" } }
+// { dg-final { scan-assembler "\\.section.*\.debug_vcall" } }
+// { dg-final { scan-assembler "New caller" } }
+// { dg-final { scan-assembler "Caller DIE offset" } }
+// { dg-final { scan-assembler "Point of call" } }
+// { dg-final { scan-assembler "Callee DIE offset" } }
+// { dg-final { scan-assembler "0x0.*Vtable slot" } }
+// { dg-final { scan-assembler "0x1.*Vtable slot" } }
dwarf2/icf.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/explicit-constructor.C
===================================================================
--- dwarf2/explicit-constructor.C (nonexistent)
+++ dwarf2/explicit-constructor.C (revision 338)
@@ -0,0 +1,19 @@
+// Contributed by Dodji Seketeli
+// Origin: PR c++
+// { dg-do compile }
+// { dg-options "-O -g -dA -gno-strict-dwarf" }
+// { dg-final { scan-assembler-times "DW_AT_explicit" 2 } }
+
+struct Foo
+{
+ Foo () {}
+ explicit Foo (int) {}
+ Foo (char) {}
+ ~Foo () {};
+};
+
+void
+bar ()
+{
+ Foo foo;
+}
dwarf2/explicit-constructor.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd-any.C
===================================================================
--- dwarf2/fesd-any.C (nonexistent)
+++ dwarf2/fesd-any.C (revision 338)
@@ -0,0 +1,126 @@
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -femit-struct-debug-detailed=any" }
+// { dg-final { scan-assembler "timespec.*DW_AT_name" } }
+// { dg-final { scan-assembler "tv_sec.*DW_AT_name" } }
+// { dg-final { scan-assembler "tv_nsec.*DW_AT_name" } }
+// { dg-final { scan-assembler "itimerspec.*DW_AT_name" } }
+// { dg-final { scan-assembler "it_interval.*DW_AT_name" } }
+// { dg-final { scan-assembler "it_value.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+# 1 "fesd-any.C"
+# 1 ""
+# 1 ""
+# 1 "fesd-any.C"
+
+//#include "time.h"
+# 1 "time.h" 1 3 4
+struct timespec
+ {
+ long int tv_sec;
+ long int tv_nsec;
+ };
+
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+# 6 "fesd-any.C" 2
+
+struct timespec base_var8;
+struct itimerspec *base_var9;
+
+#include "fesd-any.h"
+
+struct gstruct_head_ordy_defn_var_base base_var1;
+struct gstruct_base_ordy_defn_var_base base_var2;
+
+struct gstruct_head_tmpl_defn_var_base< int > base_var5;
+struct gstruct_base_tmpl_defn_var_base< int > base_var6;
+
+int base_function() {
+ return 0
++ base_var1.field_head_ordy_defn_var_base
++ base_var2.field1_base_ordy_defn_var_base_ptr->field_head_ordy_defn_ptr_base
++ base_var2.field1_base_ordy_defn_var_base_fld.field_head_ordy_defn_fld_base
++ base_var2.field2_base_ordy_defn_var_base_ptr->field_base_ordy_defn_ptr_base
++ base_var2.field2_base_ordy_defn_var_base_fld.field_base_ordy_defn_fld_base
++ base_var5.field_head_tmpl_defn_var_base
++ base_var6.field1_base_tmpl_defn_var_base_ptr->field_head_tmpl_defn_ptr_base
++ base_var6.field1_base_tmpl_defn_var_base_fld.field_head_tmpl_defn_fld_base
++ base_var6.field2_base_tmpl_defn_var_base_ptr->field_base_tmpl_defn_ptr_base
++ base_var6.field2_base_tmpl_defn_var_base_fld.field_base_tmpl_defn_fld_base
+;
+}
+
dwarf2/fesd-any.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/pubnames-1.C
===================================================================
--- dwarf2/pubnames-1.C (nonexistent)
+++ dwarf2/pubnames-1.C (revision 338)
@@ -0,0 +1,22 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/39706
+// { dg-options "-g -dA -fno-merge-debug-strings" }
+// { dg-do compile }
+//
+// There should be one debug_pubnames section generated.
+// On Darwin though, there is also a label pointing at the begining of the
+// debug_pubnames section. The assembly code of that label adds an occurence
+// of section declaration assembly. So on Darwin, we need to check for two
+// occurences of the debug_pubnames section declaration.
+// { dg-final { scan-assembler-times "\.section\[\t \].*?debug_pubnames" 1 { target { ! *-*-darwin* } } } }
+// { dg-final { scan-assembler-times "\.section\[\t \].*?debug_pubnames" 2 { target { *-*-darwin* } } } }
+//
+// Then check of the presence of the names we are interested in.
+// { dg-final { scan-assembler-times "\"main.0\".*external name" 1 } }
+// { dg-final { scan-assembler-times "\"ns::ns_x.*external name" 1 } }
+// { dg-final { scan-assembler-times "\"y::y_x.*external name" 1 } }
+
+namespace ns { int ns_x; }
+class y { public: static int y_x; };
+int y::y_x;
+int main() { return ns::ns_x; }
dwarf2/pubnames-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd-none.C
===================================================================
--- dwarf2/fesd-none.C (nonexistent)
+++ dwarf2/fesd-none.C (revision 338)
@@ -0,0 +1,126 @@
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -femit-struct-debug-detailed=none" }
+// { dg-final { scan-assembler "timespec.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "tv_sec.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "tv_nsec.*DW_AT_name" } }
+// { dg-final { scan-assembler "itimerspec.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "it_interval.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "it_value.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field1_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field1_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field1_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field1_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field2_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field2_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field2_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field2_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_base_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field1_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field1_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field1_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field1_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field2_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field2_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field2_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field2_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_base_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_base_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+# 1 "fesd-none.C"
+# 1 ""
+# 1 ""
+# 1 "fesd-none.C"
+
+//#include "time.h"
+# 1 "time.h" 1 3 4
+struct timespec
+ {
+ long int tv_sec;
+ long int tv_nsec;
+ };
+
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+# 6 "fesd-none.C" 2
+
+struct timespec base_var8;
+struct itimerspec *base_var9;
+
+#include "fesd-none.h"
+
+struct gstruct_head_ordy_defn_var_base base_var1;
+struct gstruct_base_ordy_defn_var_base base_var2;
+
+struct gstruct_head_tmpl_defn_var_base< int > base_var5;
+struct gstruct_base_tmpl_defn_var_base< int > base_var6;
+
+int base_function() {
+ return 0
++ base_var1.field_head_ordy_defn_var_base
++ base_var2.field1_base_ordy_defn_var_base_ptr->field_head_ordy_defn_ptr_base
++ base_var2.field1_base_ordy_defn_var_base_fld.field_head_ordy_defn_fld_base
++ base_var2.field2_base_ordy_defn_var_base_ptr->field_base_ordy_defn_ptr_base
++ base_var2.field2_base_ordy_defn_var_base_fld.field_base_ordy_defn_fld_base
++ base_var5.field_head_tmpl_defn_var_base
++ base_var6.field1_base_tmpl_defn_var_base_ptr->field_head_tmpl_defn_ptr_base
++ base_var6.field1_base_tmpl_defn_var_base_fld.field_head_tmpl_defn_fld_base
++ base_var6.field2_base_tmpl_defn_var_base_ptr->field_base_tmpl_defn_ptr_base
++ base_var6.field2_base_tmpl_defn_var_base_fld.field_base_tmpl_defn_fld_base
+;
+}
+
dwarf2/fesd-none.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/typedef1.C
===================================================================
--- dwarf2/typedef1.C (nonexistent)
+++ dwarf2/typedef1.C (revision 338)
@@ -0,0 +1,33 @@
+// Contributed by Dodji Seketeli
+// Origin: PR c++/40705
+// { dg-options "-g -dA" }
+// { dg-do compile }
+// { dg-final { scan-assembler-times "DW_TAG_structure_type" 2 } }
+// { dg-final { scan-assembler-times "DW_AT_name: \"foo<1u>\"|\"foo<1u>..\".*DW_AT_name" 1 } }
+// { dg-final { scan-assembler-times "DW_TAG_enumeration_type" 2 } }
+// { dg-final { scan-assembler-times "DW_AT_name: \"typedef foo<1u>::type type\"|\"typedef foo<1u>::type type..\".*DW_AT_name" 1 } }
+// { dg-final { scan-assembler-times "DIE (.*) DW_TAG_enumeration_type" 2 } }
+// { dg-final { scan-assembler-times "\"e0..\".*DW_AT_name" 1 } }
+// { dg-final { scan-assembler-times "\"e1..\".*DW_AT_name" 1 } }
+
+template
+struct foo
+{
+public:
+ typedef
+ unsigned char type;
+};
+
+template<>
+struct foo<1>
+{
+ typedef enum { e0, e1 } type;
+};
+
+int
+main()
+{
+ foo<1> f;
+ foo<1>::type t = foo<1>::e1;
+ return t;
+}
dwarf2/typedef1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd.h
===================================================================
--- dwarf2/fesd.h (nonexistent)
+++ dwarf2/fesd.h (revision 338)
@@ -0,0 +1,67 @@
+/*
+where from: base = matching base; head = other header
+what kind: ordy = ordinary struct; tmpl = template struct
+definition: decl = incomplete declaration; defn = full definition
+how used: not = not used; ref = by ref; ptr = through pointer;
+ fld = as field; var = as variable
+from where: base = from base; head = other header
+*/
+
+struct gstruct_head_ordy_decl_not;
+struct gstruct_head_ordy_defn_not { int field_head_ordy_defn_not; };
+
+struct gstruct_head_ordy_decl_ref_head;
+struct gstruct_head_ordy_defn_ref_head { int field_head_ordy_defn_ref_head; };
+struct gstruct_head_ordy_defn_ptr_head { int field_head_ordy_defn_ptr_head; };
+struct gstruct_head_ordy_defn_fld_head { int field_head_ordy_defn_fld_head; };
+struct gstruct_head_ordy_defn_var_head {
+ gstruct_head_ordy_decl_ref_head *field_head_ordy_defn_var_head_inc;
+ gstruct_head_ordy_defn_ref_head *field_head_ordy_defn_var_head_ref;
+ gstruct_head_ordy_defn_ptr_head *field_head_ordy_defn_var_head_ptr;
+ gstruct_head_ordy_defn_fld_head field_head_ordy_defn_var_head_fld;
+};
+extern struct gstruct_head_ordy_defn_var_head head_var1;
+
+struct gstruct_head_ordy_decl_ref_base;
+struct gstruct_head_ordy_defn_ref_base { int field_head_ordy_defn_ref_base; };
+struct gstruct_head_ordy_defn_ptr_base { int field_head_ordy_defn_ptr_base; };
+struct gstruct_head_ordy_defn_fld_base { int field_head_ordy_defn_fld_base; };
+struct gstruct_head_ordy_defn_var_base { int field_head_ordy_defn_var_base; };
+
+template< typename T > struct gstruct_head_tmpl_decl_not;
+template< typename T > struct gstruct_head_tmpl_defn_not
+{ T field_head_tmpl_defn_not; };
+
+template< typename T > struct gstruct_head_tmpl_decl_ref_head;
+template< typename T > struct gstruct_head_tmpl_defn_ref_head
+{ T field_head_tmpl_defn_ref_head; };
+template< typename T > struct gstruct_head_tmpl_defn_ptr_head
+{ T field_head_tmpl_defn_ptr_head; };
+template< typename T > struct gstruct_head_tmpl_defn_fld_head
+{ T field_head_tmpl_defn_fld_head; };
+template< typename T > struct gstruct_head_tmpl_defn_var_head {
+ gstruct_head_tmpl_decl_ref_head< T > *field_head_tmpl_defn_var_head_inc;
+ gstruct_head_tmpl_defn_ref_head< T > *field_head_tmpl_defn_var_head_ref;
+ gstruct_head_tmpl_defn_ptr_head< T > *field_head_tmpl_defn_var_head_ptr;
+ gstruct_head_tmpl_defn_fld_head< T > field_head_tmpl_defn_var_head_fld;
+};
+extern gstruct_head_tmpl_defn_var_head< int > head_var5;
+
+template< typename T > struct gstruct_head_tmpl_decl_ref_base;
+template< typename T > struct gstruct_head_tmpl_defn_ref_base
+{ T field_head_tmpl_defn_ref_base; };
+template< typename T > struct gstruct_head_tmpl_defn_ptr_base
+{ T field_head_tmpl_defn_ptr_base; };
+template< typename T > struct gstruct_head_tmpl_defn_fld_base
+{ T field_head_tmpl_defn_fld_base; };
+template< typename T > struct gstruct_head_tmpl_defn_var_base
+{ T field_head_tmpl_defn_var_base; };
+
+inline int head_function() {
+ return 0
++ head_var1.field_head_ordy_defn_var_head_ptr->field_head_ordy_defn_ptr_head
++ head_var1.field_head_ordy_defn_var_head_fld.field_head_ordy_defn_fld_head
++ head_var5.field_head_tmpl_defn_var_head_ptr->field_head_tmpl_defn_ptr_head
++ head_var5.field_head_tmpl_defn_var_head_fld.field_head_tmpl_defn_fld_head
+;
+}
dwarf2/fesd.h
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/inline1.C
===================================================================
--- dwarf2/inline1.C (nonexistent)
+++ dwarf2/inline1.C (revision 338)
@@ -0,0 +1,18 @@
+// This isn't really testing dwarf output, but rather that we can inline f
+// even though the call precedes the definition.
+
+// { dg-options "-gdwarf-2 -dA -O" }
+// { dg-final { scan-assembler "DW_TAG_inlined_subroutine" } }
+
+template
+inline T f(T);
+
+int main()
+{
+ f(1);
+}
+
+int i;
+
+template
+inline T f(T t) { ++i; return t; }
dwarf2/inline1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/dwarf2.exp
===================================================================
--- dwarf2/dwarf2.exp (nonexistent)
+++ dwarf2/dwarf2.exp (revision 338)
@@ -0,0 +1,43 @@
+# Copyright (C) 2007, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# .
+
+# G++ testsuite that uses the `dg.exp' driver.
+
+# Load support procs.
+load_lib g++-dg.exp
+
+# If a testcase doesn't have special options, use these.
+global DEFAULT_CFLAGS
+if ![info exists DEFAULT_CFLAGS] then {
+ set DEFAULT_CFLAGS " -gdwarf-2"
+}
+
+# Initialize `dg'.
+dg-init
+
+# Main loop.
+set comp_output [g++_target_compile \
+ "$srcdir/$subdir/../trivial.C" "trivial.S" assembly \
+ "additional_flags=-gdwarf-2"]
+if { ! [string match "*: target system does not support the * debug format*" \
+ $comp_output] } {
+ remove-build-file "trivial.S"
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C $srcdir/c-c++-common/dwarf2/*.c]] \
+ "" $DEFAULT_CFLAGS
+}
+
+# All done.
+dg-finish
Index: dwarf2/fesd-reduced.h
===================================================================
--- dwarf2/fesd-reduced.h (nonexistent)
+++ dwarf2/fesd-reduced.h (revision 338)
@@ -0,0 +1,42 @@
+#include "fesd.h"
+
+struct gstruct_base_ordy_decl_not;
+struct gstruct_base_ordy_defn_not { int field_base_ordy_defn_not; };
+
+struct gstruct_base_ordy_decl_ref_base;
+struct gstruct_base_ordy_defn_ref_base { int field_base_ordy_defn_ref_base; };
+struct gstruct_base_ordy_defn_ptr_base { int field_base_ordy_defn_ptr_base; };
+struct gstruct_base_ordy_defn_fld_base { int field_base_ordy_defn_fld_base; };
+struct gstruct_base_ordy_defn_var_base {
+ gstruct_head_ordy_decl_ref_base *field1_base_ordy_defn_var_base_inc;
+ gstruct_head_ordy_defn_ref_base *field1_base_ordy_defn_var_base_ref;
+ gstruct_head_ordy_defn_ptr_base *field1_base_ordy_defn_var_base_ptr;
+ gstruct_head_ordy_defn_fld_base field1_base_ordy_defn_var_base_fld;
+ gstruct_base_ordy_decl_ref_base *field2_base_ordy_defn_var_base_inc;
+ gstruct_base_ordy_defn_ref_base *field2_base_ordy_defn_var_base_ref;
+ gstruct_base_ordy_defn_ptr_base *field2_base_ordy_defn_var_base_ptr;
+ gstruct_base_ordy_defn_fld_base field2_base_ordy_defn_var_base_fld;
+};
+
+template< typename T > struct gstruct_base_tmpl_decl_not;
+template< typename T > struct gstruct_base_tmpl_defn_not
+{ int field_base_tmpl_defn_not; };
+
+template< typename T > struct gstruct_base_tmpl_decl_ref_base;
+template< typename T > struct gstruct_base_tmpl_defn_ref_base
+{ int field_base_tmpl_defn_ref_base; };
+template< typename T > struct gstruct_base_tmpl_defn_ptr_base
+{ int field_base_tmpl_defn_ptr_base; };
+template< typename T > struct gstruct_base_tmpl_defn_fld_base
+{ int field_base_tmpl_defn_fld_base; };
+template< typename T > struct gstruct_base_tmpl_defn_var_base {
+ gstruct_head_tmpl_decl_ref_base< T > *field1_base_tmpl_defn_var_base_inc;
+ gstruct_head_tmpl_defn_ref_base< T > *field1_base_tmpl_defn_var_base_ref;
+ gstruct_head_tmpl_defn_ptr_base< T > *field1_base_tmpl_defn_var_base_ptr;
+ gstruct_head_tmpl_defn_fld_base< T > field1_base_tmpl_defn_var_base_fld;
+ gstruct_base_tmpl_decl_ref_base< T > *field2_base_tmpl_defn_var_base_inc;
+ gstruct_base_tmpl_defn_ref_base< T > *field2_base_tmpl_defn_var_base_ref;
+ gstruct_base_tmpl_defn_ptr_base< T > *field2_base_tmpl_defn_var_base_ptr;
+ gstruct_base_tmpl_defn_fld_base< T > field2_base_tmpl_defn_var_base_fld;
+};
+
dwarf2/fesd-reduced.h
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd-baseonly.h
===================================================================
--- dwarf2/fesd-baseonly.h (nonexistent)
+++ dwarf2/fesd-baseonly.h (revision 338)
@@ -0,0 +1,42 @@
+#include "fesd.h"
+
+struct gstruct_base_ordy_decl_not;
+struct gstruct_base_ordy_defn_not { int field_base_ordy_defn_not; };
+
+struct gstruct_base_ordy_decl_ref_base;
+struct gstruct_base_ordy_defn_ref_base { int field_base_ordy_defn_ref_base; };
+struct gstruct_base_ordy_defn_ptr_base { int field_base_ordy_defn_ptr_base; };
+struct gstruct_base_ordy_defn_fld_base { int field_base_ordy_defn_fld_base; };
+struct gstruct_base_ordy_defn_var_base {
+ gstruct_head_ordy_decl_ref_base *field1_base_ordy_defn_var_base_inc;
+ gstruct_head_ordy_defn_ref_base *field1_base_ordy_defn_var_base_ref;
+ gstruct_head_ordy_defn_ptr_base *field1_base_ordy_defn_var_base_ptr;
+ gstruct_head_ordy_defn_fld_base field1_base_ordy_defn_var_base_fld;
+ gstruct_base_ordy_decl_ref_base *field2_base_ordy_defn_var_base_inc;
+ gstruct_base_ordy_defn_ref_base *field2_base_ordy_defn_var_base_ref;
+ gstruct_base_ordy_defn_ptr_base *field2_base_ordy_defn_var_base_ptr;
+ gstruct_base_ordy_defn_fld_base field2_base_ordy_defn_var_base_fld;
+};
+
+template< typename T > struct gstruct_base_tmpl_decl_not;
+template< typename T > struct gstruct_base_tmpl_defn_not
+{ int field_base_tmpl_defn_not; };
+
+template< typename T > struct gstruct_base_tmpl_decl_ref_base;
+template< typename T > struct gstruct_base_tmpl_defn_ref_base
+{ int field_base_tmpl_defn_ref_base; };
+template< typename T > struct gstruct_base_tmpl_defn_ptr_base
+{ int field_base_tmpl_defn_ptr_base; };
+template< typename T > struct gstruct_base_tmpl_defn_fld_base
+{ int field_base_tmpl_defn_fld_base; };
+template< typename T > struct gstruct_base_tmpl_defn_var_base {
+ gstruct_head_tmpl_decl_ref_base< T > *field1_base_tmpl_defn_var_base_inc;
+ gstruct_head_tmpl_defn_ref_base< T > *field1_base_tmpl_defn_var_base_ref;
+ gstruct_head_tmpl_defn_ptr_base< T > *field1_base_tmpl_defn_var_base_ptr;
+ gstruct_head_tmpl_defn_fld_base< T > field1_base_tmpl_defn_var_base_fld;
+ gstruct_base_tmpl_decl_ref_base< T > *field2_base_tmpl_defn_var_base_inc;
+ gstruct_base_tmpl_defn_ref_base< T > *field2_base_tmpl_defn_var_base_ref;
+ gstruct_base_tmpl_defn_ptr_base< T > *field2_base_tmpl_defn_var_base_ptr;
+ gstruct_base_tmpl_defn_fld_base< T > field2_base_tmpl_defn_var_base_fld;
+};
+
dwarf2/fesd-baseonly.h
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/localclass1.C
===================================================================
--- dwarf2/localclass1.C (nonexistent)
+++ dwarf2/localclass1.C (revision 338)
@@ -0,0 +1,76 @@
+// PR c++/27017
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -feliminate-unused-debug-types -fno-merge-debug-strings" }
+
+int
+foo (int arg1)
+{
+ struct localstruct1
+ {
+ static inline int staticfn1 (int arg2)
+ {
+ int var2 = arg2 << 2;
+ return arg2 + var2;
+ }
+ static int staticfn2 (int arg3)
+ {
+ int var3 = arg3 << 2;
+ return arg3 + var3;
+ }
+ static inline int staticfn3 (int arg4)
+ {
+ int var4 = arg4 << 2;
+ return arg4 + var4;
+ }
+ static int staticfn4 (int arg5)
+ {
+ int var5 = arg5 << 2;
+ return arg5 + var5;
+ }
+ int method1 (int arg6)
+ {
+ int var6 = arg6 << 2;
+ return arg6 + var6;
+ }
+ };
+ struct localstruct2
+ {
+ static inline int staticfn5 (int arg7)
+ {
+ int var7 = arg7 << 2;
+ return arg7 + var7;
+ }
+ static int staticfn6 (int arg8)
+ {
+ int var8 = arg8 << 2;
+ return arg8 + var8;
+ }
+ };
+ return localstruct1::staticfn1 (arg1) + localstruct1::staticfn2 (arg1);
+}
+
+int
+main ()
+{
+ return foo (1) - 10;
+}
+
+// { dg-final { scan-assembler "main\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "foo\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "staticfn1\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "staticfn2\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "staticfn3\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "staticfn4\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "staticfn5\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "staticfn6\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "method1\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "arg1\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "arg2\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "arg3\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg4\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg5\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg6\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg7\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg8\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "localstruct1\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "localstruct2\[^\n\r\]*DW_AT_name" } }
dwarf2/localclass1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd-sys.h
===================================================================
--- dwarf2/fesd-sys.h (nonexistent)
+++ dwarf2/fesd-sys.h (revision 338)
@@ -0,0 +1,42 @@
+#include "fesd.h"
+
+struct gstruct_base_ordy_decl_not;
+struct gstruct_base_ordy_defn_not { int field_base_ordy_defn_not; };
+
+struct gstruct_base_ordy_decl_ref_base;
+struct gstruct_base_ordy_defn_ref_base { int field_base_ordy_defn_ref_base; };
+struct gstruct_base_ordy_defn_ptr_base { int field_base_ordy_defn_ptr_base; };
+struct gstruct_base_ordy_defn_fld_base { int field_base_ordy_defn_fld_base; };
+struct gstruct_base_ordy_defn_var_base {
+ gstruct_head_ordy_decl_ref_base *field1_base_ordy_defn_var_base_inc;
+ gstruct_head_ordy_defn_ref_base *field1_base_ordy_defn_var_base_ref;
+ gstruct_head_ordy_defn_ptr_base *field1_base_ordy_defn_var_base_ptr;
+ gstruct_head_ordy_defn_fld_base field1_base_ordy_defn_var_base_fld;
+ gstruct_base_ordy_decl_ref_base *field2_base_ordy_defn_var_base_inc;
+ gstruct_base_ordy_defn_ref_base *field2_base_ordy_defn_var_base_ref;
+ gstruct_base_ordy_defn_ptr_base *field2_base_ordy_defn_var_base_ptr;
+ gstruct_base_ordy_defn_fld_base field2_base_ordy_defn_var_base_fld;
+};
+
+template< typename T > struct gstruct_base_tmpl_decl_not;
+template< typename T > struct gstruct_base_tmpl_defn_not
+{ int field_base_tmpl_defn_not; };
+
+template< typename T > struct gstruct_base_tmpl_decl_ref_base;
+template< typename T > struct gstruct_base_tmpl_defn_ref_base
+{ int field_base_tmpl_defn_ref_base; };
+template< typename T > struct gstruct_base_tmpl_defn_ptr_base
+{ int field_base_tmpl_defn_ptr_base; };
+template< typename T > struct gstruct_base_tmpl_defn_fld_base
+{ int field_base_tmpl_defn_fld_base; };
+template< typename T > struct gstruct_base_tmpl_defn_var_base {
+ gstruct_head_tmpl_decl_ref_base< T > *field1_base_tmpl_defn_var_base_inc;
+ gstruct_head_tmpl_defn_ref_base< T > *field1_base_tmpl_defn_var_base_ref;
+ gstruct_head_tmpl_defn_ptr_base< T > *field1_base_tmpl_defn_var_base_ptr;
+ gstruct_head_tmpl_defn_fld_base< T > field1_base_tmpl_defn_var_base_fld;
+ gstruct_base_tmpl_decl_ref_base< T > *field2_base_tmpl_defn_var_base_inc;
+ gstruct_base_tmpl_defn_ref_base< T > *field2_base_tmpl_defn_var_base_ref;
+ gstruct_base_tmpl_defn_ptr_base< T > *field2_base_tmpl_defn_var_base_ptr;
+ gstruct_base_tmpl_defn_fld_base< T > field2_base_tmpl_defn_var_base_fld;
+};
+
dwarf2/fesd-sys.h
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/localclass2.C
===================================================================
--- dwarf2/localclass2.C (nonexistent)
+++ dwarf2/localclass2.C (revision 338)
@@ -0,0 +1,76 @@
+// PR c++/27017
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -O2 -feliminate-unused-debug-types -fno-merge-debug-strings" }
+
+int
+foo (int arg1)
+{
+ struct localstruct1
+ {
+ static inline int staticfn1 (int arg2)
+ {
+ int var2 = arg2 << 2;
+ return arg2 + var2;
+ }
+ static int staticfn2 (int arg3)
+ {
+ int var3 = arg3 << 2;
+ return arg3 + var3;
+ }
+ static inline int staticfn3 (int arg4)
+ {
+ int var4 = arg4 << 2;
+ return arg4 + var4;
+ }
+ static int staticfn4 (int arg5)
+ {
+ int var5 = arg5 << 2;
+ return arg5 + var5;
+ }
+ int method1 (int arg6)
+ {
+ int var6 = arg6 << 2;
+ return arg6 + var6;
+ }
+ };
+ struct localstruct2
+ {
+ static inline int staticfn5 (int arg7)
+ {
+ int var7 = arg7 << 2;
+ return arg7 + var7;
+ }
+ static int staticfn6 (int arg8)
+ {
+ int var8 = arg8 << 2;
+ return arg8 + var8;
+ }
+ };
+ return localstruct1::staticfn1 (arg1) + localstruct1::staticfn2 (arg1);
+}
+
+int
+main ()
+{
+ return foo (1) - 10;
+}
+
+// { dg-final { scan-assembler "main\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "foo\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "staticfn1\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "staticfn2\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "staticfn3\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "staticfn4\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "staticfn5\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "staticfn6\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "method1\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "arg1\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "arg2\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "arg3\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg4\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg5\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg6\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg7\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "arg8\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "localstruct1\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler-not "localstruct2\[^\n\r\]*DW_AT_name" } }
dwarf2/localclass2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/imported-module-2.C
===================================================================
--- dwarf2/imported-module-2.C (nonexistent)
+++ dwarf2/imported-module-2.C (revision 338)
@@ -0,0 +1,18 @@
+// Contributed by Dodji Seketeli
+// Origin: PR debug/38390
+// { dg-do compile }
+// { dg-options "-g -dA -gno-strict-dwarf" }
+// { dg-final { scan-assembler "DW_TAG_imported_module" } }
+
+namespace A
+{
+ int v;
+}
+
+int
+f ()
+{
+ using namespace A;
+ return v;
+}
+
dwarf2/imported-module-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/imported-module-3.C
===================================================================
--- dwarf2/imported-module-3.C (nonexistent)
+++ dwarf2/imported-module-3.C (revision 338)
@@ -0,0 +1,17 @@
+// PR debug/39379
+// { dg-do compile }
+// { dg-options "-g -dA -gno-strict-dwarf" }
+// { dg-final { scan-assembler "DW_TAG_imported_module" } }
+
+namespace A
+{
+ int v;
+}
+
+int
+main ()
+{
+ using namespace A;
+ v++;
+ return v - 1;
+}
dwarf2/imported-module-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/imported-module.C
===================================================================
--- dwarf2/imported-module.C (nonexistent)
+++ dwarf2/imported-module.C (revision 338)
@@ -0,0 +1,35 @@
+// Contributed by Dodji Seketeli
+// Origin: PR debug/37410
+// { dg-do compile }
+
+namespace A1
+ {
+ int aaa = 1;
+ };
+namespace A2
+ {
+ int aaa = 2;
+ };
+
+int
+foo (void)
+{
+ int x;
+
+ {
+ int block_create;
+ using namespace A1;
+
+ block_create = aaa; /* break1 */
+ }
+
+ {
+ int block_create;
+ using namespace A2;
+
+ block_create = aaa; /* break2 */
+ }
+
+ return x = 0;
+}
+
dwarf2/imported-module.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/const1.C
===================================================================
--- dwarf2/const1.C (nonexistent)
+++ dwarf2/const1.C (revision 338)
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-O -gdwarf-2 -dA -gno-strict-dwarf -fno-merge-debug-strings" } */
+/* { dg-require-visibility "" } */
+/* { dg-final { scan-assembler "DW_AT_location\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_addr\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*fnx\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_stack_value" } } */
+
+extern void fnx () __attribute__((visibility ("hidden")));
+void (* const f) () = fnx;
dwarf2/const1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/imported-module-4.C
===================================================================
--- dwarf2/imported-module-4.C (nonexistent)
+++ dwarf2/imported-module-4.C (revision 338)
@@ -0,0 +1,21 @@
+// PR debug/39379
+// { dg-do compile }
+// { dg-options "-g -dA -gno-strict-dwarf" }
+// { dg-final { scan-assembler "DW_TAG_imported_module" } }
+
+namespace A
+{
+ int v;
+}
+
+int
+f ()
+{
+ int i;
+ {
+ using namespace A;
+ v++;
+ i = v - 1;
+ }
+ return i;
+}
dwarf2/imported-module-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/const2.C
===================================================================
--- dwarf2/const2.C (nonexistent)
+++ dwarf2/const2.C (revision 338)
@@ -0,0 +1,6 @@
+/* { dg-do compile { target powerpc_altivec_ok } } */
+/* { dg-options "-O -gdwarf-2 -dA -maltivec" } */
+/* { dg-final { scan-assembler "DW_AT_const_value" } } */
+
+typedef float FloatVect __attribute__((__vector_size__(16)));
+const FloatVect Foo = { 250000000.0, 0.0, 0.0, 0.0 };
dwarf2/const2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/redeclaration-1.C
===================================================================
--- dwarf2/redeclaration-1.C (nonexistent)
+++ dwarf2/redeclaration-1.C (revision 338)
@@ -0,0 +1,18 @@
+// Origin: PR debug/43325
+// { dg-options "-g -dA" }
+// { dg-do compile }
+
+// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE \[^\n\r\]*DW_TAG_lexical_block\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_low_pc\[\n\r\]{1,2}\[^\n\r\]*DW_AT_high_pc\[\n\r\]{1,2}\[^\n\r\]*\\(DIE \[^\n\r\]*DW_TAG_variable\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_name" 2 } }
+
+namespace S
+{
+ int
+ f()
+ {
+ int i = 42;
+ {
+ extern int i;
+ return i;
+ }
+ }
+}
dwarf2/redeclaration-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/const2b.C
===================================================================
--- dwarf2/const2b.C (nonexistent)
+++ dwarf2/const2b.C (revision 338)
@@ -0,0 +1,7 @@
+/* { dg-do compile { target i386*-*-* } } */
+/* { dg-options "-O -gdwarf-2 -dA -msse" } */
+/* { dg-require-effective-target sse } */
+/* { dg-final { scan-assembler "DW_AT_const_value" } } */
+
+typedef float FloatVect __attribute__((__vector_size__(16)));
+const FloatVect Foo = { 250000000.0, 0.0, 0.0, 0.0 };
dwarf2/const2b.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd-any.h
===================================================================
--- dwarf2/fesd-any.h (nonexistent)
+++ dwarf2/fesd-any.h (revision 338)
@@ -0,0 +1,42 @@
+#include "fesd.h"
+
+struct gstruct_base_ordy_decl_not;
+struct gstruct_base_ordy_defn_not { int field_base_ordy_defn_not; };
+
+struct gstruct_base_ordy_decl_ref_base;
+struct gstruct_base_ordy_defn_ref_base { int field_base_ordy_defn_ref_base; };
+struct gstruct_base_ordy_defn_ptr_base { int field_base_ordy_defn_ptr_base; };
+struct gstruct_base_ordy_defn_fld_base { int field_base_ordy_defn_fld_base; };
+struct gstruct_base_ordy_defn_var_base {
+ gstruct_head_ordy_decl_ref_base *field1_base_ordy_defn_var_base_inc;
+ gstruct_head_ordy_defn_ref_base *field1_base_ordy_defn_var_base_ref;
+ gstruct_head_ordy_defn_ptr_base *field1_base_ordy_defn_var_base_ptr;
+ gstruct_head_ordy_defn_fld_base field1_base_ordy_defn_var_base_fld;
+ gstruct_base_ordy_decl_ref_base *field2_base_ordy_defn_var_base_inc;
+ gstruct_base_ordy_defn_ref_base *field2_base_ordy_defn_var_base_ref;
+ gstruct_base_ordy_defn_ptr_base *field2_base_ordy_defn_var_base_ptr;
+ gstruct_base_ordy_defn_fld_base field2_base_ordy_defn_var_base_fld;
+};
+
+template< typename T > struct gstruct_base_tmpl_decl_not;
+template< typename T > struct gstruct_base_tmpl_defn_not
+{ int field_base_tmpl_defn_not; };
+
+template< typename T > struct gstruct_base_tmpl_decl_ref_base;
+template< typename T > struct gstruct_base_tmpl_defn_ref_base
+{ int field_base_tmpl_defn_ref_base; };
+template< typename T > struct gstruct_base_tmpl_defn_ptr_base
+{ int field_base_tmpl_defn_ptr_base; };
+template< typename T > struct gstruct_base_tmpl_defn_fld_base
+{ int field_base_tmpl_defn_fld_base; };
+template< typename T > struct gstruct_base_tmpl_defn_var_base {
+ gstruct_head_tmpl_decl_ref_base< T > *field1_base_tmpl_defn_var_base_inc;
+ gstruct_head_tmpl_defn_ref_base< T > *field1_base_tmpl_defn_var_base_ref;
+ gstruct_head_tmpl_defn_ptr_base< T > *field1_base_tmpl_defn_var_base_ptr;
+ gstruct_head_tmpl_defn_fld_base< T > field1_base_tmpl_defn_var_base_fld;
+ gstruct_base_tmpl_decl_ref_base< T > *field2_base_tmpl_defn_var_base_inc;
+ gstruct_base_tmpl_defn_ref_base< T > *field2_base_tmpl_defn_var_base_ref;
+ gstruct_base_tmpl_defn_ptr_base< T > *field2_base_tmpl_defn_var_base_ptr;
+ gstruct_base_tmpl_defn_fld_base< T > field2_base_tmpl_defn_var_base_fld;
+};
+
dwarf2/fesd-any.h
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/anonname1.C
===================================================================
--- dwarf2/anonname1.C (nonexistent)
+++ dwarf2/anonname1.C (revision 338)
@@ -0,0 +1,18 @@
+// PR debug/41828
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -std=c++0x" }
+// { dg-final { scan-assembler-not "
dwarf2/anonname1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/static-local-var-in-ctor.C
===================================================================
--- dwarf2/static-local-var-in-ctor.C (nonexistent)
+++ dwarf2/static-local-var-in-ctor.C (revision 338)
@@ -0,0 +1,37 @@
+// PR debug/39372
+// { dg-do compile }
+// { dg-options "-O0 -g -dA" }
+// { dg-final { scan-assembler "DW_OP_addr\[^\n\r\]*\[\n\r\]*\[^\n\r\]*staticvar1" } }
+// { dg-final { scan-assembler "DW_OP_addr\[^\n\r\]*\[\n\r\]*\[^\n\r\]*staticvar2" } }
+
+extern void f (int *);
+
+struct A
+{
+ A(int i);
+ void foo(int i);
+};
+
+A::A(int i)
+{
+ static int *staticvar1 = new int(i);
+ f (staticvar1);
+}
+
+void A::foo(int i)
+{
+ static int *staticvar2 = new int(i);
+ f (staticvar2);
+}
+
+void f (int *)
+{
+}
+
+int
+main (void)
+{
+ A a(42);
+ a.foo(42);
+ return 0;
+}
dwarf2/static-local-var-in-ctor.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/pr41063.C
===================================================================
--- dwarf2/pr41063.C (nonexistent)
+++ dwarf2/pr41063.C (revision 338)
@@ -0,0 +1,20 @@
+// Contributed by Cary Coutant
+// Origin: PR debug/41063
+// { dg-do compile }
+
+struct A {
+ virtual void run();
+};
+
+void test() {
+ struct B : public A {
+ void run() {
+ struct C : public A {
+ C() { }
+ B *b_;
+ };
+ C c;
+ }
+ };
+ B b;
+}
dwarf2/pr41063.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/nested-1.C
===================================================================
--- dwarf2/nested-1.C (nonexistent)
+++ dwarf2/nested-1.C (revision 338)
@@ -0,0 +1,29 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/40109
+// { dg-do compile }
+// { dg-options "-g -dA -O0" }
+
+namespace A
+{
+
+ class B
+ {
+ };
+ typedef A::B AB;
+};
+
+int
+main()
+{
+ A::AB ab;
+ return 0;
+}
+
+// { dg-final { scan-assembler "DW_TAG_typedef" } }
+//
+// What we want to do here is to be sure that the DIE of A::AB is generated
+// as a child of the DIE of the namespace A declaration.
+// So this test won't catch a regression on this fix yet. To write a proper
+// test for this fix, we would need a dwarf reader written in tcl,
+// or something along those lines.
+
dwarf2/nested-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd-none.h
===================================================================
--- dwarf2/fesd-none.h (nonexistent)
+++ dwarf2/fesd-none.h (revision 338)
@@ -0,0 +1,42 @@
+#include "fesd.h"
+
+struct gstruct_base_ordy_decl_not;
+struct gstruct_base_ordy_defn_not { int field_base_ordy_defn_not; };
+
+struct gstruct_base_ordy_decl_ref_base;
+struct gstruct_base_ordy_defn_ref_base { int field_base_ordy_defn_ref_base; };
+struct gstruct_base_ordy_defn_ptr_base { int field_base_ordy_defn_ptr_base; };
+struct gstruct_base_ordy_defn_fld_base { int field_base_ordy_defn_fld_base; };
+struct gstruct_base_ordy_defn_var_base {
+ gstruct_head_ordy_decl_ref_base *field1_base_ordy_defn_var_base_inc;
+ gstruct_head_ordy_defn_ref_base *field1_base_ordy_defn_var_base_ref;
+ gstruct_head_ordy_defn_ptr_base *field1_base_ordy_defn_var_base_ptr;
+ gstruct_head_ordy_defn_fld_base field1_base_ordy_defn_var_base_fld;
+ gstruct_base_ordy_decl_ref_base *field2_base_ordy_defn_var_base_inc;
+ gstruct_base_ordy_defn_ref_base *field2_base_ordy_defn_var_base_ref;
+ gstruct_base_ordy_defn_ptr_base *field2_base_ordy_defn_var_base_ptr;
+ gstruct_base_ordy_defn_fld_base field2_base_ordy_defn_var_base_fld;
+};
+
+template< typename T > struct gstruct_base_tmpl_decl_not;
+template< typename T > struct gstruct_base_tmpl_defn_not
+{ int field_base_tmpl_defn_not; };
+
+template< typename T > struct gstruct_base_tmpl_decl_ref_base;
+template< typename T > struct gstruct_base_tmpl_defn_ref_base
+{ int field_base_tmpl_defn_ref_base; };
+template< typename T > struct gstruct_base_tmpl_defn_ptr_base
+{ int field_base_tmpl_defn_ptr_base; };
+template< typename T > struct gstruct_base_tmpl_defn_fld_base
+{ int field_base_tmpl_defn_fld_base; };
+template< typename T > struct gstruct_base_tmpl_defn_var_base {
+ gstruct_head_tmpl_decl_ref_base< T > *field1_base_tmpl_defn_var_base_inc;
+ gstruct_head_tmpl_defn_ref_base< T > *field1_base_tmpl_defn_var_base_ref;
+ gstruct_head_tmpl_defn_ptr_base< T > *field1_base_tmpl_defn_var_base_ptr;
+ gstruct_head_tmpl_defn_fld_base< T > field1_base_tmpl_defn_var_base_fld;
+ gstruct_base_tmpl_decl_ref_base< T > *field2_base_tmpl_defn_var_base_inc;
+ gstruct_base_tmpl_defn_ref_base< T > *field2_base_tmpl_defn_var_base_ref;
+ gstruct_base_tmpl_defn_ptr_base< T > *field2_base_tmpl_defn_var_base_ptr;
+ gstruct_base_tmpl_defn_fld_base< T > field2_base_tmpl_defn_var_base_fld;
+};
+
dwarf2/fesd-none.h
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-func-params-1.C
===================================================================
--- dwarf2/template-func-params-1.C (nonexistent)
+++ dwarf2/template-func-params-1.C (revision 338)
@@ -0,0 +1,16 @@
+// Contributed by Dodji Seketeli
+// origin PR debug/30161
+// { dg-options "-g -dA" }
+// { dg-do compile }
+// { dg-final { scan-assembler "DW_TAG_template_type_param" } }
+// { dg-final { scan-assembler "U.*DW_AT_name" } }
+
+template
+U
+func(U m)
+{
+ return m;
+}
+
+int i = func(2);
+
dwarf2/template-func-params-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/local-var-in-contructor.C
===================================================================
--- dwarf2/local-var-in-contructor.C (nonexistent)
+++ dwarf2/local-var-in-contructor.C (revision 338)
@@ -0,0 +1,30 @@
+// Contributed by Dodji Seketeli
+// Origin PR27574
+// { dg-do compile }
+// { dg-options "-O0 -g" }
+// { dg-final { scan-assembler "problem" } }
+
+void f (int *)
+{
+}
+
+class A
+{
+public:
+ A(int i);
+};
+
+A::A(int i)
+{
+ int *problem = new int(i);
+ f (problem);
+}
+
+int
+main (void)
+{
+ A a (0);
+
+ return 0;
+}
+
dwarf2/local-var-in-contructor.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/static-data-member1.C
===================================================================
--- dwarf2/static-data-member1.C (nonexistent)
+++ dwarf2/static-data-member1.C (revision 338)
@@ -0,0 +1,12 @@
+// { dg-do compile }
+// { dg-options "-g -dA -fno-merge-debug-strings" }
+
+struct A
+{
+ static int staticdatamember;
+};
+
+int A::staticdatamember = 6;
+
+// { dg-final { scan-assembler "DW_TAG_member\[^\n\r\]*\[\n\r\]*\[^\n\r\]*staticdatamember\[^\n\r\]*DW_AT_name" } }
+// { dg-final { scan-assembler "DW_TAG_variable\[^\n\r\]*\[\n\r\]*\[^\n\r\]*DW_AT_specification" } }
dwarf2/static-data-member1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-func-params-2.C
===================================================================
--- dwarf2/template-func-params-2.C (nonexistent)
+++ dwarf2/template-func-params-2.C (revision 338)
@@ -0,0 +1,22 @@
+// Contributed by Dodji Seketeli
+// origin PR debug/30161
+// { dg-options "-g -dA" }
+// { dg-do compile }
+// { dg-final { scan-assembler "DW_TAG_template_value_param" } }
+// { dg-final { scan-assembler "i.*DW_AT_name" } }
+// { dg-final { scan-assembler "3.*DW_AT_const_value" } }
+
+
+template
+int
+func()
+{
+ int j = i;
+ return j;
+}
+
+const int foo = 1;
+const int bar = 2;
+
+int h = func();
+
dwarf2/template-func-params-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/static-data-member2.C
===================================================================
--- dwarf2/static-data-member2.C (nonexistent)
+++ dwarf2/static-data-member2.C (revision 338)
@@ -0,0 +1,12 @@
+// PR debug/26965
+// { dg-options "-gdwarf-2 -dA" }
+// { dg-final { scan-assembler-not "DW_TAG_variable" } }
+// { dg-final { scan-assembler-not "DW_TAG_enumerator" } }
+// { dg-final { scan-assembler-not "DW_TAG_enumeration_type" } }
+
+enum x { i = 1 };
+class c {
+ static const x beg = i;
+ int foo () { return (int) beg; }
+};
+void bar () { }
dwarf2/static-data-member2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-func-params-3.C
===================================================================
--- dwarf2/template-func-params-3.C (nonexistent)
+++ dwarf2/template-func-params-3.C (revision 338)
@@ -0,0 +1,24 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-g -dA -gno-strict-dwarf -fno-merge-debug-strings" }
+// { dg-final { scan-assembler "DW_TAG_template_value_param" } }
+// { dg-final { scan-assembler "f.*DW_AT_name" } }
+// { dg-final { scan-assembler "DW_AT_location\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_addr\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*_Z4blehv\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_stack_value" } } */
+
+typedef void (*func_ptr)();
+
+template
+int
+func()
+{
+ f();
+ return 0;
+}
+
+void
+bleh()
+{
+}
+
+int c = func();
+
dwarf2/template-func-params-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/imported-decl-1.C
===================================================================
--- dwarf2/imported-decl-1.C (nonexistent)
+++ dwarf2/imported-decl-1.C (revision 338)
@@ -0,0 +1,17 @@
+// PR debug/39524
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -O0 -fno-merge-debug-strings" }
+
+namespace A
+{
+ static int var2 = 2;
+}
+
+int
+func ()
+{
+ using A::var2;
+ return var2;
+}
+
+// { dg-final { scan-assembler-times "var2\[^\n\r\]*DW_AT_name" 1 } }
dwarf2/imported-decl-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-func-params-4.C
===================================================================
--- dwarf2/template-func-params-4.C (nonexistent)
+++ dwarf2/template-func-params-4.C (revision 338)
@@ -0,0 +1,38 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-std=c++0x -g -dA" }
+//
+// In theory the compiler instantiates count,
+// count and count. In practice, only
+// count is emitted, thanks to constant folding.
+// So in theory, each of the 3 instances of count yields a
+// DW_TAG_GNU_template_parameter_pack DIE, but in practise, there is only one
+// DW_TAG_GNU_template_parameter_pack as there is only count
+// is emitted.
+// { dg-final { scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_GNU_template_parameter_pack" 1} }
+// { dg-final { scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_template_type_param" 3} }
+
+
+template struct count;
+
+template <>
+struct count<>
+{
+ static const int value = 0;
+};
+
+template
+struct count
+{
+ static const int value = 1 + count::value;
+};
+
+template
+int
+do_count()
+{
+ return count::value;
+}
+
+int c = do_count();
+
dwarf2/template-func-params-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-func-params-5.C
===================================================================
--- dwarf2/template-func-params-5.C (nonexistent)
+++ dwarf2/template-func-params-5.C (revision 338)
@@ -0,0 +1,28 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-g -dA" }
+// { dg-final { scan-assembler "DW_TAG_template_type_param" } }
+// { dg-final { scan-assembler "T.*DW_AT_name" } }
+
+template
+struct vector
+{
+ int size;
+
+ vector () : size (0)
+ {
+ }
+};
+
+
+template class U>
+int
+bar()
+{
+ U u;
+ return u.size;
+}
+
+vector v;
+int j = bar();
+
dwarf2/template-func-params-5.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-func-params-6.C
===================================================================
--- dwarf2/template-func-params-6.C (nonexistent)
+++ dwarf2/template-func-params-6.C (revision 338)
@@ -0,0 +1,38 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-g -dA -fno-merge-debug-strings" }
+// { dg-final { scan-assembler-times "DW_TAG_GNU_template_template_param" 2 } }
+// { dg-final { scan-assembler-times "\"vector.0\".*?DW_AT_GNU_template_name" 1 } }
+// { dg-final { scan-assembler-times ".ascii \"U.0\".*?DW_AT_name" 1 } }
+
+template
+struct vector_base
+{
+
+ static int get_sizeof_t()
+ {
+ return 0;
+ }
+};
+
+template
+struct vector : public vector_base
+{
+ static int get_sizeof_t()
+ {
+ return sizeof (T);
+ }
+ T member1;
+ T member2;
+};
+
+template class U>
+int
+bar()
+{
+ return U::get_sizeof_t();
+}
+
+int i = bar();
+
+
dwarf2/template-func-params-6.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-func-params-7.C
===================================================================
--- dwarf2/template-func-params-7.C (nonexistent)
+++ dwarf2/template-func-params-7.C (revision 338)
@@ -0,0 +1,59 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-g -dA -std=c++0x -fno-merge-debug-strings" }
+// { dg-do compile }
+
+// There must be 5 subprograms generated:
+// printf(const char*), printf,
+// printf, printf and foo().
+// { dg-final {scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_subprogram" 5 } }
+
+// That makes 6 template type parameters.
+// { dg-final {scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_template_type_param" 6 } }
+// { dg-final {scan-assembler-times "\"printf.0\".*?DW_AT_name" 1 } }
+// { dg-final {scan-assembler-times "\"printf.0\".*?DW_AT_name" 1 } }
+// { dg-final {scan-assembler-times "\"printf.0\".*?DW_AT_name" 1 } }
+// { dg-final {scan-assembler-times "\"printf.0\".*?DW_AT_name" 1 } }
+
+// printf and printf have a pack expansion as
+// function parameters. There should then be 3
+// DW_TAG_GNU_template_parameter_pack and 3 DW_TAG_GNU_formal_parameter_pack DIEs
+// { dg-final {scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_GNU_template_parameter_pack" 3 } }
+// { dg-final {scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_GNU_formal_parameter_pack" 3 } }
+// These 3 function template instantiations has a total of 3 template
+// parameters named T.
+// { dg_final {scan-assembler-times "\.ascii \"T.0\"\[\t \]+.*?DW_AT_name" 3 } }
+
+
+void
+printf(const char* s)
+{
+ /* Commented this to not pull std::cout into what should be
+ a simple test.
+ while (*s)
+ std::cout << *s++;
+ */
+}
+
+template
+void
+printf(const char* s,
+ T value,
+ PackTypes... args)
+{
+ while (*s)
+ {
+ if (*s == '%' && *++s != '%')
+ {
+ /* std::cout << value; */
+ return printf(++s, args...);
+ }
+ }
+}
+
+void
+foo ()
+{
+ int x;
+ printf("%c %d", x, 'x', 3);
+}
dwarf2/template-func-params-7.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/namespace-1.C
===================================================================
--- dwarf2/namespace-1.C (nonexistent)
+++ dwarf2/namespace-1.C (revision 338)
@@ -0,0 +1,30 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/41170
+// { dg-options "-g -dA -fno-merge-debug-strings -gno-strict-dwarf" }
+//
+// We want to test that there is a DW_TAG_namespace DIE DW_AT_name is set
+// to "not_emitted". That namespace die has a child DW_TAG_typedef DIE
+// which DW_AT_name is the null terminated string "T".
+// { dg-final { scan-assembler-times "DIE +\\(.*?\\) DW_TAG_namespace" 1 } }
+// { dg-final { scan-assembler-times "\"not_emitted.0\".*?DW_AT_name" 1 } }
+// { dg-final { scan-assembler-times "DIE +\\(.*?\\) DW_TAG_typedef" 1 } }
+// { dg-final { scan-assembler-times "\.ascii \"T.0\"\[\t \]+.*?DW_AT_name" 1 } }
+
+struct strukt
+{
+ int m;
+};
+
+namespace not_emitted
+{
+ typedef strukt T;
+}
+
+int
+main()
+{
+ not_emitted::T t;
+ t.m = 0;
+ return 0;
+}
+
dwarf2/namespace-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd-reduced.C
===================================================================
--- dwarf2/fesd-reduced.C (nonexistent)
+++ dwarf2/fesd-reduced.C (revision 338)
@@ -0,0 +1,126 @@
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -femit-struct-debug-reduced" }
+// { dg-final { scan-assembler "timespec.*DW_AT_name" } }
+// { dg-final { scan-assembler "tv_sec.*DW_AT_name" } }
+// { dg-final { scan-assembler "tv_nsec.*DW_AT_name" } }
+// { dg-final { scan-assembler "itimerspec.*DW_AT_name" } }
+// { dg-final { scan-assembler "it_interval.*DW_AT_name" } }
+// { dg-final { scan-assembler "it_value.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+# 1 "fesd-reduced.C"
+# 1 ""
+# 1 ""
+# 1 "fesd-reduced.C"
+
+//#include "time.h"
+# 1 "time.h" 1 3 4
+struct timespec
+ {
+ long int tv_sec;
+ long int tv_nsec;
+ };
+
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+# 6 "fesd-reduced.C" 2
+
+struct timespec base_var8;
+struct itimerspec *base_var9;
+
+#include "fesd-reduced.h"
+
+struct gstruct_head_ordy_defn_var_base base_var1;
+struct gstruct_base_ordy_defn_var_base base_var2;
+
+struct gstruct_head_tmpl_defn_var_base< int > base_var5;
+struct gstruct_base_tmpl_defn_var_base< int > base_var6;
+
+int base_function() {
+ return 0
++ base_var1.field_head_ordy_defn_var_base
++ base_var2.field1_base_ordy_defn_var_base_ptr->field_head_ordy_defn_ptr_base
++ base_var2.field1_base_ordy_defn_var_base_fld.field_head_ordy_defn_fld_base
++ base_var2.field2_base_ordy_defn_var_base_ptr->field_base_ordy_defn_ptr_base
++ base_var2.field2_base_ordy_defn_var_base_fld.field_base_ordy_defn_fld_base
++ base_var5.field_head_tmpl_defn_var_base
++ base_var6.field1_base_tmpl_defn_var_base_ptr->field_head_tmpl_defn_ptr_base
++ base_var6.field1_base_tmpl_defn_var_base_fld.field_head_tmpl_defn_fld_base
++ base_var6.field2_base_tmpl_defn_var_base_ptr->field_base_tmpl_defn_ptr_base
++ base_var6.field2_base_tmpl_defn_var_base_fld.field_base_tmpl_defn_fld_base
+;
+}
+
dwarf2/fesd-reduced.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-params-1.C
===================================================================
--- dwarf2/template-params-1.C (nonexistent)
+++ dwarf2/template-params-1.C (revision 338)
@@ -0,0 +1,15 @@
+// Contributed by Dodji Seketeli
+// origin PR debug/30161
+// { dg-options "-g -dA" }
+// { dg-do compile }
+// { dg-final { scan-assembler "DW_TAG_template_type_param" } }
+// { dg-final { scan-assembler "U.*DW_AT_name" } }
+
+template
+class A
+{
+ U m;
+};
+
+A a;
+
dwarf2/template-params-1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd-baseonly.C
===================================================================
--- dwarf2/fesd-baseonly.C (nonexistent)
+++ dwarf2/fesd-baseonly.C (revision 338)
@@ -0,0 +1,126 @@
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -femit-struct-debug-baseonly" }
+// { dg-final { scan-assembler "timespec.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "tv_sec.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "tv_nsec.*DW_AT_name" } }
+// { dg-final { scan-assembler "itimerspec.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "it_interval.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "it_value.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+# 1 "fesd-baseonly.C"
+# 1 ""
+# 1 ""
+# 1 "fesd-baseonly.C"
+
+//#include "time.h"
+# 1 "time.h" 1 3 4
+struct timespec
+ {
+ long int tv_sec;
+ long int tv_nsec;
+ };
+
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+# 6 "fesd-baseonly.C" 2
+
+struct timespec base_var8;
+struct itimerspec *base_var9;
+
+#include "fesd-baseonly.h"
+
+struct gstruct_head_ordy_defn_var_base base_var1;
+struct gstruct_base_ordy_defn_var_base base_var2;
+
+struct gstruct_head_tmpl_defn_var_base< int > base_var5;
+struct gstruct_base_tmpl_defn_var_base< int > base_var6;
+
+int base_function() {
+ return 0
++ base_var1.field_head_ordy_defn_var_base
++ base_var2.field1_base_ordy_defn_var_base_ptr->field_head_ordy_defn_ptr_base
++ base_var2.field1_base_ordy_defn_var_base_fld.field_head_ordy_defn_fld_base
++ base_var2.field2_base_ordy_defn_var_base_ptr->field_base_ordy_defn_ptr_base
++ base_var2.field2_base_ordy_defn_var_base_fld.field_base_ordy_defn_fld_base
++ base_var5.field_head_tmpl_defn_var_base
++ base_var6.field1_base_tmpl_defn_var_base_ptr->field_head_tmpl_defn_ptr_base
++ base_var6.field1_base_tmpl_defn_var_base_fld.field_head_tmpl_defn_fld_base
++ base_var6.field2_base_tmpl_defn_var_base_ptr->field_base_tmpl_defn_ptr_base
++ base_var6.field2_base_tmpl_defn_var_base_fld.field_base_tmpl_defn_fld_base
+;
+}
+
dwarf2/fesd-baseonly.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-params-2.C
===================================================================
--- dwarf2/template-params-2.C (nonexistent)
+++ dwarf2/template-params-2.C (revision 338)
@@ -0,0 +1,23 @@
+// Contributed by Dodji Seketeli
+// origin PR debug/30161
+// { dg-options "-g -dA" }
+// { dg-do compile }
+// { dg-final { scan-assembler "DW_TAG_template_value_param" } }
+// { dg-final { scan-assembler "i.*DW_AT_name" } }
+// { dg-final { scan-assembler "3.*DW_AT_const_value" } }
+
+template
+struct A
+{
+ int m;
+ A ()
+ {
+ m = i;
+ }
+};
+
+const int foo = 1;
+const int bar = 2;
+
+A a;
+
dwarf2/template-params-2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-params-3.C
===================================================================
--- dwarf2/template-params-3.C (nonexistent)
+++ dwarf2/template-params-3.C (revision 338)
@@ -0,0 +1,25 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-g -dA -gno-strict-dwarf -fno-merge-debug-strings" }
+// { dg-final { scan-assembler "DW_TAG_template_value_param" } }
+// { dg-final { scan-assembler "f.*DW_AT_name" } }
+// { dg-final { scan-assembler "DW_AT_location\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_addr\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*_Z4blehv\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_stack_value" } } */
+
+typedef void (*func_ptr) ();
+
+template
+struct A
+{
+ A ()
+ {
+ f ();
+ }
+};
+
+void
+bleh ()
+{
+}
+
+A a;
+
dwarf2/template-params-3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/fesd-sys.C
===================================================================
--- dwarf2/fesd-sys.C (nonexistent)
+++ dwarf2/fesd-sys.C (revision 338)
@@ -0,0 +1,126 @@
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -femit-struct-debug-detailed=sys" }
+// { dg-final { scan-assembler "timespec.*DW_AT_name" } }
+// { dg-final { scan-assembler "tv_sec.*DW_AT_name" } }
+// { dg-final { scan-assembler "tv_nsec.*DW_AT_name" } }
+// { dg-final { scan-assembler "itimerspec.*DW_AT_name" } }
+// { dg-final { scan-assembler "it_interval.*DW_AT_name" } }
+// { dg-final { scan-assembler "it_value.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_ordy_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_fld_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_head_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_decl_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_ref_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "gstruct_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_ptr_head.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_ordy_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_ordy_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_ordy_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_tmpl_defn_fld_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_var_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field1_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_inc.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_ref.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_ptr.*DW_AT_name" } }
+// { dg-final { scan-assembler "field2_base_tmpl_defn_var_base_fld.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler-not "field_head_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_decl_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_ref_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "gstruct_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+// { dg-final { scan-assembler "field_base_tmpl_defn_ptr_base.*DW_AT_name" } }
+# 1 "fesd-sys.C"
+# 1 ""
+# 1 ""
+# 1 "fesd-sys.C"
+
+//#include "time.h"
+# 1 "time.h" 1 3 4
+struct timespec
+ {
+ long int tv_sec;
+ long int tv_nsec;
+ };
+
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+# 6 "fesd-sys.C" 2
+
+struct timespec base_var8;
+struct itimerspec *base_var9;
+
+#include "fesd-sys.h"
+
+struct gstruct_head_ordy_defn_var_base base_var1;
+struct gstruct_base_ordy_defn_var_base base_var2;
+
+struct gstruct_head_tmpl_defn_var_base< int > base_var5;
+struct gstruct_base_tmpl_defn_var_base< int > base_var6;
+
+int base_function() {
+ return 0
++ base_var1.field_head_ordy_defn_var_base
++ base_var2.field1_base_ordy_defn_var_base_ptr->field_head_ordy_defn_ptr_base
++ base_var2.field1_base_ordy_defn_var_base_fld.field_head_ordy_defn_fld_base
++ base_var2.field2_base_ordy_defn_var_base_ptr->field_base_ordy_defn_ptr_base
++ base_var2.field2_base_ordy_defn_var_base_fld.field_base_ordy_defn_fld_base
++ base_var5.field_head_tmpl_defn_var_base
++ base_var6.field1_base_tmpl_defn_var_base_ptr->field_head_tmpl_defn_ptr_base
++ base_var6.field1_base_tmpl_defn_var_base_fld.field_head_tmpl_defn_fld_base
++ base_var6.field2_base_tmpl_defn_var_base_ptr->field_base_tmpl_defn_ptr_base
++ base_var6.field2_base_tmpl_defn_var_base_fld.field_base_tmpl_defn_fld_base
+;
+}
+
dwarf2/fesd-sys.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: dwarf2/template-params-4.C
===================================================================
--- dwarf2/template-params-4.C (nonexistent)
+++ dwarf2/template-params-4.C (revision 338)
@@ -0,0 +1,36 @@
+// Contributed by Dodji Seketeli
+// Origin PR debug/30161
+// { dg-options "-std=c++0x -g -dA" }
+//
+// In theory the compiler instantiates count,
+// count and count. In practice, only
+// count is emitted, thanks to constant folding.
+// So in theory, each of the 3 instances of count yields a
+// DW_TAG_GNU_template_parameter_pack DIE, but in practise, there is only one
+// DW_TAG_GNU_template_parameter_pack as there is only count
+// is emitted.
+// { dg-final { scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_GNU_template_parameter_pack" 1} }
+// { dg-final { scan-assembler-times "DIE \\(0x.*?\\) DW_TAG_template_type_param" 3} }
+
+template struct count;
+
+template <>
+struct count<>
+{
+ static const int value = 0;
+};
+
+template
+struct count
+{
+ static const int value = 1 + count::value;
+};
+
+int
+foo ()
+{
+ count c;
+ int nb = count::value;
+ return nb;
+}
+
dwarf2/template-params-4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: using1.C
===================================================================
--- using1.C (nonexistent)
+++ using1.C (revision 338)
@@ -0,0 +1,15 @@
+// PR c++/19406
+// { dg-do compile }
+
+struct A
+{
+ virtual int foo();
+ double d;
+};
+
+struct B : public A
+{
+ A::d;
+};
+
+B b;
using1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: const1.C
===================================================================
--- const1.C (nonexistent)
+++ const1.C (revision 338)
@@ -0,0 +1,11 @@
+// PR c++/6381
+// Bug: we were emitting the initializer for bar, which referenced foo,
+// which was not emitted.
+
+// { dg-options "-O" }
+// { dg-do link }
+
+static const int foo[] = { 0 };
+static const int * const bar[] = { foo };
+
+int main() {}
const1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: using2.C
===================================================================
--- using2.C (nonexistent)
+++ using2.C (revision 338)
@@ -0,0 +1,21 @@
+// PR c++/22489
+
+namespace N { }
+
+struct T
+{
+ T () { }
+};
+
+void
+bar ()
+{
+ struct U : public T
+ {
+ void baz ()
+ {
+ using namespace N;
+ }
+ } u;
+ u.baz();
+}
using2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: const2.C
===================================================================
--- const2.C (nonexistent)
+++ const2.C (revision 338)
@@ -0,0 +1,15 @@
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 1 Apr 2005
+
+// { dg-options "-ggdb2" }
+// Origin: ivan
+// pinskia@gcc.gnu.org
+// Bug 20505: ICE with -ggdb2
+
+struct b
+{
+ static const int d;
+ virtual bool IsEmpty() const=0;
+ int e,c;
+};
+const int b::d = ((__SIZE_TYPE__)(&((b*)1)->c) - 1);
const2.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: using3.C
===================================================================
--- using3.C (nonexistent)
+++ using3.C (revision 338)
@@ -0,0 +1,8 @@
+// PR debug/31899
+
+namespace NS {
+ int x = 0;
+ int &ref = x;
+}
+
+using NS::ref;
using3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: const3.C
===================================================================
--- const3.C (nonexistent)
+++ const3.C (revision 338)
@@ -0,0 +1,3 @@
+/* { dg-do compile } */
+typedef float FloatVect __attribute__((__vector_size__(16)));
+const FloatVect Foo = { 250000000.0, 0.0, 0.0, 0.0 };
const3.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: const4.C
===================================================================
--- const4.C (nonexistent)
+++ const4.C (revision 338)
@@ -0,0 +1,2 @@
+/* { dg-do compile } */
+const __complex__ int x = 2i;
const4.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr22514.C
===================================================================
--- pr22514.C (nonexistent)
+++ pr22514.C (revision 338)
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+namespace s
+{
+ template struct _List_base
+ {
+ int _M_impl;
+ };
+ template struct list : _List_base
+ {
+ using _List_base::_M_impl;
+ }
+} /* { dg-error "expected unqualified-id before '\}'" } */
+s::list<1> OutputModuleListType;
pr22514.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: crash1.C
===================================================================
--- crash1.C (nonexistent)
+++ crash1.C (revision 338)
@@ -0,0 +1,17 @@
+template
+class foo
+{
+ T t;
+};
+
+class bar;
+typedef foo foobar;
+
+class obj
+{
+ virtual foobar* yeah() = 0;
+};
+
+class bar : virtual public obj
+{
+};
crash1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: anonunion1.C
===================================================================
--- anonunion1.C (nonexistent)
+++ anonunion1.C (revision 338)
@@ -0,0 +1,14 @@
+// PR debug/9039
+// Verify that the debugging backends don't get confused by ALIAS_DECLs.
+
+int foo()
+{
+ union
+ {
+ int z;
+ unsigned int w;
+ };
+
+ w = 0;
+ return 0;
+}
anonunion1.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr44178.C
===================================================================
--- pr44178.C (nonexistent)
+++ pr44178.C (revision 338)
@@ -0,0 +1,39 @@
+// PR debug/44178
+// { dg-do compile }
+// { dg-options "-funroll-loops -fcompare-debug" { target i?86-*-* x86_64-*-* } }
+// { dg-options "-fsched-pressure -funroll-loops -fschedule-insns -fcompare-debug" { target i?86-*-* x86_64-*-* } }
+
+struct A
+{
+ A ();
+ A (const A &) {}
+ A &operator = (const A &);
+};
+
+struct B
+{
+ int u1;
+ A u2;
+ int u3;
+ int i;
+};
+
+B f1 (int *);
+B f2 (int, int, int, int);
+B f3 (B *, B *);
+
+B
+f4 (int x, int y, int z)
+{
+ B b1, b2;
+ for (int i = x; i > 0; i--)
+ for (int j = y; j > 0; j--)
+ {
+ int k;
+ f1 (&k);
+ b2 = f2 (i, 0, 0, z);
+ if (b2.i) return b2;
+ f3 (&b1, &b2);
+ }
+ return b1;
+}
pr44178.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr16792.C
===================================================================
--- pr16792.C (nonexistent)
+++ pr16792.C (revision 338)
@@ -0,0 +1,10 @@
+// { dg-do compile }
+
+struct S { S(); };
+int foo (S b, double j) { };
+
+int main ()
+{
+ int foo (S, double);
+ S v;
+}
pr16792.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr15736.cc
===================================================================
--- pr15736.cc (nonexistent)
+++ pr15736.cc (revision 338)
@@ -0,0 +1,12 @@
+// Test PR 15736 fix
+// Contributed by Devang Patel
+// { dg-do compile }
+
+
+struct B {
+ int n;
+};
+
+struct A : B {
+ using B::n;
+};
Index: pr29906.C
===================================================================
--- pr29906.C (nonexistent)
+++ pr29906.C (revision 338)
@@ -0,0 +1,10 @@
+// { dg-do compile }
+// { dg-options "-g -fno-emit-class-debug-always" }
+
+struct A{
+ typedef int T;
+ virtual ~A();
+};
+struct B:public A{
+ using A::T;
+};
pr29906.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: pr30898.C
===================================================================
--- pr30898.C (nonexistent)
+++ pr30898.C (revision 338)
@@ -0,0 +1,13 @@
+// { dg-do compile }
+
+double foo()
+{
+ union
+ {
+ int i;
+ double d;
+ };
+
+ i = 0;
+ return d;
+}
pr30898.C
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property