aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2013-01-18 10:57:58 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2013-01-18 10:57:58 +0000
commit7ff37ffa0865c4c7c5610009916d66927d14c258 (patch)
tree81e9ccfc327c31e42b2fe6f6932003e7cdd0ee28
parent3aa035178c7bdfa0929bbb9f19ba0e8a9257cd1e (diff)
downloadgcc-7ff37ffa0865c4c7c5610009916d66927d14c258.zip
gcc-7ff37ffa0865c4c7c5610009916d66927d14c258.tar.gz
gcc-7ff37ffa0865c4c7c5610009916d66927d14c258.tar.bz2
re PR libmudflap/53359 (undefined reference to `__gnu_cxx::__numeric_traits_integer<int>::__min')
PR libmudflap/53359 * tree-mudflap.c (mudflap_finish_file): Skip deferred decls not found in the symtab. From-SVN: r195290
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-mudflap.c10
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6eff629..9763bca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2013-01-18 Alexandre Oliva <aoliva@redhat.com>
+ PR libmudflap/53359
+ * tree-mudflap.c (mudflap_finish_file): Skip deferred decls
+ not found in the symtab.
+
+2013-01-18 Alexandre Oliva <aoliva@redhat.com>
+
PR rtl-optimization/55547
PR rtl-optimization/53827
PR debug/53671
diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c
index 3c866bc..b250bfe 100644
--- a/gcc/tree-mudflap.c
+++ b/gcc/tree-mudflap.c
@@ -1334,6 +1334,16 @@ mudflap_finish_file (void)
if (! TREE_PUBLIC (obj) && ! TREE_ADDRESSABLE (obj))
continue;
+ /* If we're neither emitting nor referencing the symbol,
+ don't register it. We have to register external symbols
+ if they happen to be in other files not compiled with
+ mudflap (say system libraries), and we must not register
+ internal symbols that we don't emit or they'll become
+ dangling references or force symbols to be emitted that
+ didn't have to. */
+ if (!symtab_get_node (obj))
+ continue;
+
if (! COMPLETE_TYPE_P (TREE_TYPE (obj)))
{
warning (OPT_Wmudflap,