diff mbox

Fix -Wsuggest-final-types warning

Message ID 20140803140428.GA3695@kam.mff.cuni.cz
State New
Headers show

Commit Message

Jan Hubicka Aug. 3, 2014, 2:04 p.m. UTC
Hi,
this patch fixes thinko and makes the type warned about to be output right.  Thanks
to Trevor for noticing that.

Bootstrapped/regtested x86_64-linux, comitted.

Honza

	* ipa-devirt.c (odr_type_warn_count): Add type.
	(possible_polymorphic_call_targets): Set it.
	(ipa_devirt): Use it.
diff mbox

Patch

Index: ipa-devirt.c
===================================================================
--- ipa-devirt.c	(revision 213518)
+++ ipa-devirt.c	(working copy)
@@ -2518,6 +2518,7 @@  devirt_variable_node_removal_hook (varpo
 /* Record about how many calls would benefit from given type to be final.  */
 struct odr_type_warn_count
 {
+  tree type;
   int count;
   gcov_type dyn_count;
 };
@@ -2738,6 +2739,7 @@  possible_polymorphic_call_targets (tree
       if (binfo)
 	matched_vtables.add (BINFO_VTABLE (binfo));
 
+
       /* Next walk recursively all derived types.  */
       if (context.speculative_maybe_derived_type)
 	for (i = 0; i < speculative_outer_type->derived_types.length(); i++)
@@ -2818,6 +2820,8 @@  possible_polymorphic_call_targets (tree
 		  final_warning_records->type_warnings[outer_type->id].count++;
 		  final_warning_records->type_warnings[outer_type->id].dyn_count
 		    += final_warning_records->dyn_count;
+		  final_warning_records->type_warnings[outer_type->id].type
+		    = outer_type->type;
 		  (*slot)->type_warning = outer_type->id + 1;
 		}
 	      if (complete
@@ -3274,12 +3278,12 @@  ipa_devirt (void)
 	       i < final_warning_records->type_warnings.length (); i++)
 	    if (final_warning_records->type_warnings[i].count)
 	      {
-		odr_type type = odr_types[i];
-		warning_at (DECL_SOURCE_LOCATION (TYPE_NAME (type->type)),
+	        tree type = final_warning_records->type_warnings[i].type;
+		warning_at (DECL_SOURCE_LOCATION (TYPE_NAME (type)),
 			    OPT_Wsuggest_final_types,
 			    "Declaring type %qD final "
 			    "would enable devirtualization of %i calls",
-			    type->type,
+			    type,
 			    final_warning_records->type_warnings[i].count);
 	      }
 	}