diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2016-04-05 22:58:56 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2016-04-05 20:58:56 +0000 |
commit | 84278ed9e8f6ebef5f72f933171779041b1564b3 (patch) | |
tree | ba85ba4e92c048f58a824467116dcdb53acf7068 | |
parent | d2aee115cc30f7ef14866ab9dd48c705a61c3f64 (diff) | |
download | gcc-84278ed9e8f6ebef5f72f933171779041b1564b3.zip gcc-84278ed9e8f6ebef5f72f933171779041b1564b3.tar.gz gcc-84278ed9e8f6ebef5f72f933171779041b1564b3.tar.bz2 |
re PR ipa/66223 (Diagnostic of pure virtual function call broken, including __cxa_pure_virtual)
PR ipa/66223
* ipa-devirt.c (maybe_record_node): Fix comment; use
SANITIZE_UNREACHABLE instead of SANITIZE_UNDEFINED.
* g++.dg/ipa/devirt-51.C: Use -fsanitize=unreachable.
From-SVN: r234762
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-devirt.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ipa/devirt-51.C | 2 |
4 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index df63cc5..e9f5b1e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-04-05 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/66223 + * ipa-devirt.c (maybe_record_node): Fix comment; use + SANITIZE_UNREACHABLE instead of SANITIZE_UNDEFINED. + 2016-04-05 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/70542 diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index 22ece9f..2cf018b 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -2438,9 +2438,9 @@ maybe_record_node (vec <cgraph_node *> &nodes, { gcc_assert (!target_node->global.inlined_to); gcc_assert (target_node->real_symbol_p ()); - /* When sanitizing, do not asume that cxa_pure_virutal is not called + /* When sanitizing, do not assume that __cxa_pure_virtual is not called by valid program. */ - if (flag_sanitize & SANITIZE_UNDEFINED) + if (flag_sanitize & SANITIZE_UNREACHABLE) ; /* Only add pure virtual if it is the only possible target. This way we will preserve the diagnostics about pure virtual called in many diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ab6935c..f121683 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-04-05 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/66223 + * g++.dg/ipa/devirt-51.C: Use -fsanitize=unreachable. + 2016-04-05 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/70542 diff --git a/gcc/testsuite/g++.dg/ipa/devirt-51.C b/gcc/testsuite/g++.dg/ipa/devirt-51.C index fadf9e2..236635a 100644 --- a/gcc/testsuite/g++.dg/ipa/devirt-51.C +++ b/gcc/testsuite/g++.dg/ipa/devirt-51.C @@ -2,7 +2,7 @@ variant. Either keeping virtual call or optimizing to cxa_pure_virtual is fine. */ /* { dg-do compile } */ -/* { dg-options "-O2 -fsanitize=undefined -fdump-tree-optimized" } */ +/* { dg-options "-O2 -fsanitize=unreachable -fdump-tree-optimized" } */ namespace { struct B { B* self; |