summaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2001-11-19 20:38:07 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2001-11-19 20:38:07 +0000
commitf96c43fb7bb186b6ddd7a93ea0a55ae3e61c4d57 (patch)
tree2542ba620d211064d29aeacfe75ac81b9312fd17 /gcc/fold-const.c
parent99efa43944a9c890b4cc1ab3ffc1e62c35d3b69a (diff)
downloadgcc-f96c43fb7bb186b6ddd7a93ea0a55ae3e61c4d57.tar.gz
* tree.def (VIEW_CONVERT_EXPR): New tree code.
* tree.h (handled_component_p): New declaration. * alias.c (handled_component_p): Move function from here ... * expr.c (handled_component_p): ... to here and non longer static. (is_zeros_p, case VIEW_CONVERT_EXPR): New case. (store_field): Remove unneeded MEM_COPY_ATTRIBUTES call. (get_inner_reference): Handle VIEW_CONVERT_EXPR. (expand_expr, case VAR_DECL): Clean up handling of re-layout case. (expand_expr, case VIEW_CONVERT_EXPR): New case. (expand_expr, cse ADDR_EXPR): No need to copy if already BIGGEST_ALIGNMENT. * fold-const.c (fold, case VIEW_CONVERT_EXPR): New case. * varasm.c (initializer_constant_value_p, case VIEW_CONVERT_EXPR): New. (output_constant): Handle VIEW_CONVERT_EXPR. * dwarf2out.c (loc-descriptor_from_tree, add_bound_info): Add new case for VIEW_CONVERT_EXPR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47179 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r--gcc/fold-const.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index f7cdc57d421..2083c55abfa 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -5308,6 +5308,12 @@ fold (expr)
}
return fold_convert (t, arg0);
+ case VIEW_CONVERT_EXPR:
+ if (TREE_CODE (TREE_OPERAND (t, 0)) == VIEW_CONVERT_EXPR)
+ return build1 (VIEW_CONVERT_EXPR, type,
+ TREE_OPERAND (TREE_OPERAND (t, 0), 0));
+ return t;
+
#if 0 /* This loses on &"foo"[0]. */
case ARRAY_REF:
{