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>
|
||||
|
||||
* parser.c (cp_parser_member_declaration): Add warning with fixit
|
||||
|
|
|
|||
|
|
@ -3126,14 +3126,16 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts,
|
|||
|| CP_DECL_CONTEXT (alloc_fn) == global_namespace)
|
||||
&& !aligned_allocation_fn_p (alloc_fn))
|
||||
{
|
||||
warning (OPT_Waligned_new_, "%<new%> of type %qT with extended "
|
||||
"alignment %d", elt_type, TYPE_ALIGN_UNIT (elt_type));
|
||||
if (warning (OPT_Waligned_new_, "%<new%> of type %qT with extended "
|
||||
"alignment %d", elt_type, TYPE_ALIGN_UNIT (elt_type)))
|
||||
{
|
||||
inform (input_location, "uses %qD, which does not have an alignment "
|
||||
"parameter", alloc_fn);
|
||||
if (!aligned_new_threshold)
|
||||
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
|
||||
into a temporary variable. */
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
* 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