This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PR21391: pruning unused debugging types (c++ bits)
- From: Aldy Hernandez <aldyh at redhat dot com>
- To: rth at redhat dot com, gcc-patches at gcc dot gnu dot org
- Date: Tue, 11 Apr 2006 21:36:06 -0400
- Subject: PR21391: pruning unused debugging types (c++ bits)
Hi.
Here are the C++ bits. Same thing, different FE.
Bootstrapped and regtested on ppc-linux (only C++).
OK?
PR/21391
* testsuite/g++.dg/other/unused1.C: New.
* cp/parser.c (cp_parser_cast_expression): Save casted types in used
types hash table.
Index: testsuite/g++.dg/other/unused1.C
===================================================================
--- testsuite/g++.dg/other/unused1.C (revision 0)
+++ testsuite/g++.dg/other/unused1.C (revision 0)
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-g" } */
+
+/* Make sure we didn't eliminate foo because we thought it was unused. */
+
+struct foo
+{
+ int i;
+};
+
+int bar (void)
+{
+ return ((struct foo *)0x1234)->i;
+}
+
+/* { dg-final { scan-assembler "foo" } } */
Index: cp/parser.c
===================================================================
--- cp/parser.c (revision 112618)
+++ cp/parser.c (working copy)
@@ -5449,6 +5449,10 @@ cp_parser_cast_expression (cp_parser *pa
"enumeration type")))
return error_mark_node;
+ /* Save casted types in the function's used types hash table. */
+ if (debug_info_level > DINFO_LEVEL_NONE)
+ used_types_insert (TREE_TYPE (type), cfun);
+
/* Perform the cast. */
expr = build_c_cast (type, expr);
return expr;