From 84278ed9e8f6ebef5f72f933171779041b1564b3 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Tue, 5 Apr 2016 22:58:56 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/ipa-devirt.c | 4 ++-- gcc/testsuite/ChangeLog | 5 +++++ 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 df63cc59b8d..e9f5b1e8973 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-04-05 Jan Hubicka + + PR ipa/66223 + * ipa-devirt.c (maybe_record_node): Fix comment; use + SANITIZE_UNREACHABLE instead of SANITIZE_UNDEFINED. + 2016-04-05 Jakub Jelinek PR rtl-optimization/70542 diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index 22ece9f76af..2cf018bdf39 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -2438,9 +2438,9 @@ maybe_record_node (vec &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 ab6935c72fb..f121683b085 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-04-05 Jan Hubicka + + PR ipa/66223 + * g++.dg/ipa/devirt-51.C: Use -fsanitize=unreachable. + 2016-04-05 Jakub Jelinek 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 fadf9e2e089..236635af23e 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;