9.1.1-1
This commit is contained in:
		
							parent
							
								
									94498d7104
								
							
						
					
					
						commit
						672c273c6d
					
				
							
								
								
									
										39
									
								
								gcc9-pr90303.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								gcc9-pr90303.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| 2019-05-03  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	PR tree-optimization/90303 | ||||
| 	* ipa-devirt.c (obj_type_ref_class, get_odr_type): Don't use | ||||
| 	TYPE_CANONICAL for TYPE_STRUCTURAL_EQUALITY_P types in !in_lto_p mode. | ||||
| 
 | ||||
| 	* g++.target/i386/pr90303.C: New test. | ||||
| 
 | ||||
| --- gcc/ipa-devirt.c	(revision 270834)
 | ||||
| +++ gcc/ipa-devirt.c	(revision 270835)
 | ||||
| @@ -2020,7 +2020,7 @@ obj_type_ref_class (const_tree ref)
 | ||||
|    ref = TREE_VALUE (TYPE_ARG_TYPES (ref)); | ||||
|    gcc_checking_assert (TREE_CODE (ref) == POINTER_TYPE); | ||||
|    tree ret = TREE_TYPE (ref); | ||||
| -  if (!in_lto_p)
 | ||||
| +  if (!in_lto_p && !TYPE_STRUCTURAL_EQUALITY_P (ret))
 | ||||
|      ret = TYPE_CANONICAL (ret); | ||||
|    else | ||||
|      ret = get_odr_type (ret)->type; | ||||
| @@ -2042,7 +2042,7 @@ get_odr_type (tree type, bool insert)
 | ||||
|    int base_id = -1; | ||||
|   | ||||
|    type = TYPE_MAIN_VARIANT (type); | ||||
| -  if (!in_lto_p)
 | ||||
| +  if (!in_lto_p && !TYPE_STRUCTURAL_EQUALITY_P (type))
 | ||||
|      type = TYPE_CANONICAL (type); | ||||
|   | ||||
|    gcc_checking_assert (can_be_name_hashed_p (type) | ||||
| --- gcc/testsuite/g++.target/i386/pr90303.C	(nonexistent)
 | ||||
| +++ gcc/testsuite/g++.target/i386/pr90303.C	(revision 270835)
 | ||||
| @@ -0,0 +1,8 @@
 | ||||
| +// PR tree-optimization/90303
 | ||||
| +// { dg-do compile { target ia32 } }
 | ||||
| +// { dg-additional-options "-O2" }
 | ||||
| +
 | ||||
| +struct A { virtual void foo (); };
 | ||||
| +template <class> class B : A {};
 | ||||
| +typedef void (__attribute__((fastcall)) F) ();
 | ||||
| +B<F> e;
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user