diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-03-21 08:30:48 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-03-21 08:30:48 +0100 |
commit | 8bee092e7f9bfceae0076ebd5b7260b8b07aaf5c (patch) | |
tree | 6d3e5797881b1ebb3cb74a2adf14bca57898e98f /gcc | |
parent | 4d1b8e70fa5a3b4f305afdc977f02ae39761761b (diff) | |
download | gcc-8bee092e7f9bfceae0076ebd5b7260b8b07aaf5c.zip gcc-8bee092e7f9bfceae0076ebd5b7260b8b07aaf5c.tar.gz gcc-8bee092e7f9bfceae0076ebd5b7260b8b07aaf5c.tar.bz2 |
re PR c++/35878 ([LWG 2302] Useless NULL pointer check when constructing object)
PR c++/35878
* init.c (std_placement_new_fn_p, build_new_1): Formatting fixes.
* g++.dg/init/pr35878_1.C: Rewrite directives to scan optimized
dump instead of assembler.
* g++.dg/init/pr35878_2.C: Likewise.
* g++.dg/init/pr35878_3.C: Likewise.
From-SVN: r246303
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/init.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/pr35878_1.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/pr35878_2.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/pr35878_3.C | 6 |
6 files changed, 30 insertions, 10 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8264502e0..00dd769 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,7 +1,12 @@ +2017-03-21 Jakub Jelinek <jakub@redhat.com> + + PR c++/35878 + * init.c (std_placement_new_fn_p, build_new_1): Formatting fixes. + 2017-03-21 Ville Voutilainen <ville.voutilainen@gmail.com> PR c++/35878 - * cp/init.c (std_placement_new_fn_p): New. + * init.c (std_placement_new_fn_p): New. (build_new_1): Call it. 2017-03-20 Jason Merrill <jason@redhat.com> diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 4ec26af..7732795 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -2710,7 +2710,8 @@ malloc_alignment () /* Determine whether an allocation function is a namespace-scope non-replaceable placement new function. See DR 1748. TODO: Enable in all standard modes. */ -static bool std_placement_new_fn_p (tree alloc_fn) +static bool +std_placement_new_fn_p (tree alloc_fn) { if ((cxx_dialect > cxx14) && DECL_NAMESPACE_SCOPE_P (alloc_fn)) { @@ -3200,8 +3201,8 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, So check for a null exception spec on the op new we just called. */ nothrow = TYPE_NOTHROW_P (TREE_TYPE (alloc_fn)); - check_new = flag_check_new - || (nothrow && !std_placement_new_fn_p (alloc_fn)); + check_new + = flag_check_new || (nothrow && !std_placement_new_fn_p (alloc_fn)); if (cookie_size) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7967240..c2dc55a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,13 @@ 2017-03-21 Jakub Jelinek <jakub@redhat.com> + PR c++/35878 + * g++.dg/init/pr35878_1.C: Rewrite directives to scan optimized + dump instead of assembler. + * g++.dg/init/pr35878_2.C: Likewise. + * g++.dg/init/pr35878_3.C: Likewise. + +2017-03-21 Jakub Jelinek <jakub@redhat.com> + PR c/80097 * gcc.dg/ubsan/pr80097.c: New test. diff --git a/gcc/testsuite/g++.dg/init/pr35878_1.C b/gcc/testsuite/g++.dg/init/pr35878_1.C index b45c009..e2fc493 100644 --- a/gcc/testsuite/g++.dg/init/pr35878_1.C +++ b/gcc/testsuite/g++.dg/init/pr35878_1.C @@ -1,6 +1,8 @@ -// { dg-options "-O2 --std=gnu++11" } +// PR c++/35878 // { dg-do compile } -// { dg-final { scan-assembler "test.*%rdi, %rdi" { target i?86-*-* x86_64-*-* } } } +// { dg-options "-O2 -std=gnu++11 -fdump-tree-optimized" } +// { dg-final { scan-tree-dump-times "v_\[0-9]+\\(D\\) \[=!]= 0" 1 "optimized" } } + #include <new> #include <utility> diff --git a/gcc/testsuite/g++.dg/init/pr35878_2.C b/gcc/testsuite/g++.dg/init/pr35878_2.C index 0664494..c675cb6 100644 --- a/gcc/testsuite/g++.dg/init/pr35878_2.C +++ b/gcc/testsuite/g++.dg/init/pr35878_2.C @@ -1,6 +1,8 @@ -// { dg-options "-O2 --std=gnu++17 -fcheck-new" } +// PR c++/35878 // { dg-do compile } -// { dg-final { scan-assembler "test.*%rdi, %rdi" { target i?86-*-* x86_64-*-* } } } +// { dg-options "-O2 -std=gnu++17 -fcheck-new -fdump-tree-optimized" } +// { dg-final { scan-tree-dump-times "v_\[0-9]+\\(D\\) \[=!]= 0" 1 "optimized" } } + #include <new> #include <utility> diff --git a/gcc/testsuite/g++.dg/init/pr35878_3.C b/gcc/testsuite/g++.dg/init/pr35878_3.C index 8a5614f..9317ea1 100644 --- a/gcc/testsuite/g++.dg/init/pr35878_3.C +++ b/gcc/testsuite/g++.dg/init/pr35878_3.C @@ -1,6 +1,8 @@ -// { dg-options "-O2 --std=gnu++17" } +// PR c++/35878 // { dg-do compile } -// { dg-final { scan-assembler-not "test.*%rdi, %rdi" { target i?86-*-* x86_64-*-* } } } +// { dg-options "-O2 -std=gnu++17 -fdump-tree-optimized" } +// { dg-final { scan-tree-dump-not "v_\[0-9]+\\(D\\) \[=!]= 0" "optimized" } } + #include <new> #include <utility> |