mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Clear static chain if needed.
* cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Clear static chain if needed. * g++.dg/torture/pr60659.C: New testcase. From-SVN: r208927
This commit is contained in:
		
							parent
							
								
									6e071b1e8f
								
							
						
					
					
						commit
						1f91035fef
					
				|  | @ -1,3 +1,8 @@ | ||||||
|  | 2014-03-28  Jan Hubicka  <hubicka@ucw.cz> | ||||||
|  | 
 | ||||||
|  | 	* cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Clear | ||||||
|  | 	static chain if needed. | ||||||
|  | 
 | ||||||
| 2014-03-28  Vladimir Makarov  <vmakarov@redhat.com> | 2014-03-28  Vladimir Makarov  <vmakarov@redhat.com> | ||||||
| 
 | 
 | ||||||
| 	PR target/60697 | 	PR target/60697 | ||||||
|  |  | ||||||
|  | @ -1488,6 +1488,14 @@ cgraph_redirect_edge_call_stmt_to_callee (struct cgraph_edge *e) | ||||||
| 	  gsi_insert_before (&gsi, set_stmt, GSI_SAME_STMT); | 	  gsi_insert_before (&gsi, set_stmt, GSI_SAME_STMT); | ||||||
| 	} | 	} | ||||||
|       gimple_call_set_lhs (new_stmt, NULL_TREE); |       gimple_call_set_lhs (new_stmt, NULL_TREE); | ||||||
|  |       update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), new_stmt); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |   /* If new callee has no static chain, remove it.  */ | ||||||
|  |   if (gimple_call_chain (new_stmt) && !DECL_STATIC_CHAIN (e->callee->decl)) | ||||||
|  |     { | ||||||
|  |       gimple_call_set_chain (new_stmt, NULL); | ||||||
|  |       update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), new_stmt); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|   cgraph_set_call_stmt_including_clones (e->caller, e->call_stmt, new_stmt, false); |   cgraph_set_call_stmt_including_clones (e->caller, e->call_stmt, new_stmt, false); | ||||||
|  |  | ||||||
|  | @ -1,3 +1,7 @@ | ||||||
|  | 2014-03-28  Eric Botcazou  <ebotcazou@adacore.com> | ||||||
|  | 
 | ||||||
|  | 	* gnat.dg/opt33.adb: New testcase. | ||||||
|  | 
 | ||||||
| 2014-03-28  Vladimir Makarov  <vmakarov@redhat.com> | 2014-03-28  Vladimir Makarov  <vmakarov@redhat.com> | ||||||
| 
 | 
 | ||||||
| 	PR target/60697 | 	PR target/60697 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,41 @@ | ||||||
|  | -- { dg-do compile } | ||||||
|  | -- { dg-options "-O" } | ||||||
|  | 
 | ||||||
|  | with Ada.Containers.Ordered_Sets; | ||||||
|  | with Ada.Strings.Unbounded; | ||||||
|  | 
 | ||||||
|  | procedure Opt33 is | ||||||
|  | 
 | ||||||
|  |    type Rec is record | ||||||
|  |       Name : Ada.Strings.Unbounded.Unbounded_String; | ||||||
|  |    end record; | ||||||
|  | 
 | ||||||
|  |    function "<" (Left : Rec; Right : Rec) return Boolean; | ||||||
|  | 
 | ||||||
|  |    package My_Ordered_Sets is new Ada.Containers.Ordered_Sets (Rec); | ||||||
|  | 
 | ||||||
|  |    protected type Data is | ||||||
|  |       procedure Do_It; | ||||||
|  |    private | ||||||
|  |       Set : My_Ordered_Sets.Set; | ||||||
|  |    end Data; | ||||||
|  | 
 | ||||||
|  |    function "<" (Left : Rec; Right : Rec) return Boolean is | ||||||
|  |    begin | ||||||
|  |       return False; | ||||||
|  |    end "<"; | ||||||
|  | 
 | ||||||
|  |    protected body Data is | ||||||
|  |       procedure Do_It is | ||||||
|  |          procedure Dummy (Position : My_Ordered_Sets.Cursor) is | ||||||
|  |          begin | ||||||
|  |             null; | ||||||
|  |          end; | ||||||
|  |       begin | ||||||
|  |          Set.Iterate (Dummy'Access); | ||||||
|  |       end; | ||||||
|  |    end Data; | ||||||
|  | 
 | ||||||
|  | begin | ||||||
|  |    null; | ||||||
|  | end; | ||||||
		Loading…
	
		Reference in New Issue
	
	 Jan Hubicka
						Jan Hubicka