mirror of git://gcc.gnu.org/git/gcc.git
PR c++/80473 allow suppressing notes about over-aligned new
gcc/cp: PR c++/80473 * init.c (build_new_1): Suppress notes about over-aligned new when the warning is suppressed. gcc/testsuite: PR c++/80473 * g++.dg/diagnostic/pr80473.C: New test. From-SVN: r247033
This commit is contained in:
parent
2260d19d4b
commit
34d57a10c4
|
|
@ -1,3 +1,9 @@
|
||||||
|
2017-04-20 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
PR c++/80473
|
||||||
|
* init.c (build_new_1): Suppress notes about over-aligned new when
|
||||||
|
the warning is suppressed.
|
||||||
|
|
||||||
2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
|
2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
|
||||||
|
|
||||||
* parser.c (cp_parser_member_declaration): Add warning with fixit
|
* parser.c (cp_parser_member_declaration): Add warning with fixit
|
||||||
|
|
|
||||||
|
|
@ -3126,13 +3126,15 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts,
|
||||||
|| CP_DECL_CONTEXT (alloc_fn) == global_namespace)
|
|| CP_DECL_CONTEXT (alloc_fn) == global_namespace)
|
||||||
&& !aligned_allocation_fn_p (alloc_fn))
|
&& !aligned_allocation_fn_p (alloc_fn))
|
||||||
{
|
{
|
||||||
warning (OPT_Waligned_new_, "%<new%> of type %qT with extended "
|
if (warning (OPT_Waligned_new_, "%<new%> of type %qT with extended "
|
||||||
"alignment %d", elt_type, TYPE_ALIGN_UNIT (elt_type));
|
"alignment %d", elt_type, TYPE_ALIGN_UNIT (elt_type)))
|
||||||
inform (input_location, "uses %qD, which does not have an alignment "
|
{
|
||||||
"parameter", alloc_fn);
|
inform (input_location, "uses %qD, which does not have an alignment "
|
||||||
if (!aligned_new_threshold)
|
"parameter", alloc_fn);
|
||||||
inform (input_location, "use %<-faligned-new%> to enable C++17 "
|
if (!aligned_new_threshold)
|
||||||
"over-aligned new support");
|
inform (input_location, "use %<-faligned-new%> to enable C++17 "
|
||||||
|
"over-aligned new support");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we found a simple case of PLACEMENT_EXPR above, then copy it
|
/* If we found a simple case of PLACEMENT_EXPR above, then copy it
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2017-04-20 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
PR c++/80473
|
||||||
|
* g++.dg/diagnostic/pr80473.C: New test.
|
||||||
|
|
||||||
2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
|
2017-04-20 Volker Reichelt <v.reichelt@netcologne.de>
|
||||||
|
|
||||||
* g++.dg/warn/Wextra-semi.C: New test.
|
* g++.dg/warn/Wextra-semi.C: New test.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
// { dg-options "-Wall -w" }
|
||||||
|
// { dg-do compile { target c++11 } }
|
||||||
|
// { dg-bogus "over-aligned new" "PR c++/80473" { target *-*-* } 0 }
|
||||||
|
|
||||||
|
template<typename T> T&& declval();
|
||||||
|
|
||||||
|
template<typename T, typename U, typename = void>
|
||||||
|
struct is_constructible { enum { value = 0 }; };
|
||||||
|
|
||||||
|
template<typename T, typename U>
|
||||||
|
struct is_constructible<T, U, decltype(::new T(declval<U>()), void())>
|
||||||
|
{ enum { value = 1 }; };
|
||||||
|
|
||||||
|
struct alignas(64) A { int i; };
|
||||||
|
|
||||||
|
constexpr bool b = is_constructible<A, A>::value;
|
||||||
Loading…
Reference in New Issue