mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			re PR ipa/58862 (LTO profiledbootstrap failure: lto1: ICE in edge_badness, at ipa-inline.c:1008)
2013-10-29 Teresa Johnson <tejohnson@google.com> PR ipa/58862 * tree-ssa-tail-merge.c (replace_block_by): Tolerate profile insanities when updating probabilities. From-SVN: r204178
This commit is contained in:
		
							parent
							
								
									258125712b
								
							
						
					
					
						commit
						b6c0035364
					
				|  | @ -1,3 +1,9 @@ | ||||||
|  | 2013-10-29  Teresa Johnson  <tejohnson@google.com> | ||||||
|  | 
 | ||||||
|  | 	PR ipa/58862 | ||||||
|  | 	* tree-ssa-tail-merge.c (replace_block_by): Tolerate profile | ||||||
|  | 	insanities when updating probabilities. | ||||||
|  | 
 | ||||||
| 2013-10-29  David Malcolm  <dmalcolm@redhat.com> | 2013-10-29  David Malcolm  <dmalcolm@redhat.com> | ||||||
| 
 | 
 | ||||||
| 	* gdbhooks.py (CGraphNodePrinter.to_string): Update gdb | 	* gdbhooks.py (CGraphNodePrinter.to_string): Update gdb | ||||||
|  |  | ||||||
|  | @ -1467,7 +1467,7 @@ static void | ||||||
| replace_block_by (basic_block bb1, basic_block bb2) | replace_block_by (basic_block bb1, basic_block bb2) | ||||||
| { | { | ||||||
|   edge pred_edge; |   edge pred_edge; | ||||||
|   edge e1; |   edge e1, e2; | ||||||
|   edge_iterator ei; |   edge_iterator ei; | ||||||
|   unsigned int i; |   unsigned int i; | ||||||
|   gimple bb2_phi; |   gimple bb2_phi; | ||||||
|  | @ -1502,15 +1502,21 @@ replace_block_by (basic_block bb1, basic_block bb2) | ||||||
|   bb2->count += bb1->count; |   bb2->count += bb1->count; | ||||||
| 
 | 
 | ||||||
|   /* Merge the outgoing edge counts from bb1 onto bb2.  */ |   /* Merge the outgoing edge counts from bb1 onto bb2.  */ | ||||||
|  |   gcov_type out_sum = 0; | ||||||
|   FOR_EACH_EDGE (e1, ei, bb1->succs) |   FOR_EACH_EDGE (e1, ei, bb1->succs) | ||||||
|     { |     { | ||||||
|       edge e2; |  | ||||||
|       e2 = find_edge (bb2, e1->dest); |       e2 = find_edge (bb2, e1->dest); | ||||||
|       gcc_assert (e2); |       gcc_assert (e2); | ||||||
|       e2->count += e1->count; |       e2->count += e1->count; | ||||||
|       /* Recompute the probability from the new merged edge count (bb2->count
 |       out_sum += e2->count; | ||||||
|          was updated above).  */ |     } | ||||||
|       e2->probability = GCOV_COMPUTE_SCALE (e2->count, bb2->count); |   /* Recompute the edge probabilities from the new merged edge count.
 | ||||||
|  |      Use the sum of the new merged edge counts computed above instead | ||||||
|  |      of bb2's merged count, in case there are profile count insanities | ||||||
|  |      making the bb count inconsistent with the edge weights.  */ | ||||||
|  |   FOR_EACH_EDGE (e2, ei, bb2->succs) | ||||||
|  |     { | ||||||
|  |       e2->probability = GCOV_COMPUTE_SCALE (e2->count, out_sum); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|   /* Do updates that use bb1, before deleting bb1.  */ |   /* Do updates that use bb1, before deleting bb1.  */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Teresa Johnson
						Teresa Johnson