From dd90d2b2108acd851e82b45f8510b23b4b3a90b2 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sun, 3 Dec 2006 18:24:42 -0800 Subject: [PATCH] re PR c++/14329 ([4.1 only] badly formatted warnings for SRA replacements used uninitialized) 2006-12-03 Richard Henderson Andrew Pinski PR C++/14329 * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR. 2006-12-03 Richard Henderson Andrew Pinski PR C++/14329 * g++.dg/warn/unit-1.C: New test. Co-Authored-By: Andrew Pinski From-SVN: r119478 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/error.c | 17 ++++++++++++++++- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.dg/warn/unit-1.C | 10 ++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/warn/unit-1.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index cfd933c..7e482c0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2006-12-03 Richard Henderson + Andrew Pinski + + PR C++/14329 + * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR. + 2006-12-02 Andrew Pinski PR C++/30033 diff --git a/gcc/cp/error.c b/gcc/cp/error.c index c4f4d46..49f3367 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -2337,7 +2337,22 @@ cp_printer (pretty_printer *pp, text_info *text, const char *spec, { case 'A': result = args_to_string (next_tree, verbose); break; case 'C': result = code_to_string (next_tcode); break; - case 'D': result = decl_to_string (next_tree, verbose); break; + case 'D': + { + tree temp = next_tree; + if (DECL_P (temp) + && DECL_DEBUG_EXPR_IS_FROM (temp) && DECL_DEBUG_EXPR (temp)) + { + temp = DECL_DEBUG_EXPR (temp); + if (!DECL_P (temp)) + { + result = expr_to_string (temp); + break; + } + } + result = decl_to_string (temp, verbose); + } + break; case 'E': result = expr_to_string (next_tree); break; case 'F': result = fndecl_to_string (next_tree, verbose); break; case 'L': result = language_to_string (next_lang); break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2eefcc0..37cc2e2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2006-12-03 Richard Henderson + Andrew Pinski + + PR C++/14329 + * g++.dg/warn/unit-1.C: New test. + 2006-12-03 Uros Bizjak * gcc.dg/visibility-11.c: Compile with -mstringop-strategy=libcall. diff --git a/gcc/testsuite/g++.dg/warn/unit-1.C b/gcc/testsuite/g++.dg/warn/unit-1.C new file mode 100644 index 0000000..1bfe75b --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/unit-1.C @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -Wuninitialized" } */ + +struct a { int mode; }; +int sys_msgctl (void) +{ + struct a setbuf; /* { dg-warning "'setbuf\.a::mode' is used" } */ + return setbuf.mode; +} + -- 2.7.4