gimplify.c (is_gimple_tmp_var): Move to tree-gimple.c.
authorRichard Henderson <rth@redhat.com>
Tue, 20 Jul 2004 22:47:58 +0000 (15:47 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 20 Jul 2004 22:47:58 +0000 (15:47 -0700)
        * gimplify.c (is_gimple_tmp_var): Move to tree-gimple.c.
        (gimplify_compound_lval): Use is_gimple_tmp_reg.
        * tree-gimple.c (is_gimple_tmp_var): Move from gimplify.c.
        (is_gimple_tmp_reg): New.
        * tree-gimple.h (is_gimple_tmp_reg): Declare.

From-SVN: r84975

gcc/ChangeLog
gcc/gimplify.c
gcc/tree-gimple.c
gcc/tree-gimple.h

index ba21f5c40bf876a41aaa9c788a13d68c69ed0794..531b0f3dad114f69510230e3b0a2281402b65120 100644 (file)
@@ -1,3 +1,11 @@
+2004-07-20  Richard Henderson  <rth@redhat.com>
+
+       * gimplify.c (is_gimple_tmp_var): Move to tree-gimple.c.
+       (gimplify_compound_lval): Use is_gimple_tmp_reg.
+       * tree-gimple.c (is_gimple_tmp_var): Move from gimplify.c.
+       (is_gimple_tmp_reg): New.
+       * tree-gimple.h (is_gimple_tmp_reg): Declare.
+
 2004-07-20  Richard Henderson  <rth@redhat.com>
 
        * tree-pretty-print.c (dump_generic_node): Dump
index e2e8585ca5a545a253f5618691a642faed19d7f6..f0785035ea0ae03bba9e7298b05b13bcc3dda2c8 100644 (file)
@@ -476,16 +476,6 @@ get_initialized_tmp_var (tree val, tree *pre_p, tree *post_p)
   return internal_get_tmp_var (val, pre_p, post_p, false);
 }
 
-/*  Returns true if T is a GIMPLE temporary variable, false otherwise.  */
-
-bool
-is_gimple_tmp_var (tree t)
-{
-  /* FIXME this could trigger for other local artificials, too.  */
-  return (TREE_CODE (t) == VAR_DECL && DECL_ARTIFICIAL (t)
-         && !TREE_STATIC (t) && !DECL_EXTERNAL (t));
-}
-
 /* Declares all the variables in VARS in SCOPE.  */
 
 void
@@ -1569,7 +1559,7 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p,
                {
                  TREE_OPERAND (t, 2) = low;
                  tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p,
-                                       is_gimple_tmp_var, fb_rvalue);
+                                       is_gimple_tmp_reg, fb_rvalue);
                  ret = MIN (ret, tret);
                }
            }
@@ -1588,7 +1578,7 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p,
                {
                  TREE_OPERAND (t, 3) = elmt_size;
                  tret = gimplify_expr (&TREE_OPERAND (t, 3), pre_p, post_p,
-                                       is_gimple_tmp_var, fb_rvalue);
+                                       is_gimple_tmp_reg, fb_rvalue);
                  ret = MIN (ret, tret);
                }
            }
@@ -1610,7 +1600,7 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p,
                {
                  TREE_OPERAND (t, 2) = offset;
                  tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p,
-                                       is_gimple_tmp_var, fb_rvalue);
+                                       is_gimple_tmp_reg, fb_rvalue);
                  ret = MIN (ret, tret);
                }
            }
@@ -1641,7 +1631,7 @@ gimplify_compound_lval (tree *expr_p, tree *pre_p,
          if (!is_gimple_min_invariant (TREE_OPERAND (t, 1)))
            {
              tret = gimplify_expr (&TREE_OPERAND (t, 1), pre_p, post_p,
-                                   is_gimple_tmp_var, fb_rvalue);
+                                   is_gimple_tmp_reg, fb_rvalue);
              ret = MIN (ret, tret);
            }
        }
index 488173fb6205c180164aa4c31833d4c3de04e25d..2b119fdab879db51b92db17f20f4f2c954a2d2b9 100644 (file)
@@ -447,6 +447,34 @@ is_gimple_reg (tree t)
          && ! needs_to_live_in_memory (t));
 }
 
+/* Returns true if T is a GIMPLE temporary variable, false otherwise.  */
+
+bool
+is_gimple_tmp_var (tree t)
+{
+  /* FIXME this could trigger for other local artificials, too.  */
+  return (TREE_CODE (t) == VAR_DECL && DECL_ARTIFICIAL (t)
+         && !TREE_STATIC (t) && !DECL_EXTERNAL (t));
+}
+
+/* Returns true if T is a GIMPLE temporary register variable.  */
+
+bool
+is_gimple_tmp_reg (tree t)
+{
+  /* The intent of this is to get hold of a value that won't change.
+     An SSA_NAME qualifies no matter if its of a user variable or not.  */
+  if (TREE_CODE (t) == SSA_NAME)
+    return true;
+
+  /* We don't know the lifetime characteristics of user variables.  */
+  if (TREE_CODE (t) != VAR_DECL || !DECL_ARTIFICIAL (t))
+    return false;
+
+  /* Finally, it must be capable of being placed in a register.  */
+  return is_gimple_reg (t);
+}
+
 /* Return true if T is a GIMPLE variable whose address is not needed.  */
 
 bool
index 32647a002b89d3020769810763e3368c73f8db8d..3a87503f76d25084d2a25e4a19be047eb2867770 100644 (file)
@@ -28,7 +28,6 @@ Boston, MA 02111-1307, USA.  */
 extern tree create_tmp_var_raw (tree, const char *);
 extern tree create_tmp_var_name (const char *);
 extern tree create_tmp_var (tree, const char *);
-extern bool is_gimple_tmp_var (tree);
 extern tree get_initialized_tmp_var (tree, tree *, tree *);
 extern tree get_formal_tmp_var (tree, tree *);
 extern void declare_tmp_vars (tree, tree);
@@ -48,6 +47,10 @@ extern bool is_gimple_stmt (tree);
 extern bool is_gimple_reg_type (tree);
 /* Returns true iff T is a scalar register variable.  */
 extern bool is_gimple_reg (tree);
+/* Returns true if T is a GIMPLE temporary variable, false otherwise.  */
+extern bool is_gimple_tmp_var (tree);
+/* Returns true if T is a GIMPLE temporary register variable.  */
+extern bool is_gimple_tmp_reg (tree);
 /* Returns true iff T is any sort of variable.  */
 extern bool is_gimple_variable (tree);
 /* Returns true iff T is a variable or an INDIRECT_REF (of a variable).  */