aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-09-18 16:08:28 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2014-09-18 16:08:28 +0200
commite1e160c11fcc059556449e5440d99b904b9a9e6f (patch)
tree918f44fd2c68327d746f376a8de598cc96e8b22e /gcc
parentc8f298736d9cf59b6908fc57128a193124e52401 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/asan.c1
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/g++.dg/asan/pr62017.C17
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
diff --git a/gcc/asan.c b/gcc/asan.c
index cf5de27..6ff85bb 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -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;
+}