mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			backport: re PR c++/71871 (ICE on mixing templates and vector extensions ternary operator)
Backported from mainline 2016-07-18 Jakub Jelinek <jakub@redhat.com> PR c++/71871 * typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change. * g++.dg/ext/vector31.C: New test. From-SVN: r238464
This commit is contained in:
		
							parent
							
								
									33800c8d66
								
							
						
					
					
						commit
						966f872069
					
				|  | @ -1,3 +1,11 @@ | |||
| 2016-07-19  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	Backported from mainline | ||||
| 	2016-07-18  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	PR c++/71871 | ||||
| 	* typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change. | ||||
| 
 | ||||
| 2016-07-07  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	Backported from mainline | ||||
|  |  | |||
|  | @ -6125,8 +6125,7 @@ build_x_conditional_expr (location_t loc, tree ifexp, tree op1, tree op2, | |||
|     } | ||||
| 
 | ||||
|   expr = build_conditional_expr (loc, ifexp, op1, op2, complain); | ||||
|   if (processing_template_decl && expr != error_mark_node | ||||
|       && TREE_CODE (expr) != VEC_COND_EXPR) | ||||
|   if (processing_template_decl && expr != error_mark_node) | ||||
|     { | ||||
|       tree min = build_min_non_dep (COND_EXPR, expr, | ||||
| 				    orig_ifexp, orig_op1, orig_op2); | ||||
|  |  | |||
|  | @ -1,6 +1,11 @@ | |||
| 2016-07-19  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	Backported from mainline | ||||
| 	2016-07-18  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	PR c++/71871 | ||||
| 	* g++.dg/ext/vector31.C: New test. | ||||
| 
 | ||||
| 	2016-07-11  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	PR middle-end/71758 | ||||
|  |  | |||
|  | @ -0,0 +1,29 @@ | |||
| // PR c++/71871
 | ||||
| // { dg-do compile }
 | ||||
| 
 | ||||
| typedef unsigned int V __attribute__ ((__vector_size__ (32))); | ||||
| 
 | ||||
| template <int N> | ||||
| void | ||||
| foo (V *x) | ||||
| { | ||||
|   V a = *x; | ||||
|   a = a ? a : -1; | ||||
|   *x = a; | ||||
| } | ||||
| 
 | ||||
| template <typename T> | ||||
| void | ||||
| bar (T *x) | ||||
| { | ||||
|   T a = *x; | ||||
|   a = a ? a : -1; | ||||
|   *x = a; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| test (V *x, V *y) | ||||
| { | ||||
|   foo<0> (x); | ||||
|   bar<V> (y); | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	 Jakub Jelinek
						Jakub Jelinek