diff options
author | mpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-06 10:50:03 +0000 |
---|---|---|
committer | mpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-06 10:50:03 +0000 |
commit | a68f5eaa87625184cde2fa2e76ccbfcafb1c64aa (patch) | |
tree | 2d77ded57f772d24314b928b1908a20b650b2935 | |
parent | 35ae8f39d3b1a241fe457b930711589c9768f70c (diff) |
PR sanitizer/70342
* fold-const.c (tree_single_nonzero_warnv_p): For TARGET_EXPR, use
TARGET_EXPR_SLOT as a base.
* g++.dg/ubsan/null-7.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-6-branch@235958 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/fold-const.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ubsan/null-7.C | 24 |
4 files changed, 45 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index deebffdcc7b..e0c4793a53f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2016-05-06 Marek Polacek <polacek@redhat.com> + + Backported from mainline + 2016-04-29 Marek Polacek <polacek@redhat.com> + Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/70342 + * fold-const.c (tree_single_nonzero_warnv_p): For TARGET_EXPR, use + TARGET_EXPR_SLOT as a base. + 2016-05-04 Eric Botcazou <ebotcazou@adacore.com> * tree-ssa-coalesce.c (gimple_can_coalesce_p): Fix reference in head diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 9514c71c629..bb4a556d3d5 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -13549,6 +13549,9 @@ tree_single_nonzero_warnv_p (tree t, bool *strict_overflow_p) if (!DECL_P (base)) base = get_base_address (base); + if (base && TREE_CODE (base) == TARGET_EXPR) + base = TARGET_EXPR_SLOT (base); + if (!base) return false; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index df8b56000f4..7c9ba68ad59 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2016-05-06 Marek Polacek <polacek@redhat.com> + + Backported from mainline + 2016-04-29 Marek Polacek <polacek@redhat.com> + + PR sanitizer/70342 + * g++.dg/ubsan/null-7.C: New test. + 2016-05-03 Pierre-Marie de Rodat <derodat@adacore.com> * gnat.dg/debug5.adb: New testcase. diff --git a/gcc/testsuite/g++.dg/ubsan/null-7.C b/gcc/testsuite/g++.dg/ubsan/null-7.C new file mode 100644 index 00000000000..8284bc7ddfa --- /dev/null +++ b/gcc/testsuite/g++.dg/ubsan/null-7.C @@ -0,0 +1,24 @@ +// PR sanitizer/70342 +// { dg-do compile } +// { dg-options "-fsanitize=null" } + +class A {}; +class B { +public: + B(A); +}; +class C { +public: + C operator<<(B); +}; +class D { + D(const int &); + C m_blackList; +}; +D::D(const int &) { + m_blackList << A() << A() << A() << A() << A() << A() << A() << A() << A() + << A() << A() << A() << A() << A() << A() << A() << A() << A() + << A() << A() << A() << A() << A() << A() << A() << A() << A() + << A() << A() << A() << A() << A() << A() << A() << A() << A() + << A() << A() << A() << A() << A() << A() << A() << A() << A(); +} |