aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2015-06-08 10:35:24 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2015-06-08 10:35:24 +0000
commitd216b2e085ddba748c0f61c5487783281e1f5f9f (patch)
tree93ce0d946ae170a99309f45479b8831c3c43ed81
parent02de9c16f0fc4884e06e708cb65ea4a515899e9a (diff)
downloadgcc-d216b2e085ddba748c0f61c5487783281e1f5f9f.zip
gcc-d216b2e085ddba748c0f61c5487783281e1f5f9f.tar.gz
gcc-d216b2e085ddba748c0f61c5487783281e1f5f9f.tar.bz2
re PR sanitizer/66452 ([UBSAN] *.Lubsan_data0' defined but not used)
PR sanitizer/66452 * toplev.c (check_global_declaration): Don't warn about artificial decls. * g++.dg/ubsan/pr66452.C: New test. From-SVN: r224216
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/ubsan/pr66452.C16
-rw-r--r--gcc/toplev.c1
4 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a6d3a1e..c163fcb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-06-08 Marek Polacek <polacek@redhat.com>
+
+ PR sanitizer/66452
+ * toplev.c (check_global_declaration): Don't warn about artificial
+ decls.
+
2015-06-08 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/66436
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3231e7d..c790223 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-06-08 Marek Polacek <polacek@redhat.com>
+
+ PR sanitizer/66452
+ * g++.dg/ubsan/pr66452.C: New test.
+
2015-06-08 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/66436
diff --git a/gcc/testsuite/g++.dg/ubsan/pr66452.C b/gcc/testsuite/g++.dg/ubsan/pr66452.C
new file mode 100644
index 0000000..473543c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ubsan/pr66452.C
@@ -0,0 +1,16 @@
+// PR sanitizer/66452
+// { dg-do compile }
+// { dg-options "-Wall -fsanitize=undefined" }
+
+class A {
+public:
+ A(int);
+};
+class B {
+ A m_fn1() const;
+};
+A B::m_fn1() const {
+ for (int i = 0;i;)
+ ;
+ return 0;
+}
diff --git a/gcc/toplev.c b/gcc/toplev.c
index fd2ac4e..eb8b8ac 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -534,6 +534,7 @@ check_global_declaration (tree decl)
to handle multiple external decls in different scopes. */
&& ! (DECL_NAME (decl) && TREE_USED (DECL_NAME (decl)))
&& ! DECL_EXTERNAL (decl)
+ && ! DECL_ARTIFICIAL (decl)
&& ! TREE_PUBLIC (decl)
/* A volatile variable might be used in some non-obvious way. */
&& ! TREE_THIS_VOLATILE (decl)