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
	
	 Jonathan Wakely
						Jonathan Wakely