aboutsummaryrefslogtreecommitdiff
path: root/gcc/var-tracking.c
diff options
context:
space:
mode:
authorAnatoly Sokolov <aesok@post.ru>2015-10-30 23:56:32 +0300
committerAnatoly Sokolov <aesok@gcc.gnu.org>2015-10-30 23:56:32 +0300
commitd614335f7796ca828cfab1a9e789bbb91165755b (patch)
tree2e6dad106e2c0be6d7bcd62276c61e90c5b1dc22 /gcc/var-tracking.c
parenta6906c809772feaead79e533e79535bd03a49aa6 (diff)
downloadgcc-d614335f7796ca828cfab1a9e789bbb91165755b.zip
gcc-d614335f7796ca828cfab1a9e789bbb91165755b.tar.gz
gcc-d614335f7796ca828cfab1a9e789bbb91165755b.tar.bz2
Add contains_symbol_ref_p
From-SVN: r229607
Diffstat (limited to 'gcc/var-tracking.c')
-rw-r--r--gcc/var-tracking.c39
1 files changed, 1 insertions, 38 deletions
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 2f7c761..72f2e81 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -664,7 +664,6 @@ static bool variable_different_p (variable *, variable *);
static bool dataflow_set_different (dataflow_set *, dataflow_set *);
static void dataflow_set_destroy (dataflow_set *);
-static bool contains_symbol_ref (rtx);
static bool track_expr_p (tree, bool);
static bool same_variable_part_p (rtx, tree, HOST_WIDE_INT);
static void add_uses_1 (rtx *, void *);
@@ -5021,42 +5020,6 @@ dataflow_set_destroy (dataflow_set *set)
set->vars = NULL;
}
-/* Return true if RTL X contains a SYMBOL_REF. */
-
-static bool
-contains_symbol_ref (rtx x)
-{
- const char *fmt;
- RTX_CODE code;
- int i;
-
- if (!x)
- return false;
-
- code = GET_CODE (x);
- if (code == SYMBOL_REF)
- return true;
-
- fmt = GET_RTX_FORMAT (code);
- for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
- {
- if (fmt[i] == 'e')
- {
- if (contains_symbol_ref (XEXP (x, i)))
- return true;
- }
- else if (fmt[i] == 'E')
- {
- int j;
- for (j = 0; j < XVECLEN (x, i); j++)
- if (contains_symbol_ref (XVECEXP (x, i, j)))
- return true;
- }
- }
-
- return false;
-}
-
/* Shall EXPR be tracked? */
static bool
@@ -5137,7 +5100,7 @@ track_expr_p (tree expr, bool need_rtl)
char **_dl_argv;
*/
if (decl_rtl && MEM_P (decl_rtl)
- && contains_symbol_ref (XEXP (decl_rtl, 0)))
+ && contains_symbol_ref_p (XEXP (decl_rtl, 0)))
return 0;
/* If RTX is a memory it should not be very large (because it would be