Commit 924ef62b by Sterling Augustine Committed by Sterling Augustine

error.c (lang_decl_name): Use TFF_UNQUALIFIED_NAME flag.

gcc/cp/ChangeLog
2012-07-09  Sterling Augustine  <saugustine@google.com>

	* error.c (lang_decl_name): Use TFF_UNQUALIFIED_NAME flag.

gcc/testsuite/ChangeLog
2012-07-09  Sterling Augustine  <saugustine@google.com>

	* g++.dg/debug/dwarf2/pubnames-2.C: New.

From-SVN: r189392
parent 1cd130b0
2012-07-09 Sterling Augustine <saugustine@google.com>
* error.c (lang_decl_name): Use TFF_UNQUALIFIED_NAME flag.
2012-07-08 Steven Bosscher <steven@gcc.gnu.org> 2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
* decl.c (cp_finish_decl): Add FIXME at add_local_decl call site. * decl.c (cp_finish_decl): Add FIXME at add_local_decl call site.
......
...@@ -2633,7 +2633,7 @@ lang_decl_name (tree decl, int v, bool translate) ...@@ -2633,7 +2633,7 @@ lang_decl_name (tree decl, int v, bool translate)
dump_function_name (decl, TFF_PLAIN_IDENTIFIER); dump_function_name (decl, TFF_PLAIN_IDENTIFIER);
else if ((DECL_NAME (decl) == NULL_TREE) else if ((DECL_NAME (decl) == NULL_TREE)
&& TREE_CODE (decl) == NAMESPACE_DECL) && TREE_CODE (decl) == NAMESPACE_DECL)
dump_decl (decl, TFF_PLAIN_IDENTIFIER); dump_decl (decl, TFF_PLAIN_IDENTIFIER | TFF_UNQUALIFIED_NAME);
else else
dump_decl (DECL_NAME (decl), TFF_PLAIN_IDENTIFIER); dump_decl (DECL_NAME (decl), TFF_PLAIN_IDENTIFIER);
......
2012-07-09 Sterling Augustine <saugustine@google.com>
* g++.dg/debug/dwarf2/pubnames-2.C: New.
2012-07-09 Steven Bosscher <steven@gcc.gnu.org> 2012-07-09 Steven Bosscher <steven@gcc.gnu.org>
PR tree-optimization/53887 PR tree-optimization/53887
......
// { dg-do compile }
// { dg-options "-gpubnames -gdwarf-4 -std=c++0x -dA" }
// { dg-final { scan-assembler ".section\t.debug_pubnames" } }
// { dg-final { scan-assembler "\"\\(anonymous namespace\\)\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::G_A\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::G_B\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::G_C\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::\\(anonymous namespace\\)\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"F_A\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"F_B\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"F_C\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"inline_func_1\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::c1::c1\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::c1::~c1\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::c1::val\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"check_enum\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"main\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int>::c2\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<double>::c2\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int const\\\*>::c2\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"check<one::c1>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"check<two::c2<int> \\>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"check<two::c2<double> \\>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"check<two::c2<int const\\\*> \\>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int>::val\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<double>::val\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int const\\\*>::val\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"__static_initialization_and_destruction_0\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int>::~c2\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<double>::~c2\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int const\\\*>::~c2\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"_GLOBAL__sub_I__ZN3one3c1vE\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"anonymous_union_var\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::ci\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2v1\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2v2\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2v3\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::c1v\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::\\(anonymous namespace\\)::one_anonymous_var\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"\\(anonymous namespace\\)::c1_count\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"\\(anonymous namespace\\)::c2_count\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"\\(anonymous namespace\\)::three\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"\\(anonymous namespace\\)::three::anonymous_three_var\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler ".section\t.debug_pubtypes" } }
// { dg-final { scan-assembler "\"one::G\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::c1\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"int\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"one::c1\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<double>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"double\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<double>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int const\\\*>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"two::c2<int const\\\*>\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"F\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"anonymous_union_container\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
// { dg-final { scan-assembler "\"bool\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } }
namespace
{
int c1_count;
int c2_count;
namespace three
{
int anonymous_three_var;
}
};
namespace one
{
enum G
{
G_A,
G_B,
G_C
};
namespace {
int one_anonymous_var;
}
class c1
{
public:
static int count;
c1()
{ ++c1_count; }
~c1()
{
--c1_count;
}
enum E
{
E_A,
E_B,
E_C,
};
int
val()
{ return E_A; }
};
c1 c1v;
};
namespace two
{
const int ci = 3;
template <typename T>
class c2
{
public:
c2(T t)
: t_(t)
{
++c2_count;
}
~c2()
{ --c2_count; }
T
val()
{ return this->t_; }
T t_;
};
c2<int> c2v1(1);
c2<double> c2v2(2.0);
c2<int const*> c2v3(&ci);
};
enum F
{
F_A,
F_B,
F_C
};
template <class C>
bool
check(C* c)
{ return c->val() == 0; }
bool
check_enum(int i)
{ return i > 0; }
struct anonymous_union_container {
union {
struct astruct {
int a;
};
int b;
} u;
};
anonymous_union_container anonymous_union_var;
#ifdef __GNUC__
#define ALWAYS_INLINE __attribute__((always_inline))
#else
#define ALWAYS_INLINE
#endif
static inline ALWAYS_INLINE int
inline_func_1(int i)
{ return i * 17; }
int
main()
{
F f = F_A;
one::G g = one::G_A;
check_enum(f);
check_enum(g);
check(&one::c1v);
check(&two::c2v1);
check(&two::c2v2);
check(&two::c2v3);
anonymous_union_var.u.b = inline_func_1(3) - 51;
return anonymous_union_var.u.b;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment