diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-09-18 16:08:28 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-09-18 16:08:28 +0200 |
commit | e1e160c11fcc059556449e5440d99b904b9a9e6f (patch) | |
tree | 918f44fd2c68327d746f376a8de598cc96e8b22e /gcc | |
parent | c8f298736d9cf59b6908fc57128a193124e52401 (diff) | |
download | gcc-e1e160c11fcc059556449e5440d99b904b9a9e6f.zip gcc-e1e160c11fcc059556449e5440d99b904b9a9e6f.tar.gz gcc-e1e160c11fcc059556449e5440d99b904b9a9e6f.tar.bz2 |
re PR c++/62017 (AddressSanitizer reports *-buffer-overflow in destructor when multiple virtual inheritance is used)
PR c++/62017
* asan.c (transform_statements): Don't instrument clobber statements.
* g++.dg/asan/pr62017.C: New test.
From-SVN: r215354
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/asan.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/asan/pr62017.C | 17 |
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5d85946..a8dc34e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-09-18 Jakub Jelinek <jakub@redhat.com> + + PR c++/62017 + * asan.c (transform_statements): Don't instrument clobber statements. + 2014-09-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/neon.md (*movmisalign<mode>_neon_load): Change type @@ -2072,6 +2072,7 @@ transform_statements (void) if (has_stmt_been_instrumented_p (s)) gsi_next (&i); else if (gimple_assign_single_p (s) + && !gimple_clobber_p (s) && maybe_instrument_assignment (&i)) /* Nothing to do as maybe_instrument_assignment advanced the iterator I. */; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2a68dbf..9d42700 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2014-09-18 Jakub Jelinek <jakub@redhat.com> + PR c++/62017 + * g++.dg/asan/pr62017.C: New test. + PR testsuite/63292 * gcc.dg/vect/pr59594.c (b): Increase size to N + 2 elements. diff --git a/gcc/testsuite/g++.dg/asan/pr62017.C b/gcc/testsuite/g++.dg/asan/pr62017.C new file mode 100644 index 0000000..74ef37f --- /dev/null +++ b/gcc/testsuite/g++.dg/asan/pr62017.C @@ -0,0 +1,17 @@ +// PR c++/62017 +// { dg-do run } + +struct A +{ + int x; + virtual ~A () {} +}; +struct B : public virtual A {}; +struct C : public virtual A {}; +struct D : public B, virtual public C {}; + +int +main () +{ + D d; +} |