diff options
author | Marek Polacek <polacek@redhat.com> | 2015-06-08 10:35:24 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2015-06-08 10:35:24 +0000 |
commit | d216b2e085ddba748c0f61c5487783281e1f5f9f (patch) | |
tree | 93ce0d946ae170a99309f45479b8831c3c43ed81 | |
parent | 02de9c16f0fc4884e06e708cb65ea4a515899e9a (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ubsan/pr66452.C | 16 | ||||
-rw-r--r-- | gcc/toplev.c | 1 |
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) |