> Hi,
> 
> the patch below fixes the (I guess now almost infamous) typo that
> prints "Type inconsident devirtualization" to the dump.  This dumping
> has been copied and pasted to a few places so I made all of them just
> use the ipa_impossible_devirt_target function to do that.  The code
> can be consolidated quite bit more but I believe this patch is small
> enough to even be considered for the 4.9 branch, so I stopped there
> now.
> 
> Bootstrapped and tested on trunk on x86_64-linux, I am running the
> bootstrap on the 4.9 branch now.  OK for both or at least for the
> trunk?

Obviously OK :)
thanks!
> 
> Thanks,
> 
> Martin
> 
> 
> 2014-06-25  Martin Jambor  <mjam...@suse.cz>
> 
>       * ipa-prop.c (ipa_impossible_devirt_target): No longer static,
>       renamed to ipa_impossible_devirt_target.  Fix typo.
>       * ipa-prop.h (ipa_impossible_devirt_target): Declare.
>       * ipa-cp.c (ipa_get_indirect_edge_target_1): Use
>       ipa_impossible_devirt_target.
> 
> testsuite/
>       * g++.dg/ipa/pr60600.C: Fix typo.
>       * g++.dg/ipa/devirt-25.C: Likewise.
>       * g++.dg/ipa/pr61540.C: Likewise.
> 
> Index: src/gcc/ipa-cp.c
> ===================================================================
> --- src.orig/gcc/ipa-cp.c
> +++ src/gcc/ipa-cp.c
> @@ -1587,15 +1587,7 @@ ipa_get_indirect_edge_target_1 (struct c
>                  && DECL_FUNCTION_CODE (target) == BUILT_IN_UNREACHABLE)
>                 || !possible_polymorphic_call_target_p
>                      (ie, cgraph_get_node (target)))
> -             {
> -               if (dump_file)
> -                 fprintf (dump_file,
> -                          "Type inconsident devirtualization: %s/%i->%s\n",
> -                          ie->caller->name (), ie->caller->order,
> -                          IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (target)));
> -               target = builtin_decl_implicit (BUILT_IN_UNREACHABLE);
> -               cgraph_get_create_node (target);
> -             }
> +             target = ipa_impossible_devirt_target (ie, target);
>             return target;
>           }
>       }
> @@ -1629,7 +1621,7 @@ ipa_get_indirect_edge_target_1 (struct c
>        if (targets.length () == 1)
>       target = targets[0]->decl;
>        else
> -     target = builtin_decl_implicit (BUILT_IN_UNREACHABLE);
> +     target = ipa_impossible_devirt_target (ie, NULL_TREE);
>      }
>    else
>      {
> @@ -1643,15 +1635,7 @@ ipa_get_indirect_edge_target_1 (struct c
>  
>    if (target && !possible_polymorphic_call_target_p (ie,
>                                                    cgraph_get_node (target)))
> -    {
> -      if (dump_file)
> -     fprintf (dump_file,
> -              "Type inconsident devirtualization: %s/%i->%s\n",
> -              ie->caller->name (), ie->caller->order,
> -              IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (target)));
> -      target = builtin_decl_implicit (BUILT_IN_UNREACHABLE);
> -      cgraph_get_create_node (target);
> -    }
> +    target = ipa_impossible_devirt_target (ie, target);
>  
>    return target;
>  }
> Index: src/gcc/ipa-prop.c
> ===================================================================
> --- src.orig/gcc/ipa-prop.c
> +++ src/gcc/ipa-prop.c
> @@ -2915,14 +2915,14 @@ try_make_edge_direct_simple_call (struct
>  /* Return the target to be used in cases of impossible devirtualization.  IE
>     and target (the latter can be NULL) are dumped when dumping is enabled.  
> */
>  
> -static tree
> -impossible_devirt_target (struct cgraph_edge *ie, tree target)
> +tree
> +ipa_impossible_devirt_target (struct cgraph_edge *ie, tree target)
>  {
>    if (dump_file)
>      {
>        if (target)
>       fprintf (dump_file,
> -              "Type inconsident devirtualization: %s/%i->%s\n",
> +              "Type inconsistent devirtualization: %s/%i->%s\n",
>                ie->caller->name (), ie->caller->order,
>                IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (target)));
>        else
> @@ -2969,7 +2969,7 @@ try_make_edge_direct_virtual_call (struc
>                  && DECL_FUNCTION_CODE (target) == BUILT_IN_UNREACHABLE)
>                 || !possible_polymorphic_call_target_p
>                      (ie, cgraph_get_node (target)))
> -             target = impossible_devirt_target (ie, target);
> +             target = ipa_impossible_devirt_target (ie, target);
>             return ipa_make_edge_direct_to_target (ie, target);
>           }
>       }
> @@ -2999,7 +2999,7 @@ try_make_edge_direct_virtual_call (struc
>        if (targets.length () == 1)
>       target = targets[0]->decl;
>        else
> -     target = impossible_devirt_target (ie, NULL_TREE);
> +     target = ipa_impossible_devirt_target (ie, NULL_TREE);
>      }
>    else
>      {
> @@ -3015,7 +3015,7 @@ try_make_edge_direct_virtual_call (struc
>    if (target)
>      {
>        if (!possible_polymorphic_call_target_p (ie, cgraph_get_node (target)))
> -     target = impossible_devirt_target (ie, target);
> +     target = ipa_impossible_devirt_target (ie, target);
>        return ipa_make_edge_direct_to_target (ie, target);
>      }
>    else
> Index: src/gcc/ipa-prop.h
> ===================================================================
> --- src.orig/gcc/ipa-prop.h
> +++ src/gcc/ipa-prop.h
> @@ -586,6 +586,7 @@ tree ipa_get_indirect_edge_target (struc
>  struct cgraph_edge *ipa_make_edge_direct_to_target (struct cgraph_edge *, 
> tree);
>  tree ipa_binfo_from_known_type_jfunc (struct ipa_jump_func *);
>  tree ipa_intraprocedural_devirtualization (gimple);
> +tree ipa_impossible_devirt_target (struct cgraph_edge *, tree);
>  
>  /* Functions related to both.  */
>  void ipa_analyze_node (struct cgraph_node *);
> Index: src/gcc/testsuite/g++.dg/ipa/devirt-25.C
> ===================================================================
> --- src.orig/gcc/testsuite/g++.dg/ipa/devirt-25.C
> +++ src/gcc/testsuite/g++.dg/ipa/devirt-25.C
> @@ -22,5 +22,5 @@ void dpr_run(ebs_Object& objectA) {
>    dpr_Job jobL;
>    dpr_run(jobL);
>  }
> -/* { dg-final { scan-ipa-dump "Type inconsident devirtualization" "cp"  } } 
> */
> +/* { dg-final { scan-ipa-dump "Type inconsistent devirtualization" "cp"  } } 
> */
>  /* { dg-final { cleanup-ipa-dump "cp" } } */
> Index: src/gcc/testsuite/g++.dg/ipa/pr60600.C
> ===================================================================
> --- src.orig/gcc/testsuite/g++.dg/ipa/pr60600.C
> +++ src/gcc/testsuite/g++.dg/ipa/pr60600.C
> @@ -30,5 +30,5 @@ void test(top& t)
>      test(d);
>  }
>  
> -/* { dg-final { scan-ipa-dump "Type inconsident devirtualization" "cp" } } */
> +/* { dg-final { scan-ipa-dump "Type inconsistent devirtualization" "cp" } } 
> */
>  /* { dg-final { cleanup-ipa-dump "cp" } } */
> Index: src/gcc/testsuite/g++.dg/ipa/pr61540.C
> ===================================================================
> --- src.orig/gcc/testsuite/g++.dg/ipa/pr61540.C
> +++ src/gcc/testsuite/g++.dg/ipa/pr61540.C
> @@ -37,5 +37,5 @@ int main (int argc, char **argv)
>    return 0;
>  }
>  
> -/* { dg-final { scan-ipa-dump "Type inconsident devirtualization" "cp" } } */
> +/* { dg-final { scan-ipa-dump "Type inconsistent devirtualization" "cp" } } 
> */
>  /* { dg-final { cleanup-ipa-dump "cp" } } */

Reply via email to