Makefile.in (tree-sra.o): Update dependencies.
authorJan Hubicka <hubicka@gcc.gnu.org>
Fri, 6 Sep 2013 10:36:44 +0000 (10:36 +0000)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 6 Sep 2013 10:36:44 +0000 (10:36 +0000)
* Makefile.in (tree-sra.o): Update dependencies.
* tree-sra.c: Include ipa-utils.h
(scan_function): Use recursive_call_p.
(has_caller_p): New function.
(cgraph_for_node_and_aliases): Count also callers of aliases.

From-SVN: r202319

gcc/Makefile.in
gcc/tree-sra.c

index 8430300..a72b753 100644 (file)
@@ -3104,7 +3104,7 @@ tree-sra.o : tree-sra.c $(CONFIG_H) $(SYSTEM_H) coretypes.h alloc-pool.h \
    $(HASH_TABLE_H) $(TM_H) $(TREE_H) $(GIMPLE_H) $(CGRAPH_H) $(TREE_FLOW_H) \
    $(IPA_PROP_H) $(DIAGNOSTIC_H) statistics.h \
    $(PARAMS_H) $(TARGET_H) $(FLAGS_H) \
-   $(DBGCNT_H) $(TREE_INLINE_H) $(GIMPLE_PRETTY_PRINT_H)
+   $(DBGCNT_H) $(TREE_INLINE_H) $(GIMPLE_PRETTY_PRINT_H) ipa-utils.h
 tree-switch-conversion.o : tree-switch-conversion.c $(CONFIG_H) $(SYSTEM_H) \
     $(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
     $(TM_H) coretypes.h $(GIMPLE_H) $(CFGLOOP_H) \
index 8e3bb81..7ed1668 100644 (file)
@@ -91,6 +91,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-inline.h"
 #include "gimple-pretty-print.h"
 #include "ipa-inline.h"
+#include "ipa-utils.h"
 
 /* Enumeration of all aggregate reductions we can do.  */
 enum sra_mode { SRA_MODE_EARLY_IPA,   /* early call regularization */
@@ -1256,8 +1257,7 @@ scan_function (void)
                      if (DECL_BUILT_IN_CLASS (dest) == BUILT_IN_NORMAL
                          && DECL_FUNCTION_CODE (dest) == BUILT_IN_APPLY_ARGS)
                        encountered_apply_args = true;
-                     if (cgraph_get_node (dest)
-                         == cgraph_get_node (current_function_decl))
+                     if (recursive_call_p (current_function_decl, dest))
                        {
                          encountered_recursive_call = true;
                          if (!callsite_has_enough_arguments_p (stmt))
@@ -4906,6 +4906,16 @@ modify_function (struct cgraph_node *node, ipa_parm_adjustment_vec adjustments)
   return cfg_changed;
 }
 
+/* If NODE has a caller, return true.  */
+
+static bool
+has_caller_p (struct cgraph_node *node, void *data ATTRIBUTE_UNUSED)
+{
+  if (node->callers)
+    return true;
+  return false;
+}
+
 /* Return false the function is apparently unsuitable for IPA-SRA based on it's
    attributes, return true otherwise.  NODE is the cgraph node of the current
    function.  */
@@ -4949,7 +4959,7 @@ ipa_sra_preliminary_function_checks (struct cgraph_node *node)
       return false;
     }
 
-  if (!node->callers)
+  if (!cgraph_for_node_and_aliases (node, has_caller_p, NULL, true))
     {
       if (dump_file)
        fprintf (dump_file,