summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorAdam Nemet <anemet@caviumnetworks.com>2009-06-17 22:11:47 +0000
committerAdam Nemet <nemet@gcc.gnu.org>2009-06-17 22:11:47 +0000
commit23314e77ec9e3dfea806f31b6dd65920f628f207 (patch)
tree891864d93af2879f6eb0fac88b1eb64c1454dc24 /gcc/tree-ssa.c
parent799dbb0f77a506ed18a17ac3765b29af9dd88055 (diff)
downloadgcc-23314e77ec9e3dfea806f31b6dd65920f628f207.tar.gz
tree.h (STRIP_NOPS, [...]): Use tree_strip_nop_conversions...
* tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions, tree_strip_sign_nop_conversions and tree_ssa_strip_useless_type_conversions rather than stripping the operations here. (tree_strip_nop_conversions, tree_strip_sign_nop_conversions): Declare them. * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it. * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function. * tree.c (tree_nop_conversion, tree_sign_nop_conversion, tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New functions. testsuite/ * gcc.c-torture/execute/bitfld-5.c: New test. From-SVN: r148631
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index ada47e16c08..d63e974cf91 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1079,6 +1079,18 @@ tree_ssa_useless_type_conversion (tree expr)
return false;
}
+/* Strip conversions from EXP according to
+ tree_ssa_useless_type_conversion and return the resulting
+ expression. */
+
+tree
+tree_ssa_strip_useless_type_conversions (tree exp)
+{
+ while (tree_ssa_useless_type_conversion (exp))
+ exp = TREE_OPERAND (exp, 0);
+ return exp;
+}
+
/* Internal helper for walk_use_def_chains. VAR, FN and DATA are as
described in walk_use_def_chains.