]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
dwarf2out.c (reference_to_unused): Don't emit strings in initializers just because...
authorAlexandre Oliva <aoliva@redhat.com>
Sat, 15 Dec 2007 20:16:03 +0000 (20:16 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Sat, 15 Dec 2007 20:16:03 +0000 (20:16 +0000)
gcc/ChangeLog:
* dwarf2out.c (reference_to_unused): Don't emit strings in
initializers just because of debug information.
* tree.h (TREE_ASM_WRITTEN): Document use for STRING_CSTs.
gcc/testsuite/ChangeLog:
* gcc.dg/debug/const-3.c: New.

From-SVN: r130959

gcc/ChangeLog
gcc/dwarf2out.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/debug/const-3.c [new file with mode: 0644]
gcc/tree.h

index 3921ab3601f9e1e2c65acd62fbe926e5b633e56c..0bebee04a79109c84fe0c631cf9bfbf58192a6d3 100644 (file)
@@ -1,3 +1,9 @@
+2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
+
+       * dwarf2out.c (reference_to_unused): Don't emit strings in
+       initializers just because of debug information.
+       * tree.h (TREE_ASM_WRITTEN): Document use for STRING_CSTs.
+
 2007-12-15  Sebastian Pop  <sebastian.pop@amd.com>
 
        * tree-scalar-evolution.c (number_of_iterations_for_all_loops): Replace
index 785d0fa9691301610cd1051187ad266b1d7fcd71..a0df24c446195755901898cf1a4f6677463e1697 100644 (file)
@@ -10365,6 +10365,8 @@ reference_to_unused (tree * tp, int * walk_subtrees,
       if (!node->output)
        return *tp;
     }
+  else if (TREE_CODE (*tp) == STRING_CST && !TREE_ASM_WRITTEN (*tp))
+    return *tp;
 
   return NULL_TREE;
 }
index ee443e372715451d019d341a2000d28d0c092449..a80b86a147802163bed47667bf847dd50aa7f25f 100644 (file)
@@ -1,3 +1,7 @@
+2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
+
+       * gcc.dg/debug/const-3.c: New.
+
 2007-12-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        * g++.dg/other/datasec1.C: Require named section support.
diff --git a/gcc/testsuite/gcc.dg/debug/const-3.c b/gcc/testsuite/gcc.dg/debug/const-3.c
new file mode 100644 (file)
index 0000000..2e9db49
--- /dev/null
@@ -0,0 +1,7 @@
+/* Make sure we don't emit strings just because of debug information
+   for string initializers.  */
+/* { dg-do compile } */
+/* { dg-options "-O2 -g" } */
+/* { dg-final { scan-assembler-not "dontgenerate" } } */
+static const char *p = "dontgenerate1";
+static const char *q[2] = { 0, "dontgenerate2" };
index c98a921fec6a70d8a4a13f1f747cc511e756c61b..331bdfab16efea304cdae5ecd57d13f30c7db87d 100644 (file)
@@ -546,7 +546,7 @@ struct gimple_stmt GTY(())
 
        TREE_ASM_WRITTEN in
            VAR_DECL, FUNCTION_DECL, RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE
-          BLOCK, SSA_NAME
+          BLOCK, SSA_NAME, STRING_CST
 
    used_flag:
 
@@ -1300,7 +1300,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
 /* In integral and pointer types, means an unsigned type.  */
 #define TYPE_UNSIGNED(NODE) (TYPE_CHECK (NODE)->base.unsigned_flag)
 
-/* Nonzero in a VAR_DECL means assembler code has been written.
+/* Nonzero in a VAR_DECL or STRING_CST means assembler code has been written.
    Nonzero in a FUNCTION_DECL means that the function has been compiled.
    This is interesting in an inline function, since it might not need
    to be compiled separately.