aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-05-21 22:43:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-05-21 22:43:19 +0000
commit150e39291c308c6c7c4df44bd1c0d367794ba76d (patch)
treee6a3b02aba6f9fa95634d6767e26861ee2e90444 /gcc/gimplify.c
parent9a2b090ce066189030d47ece3022ed6c6d885bee (diff)
downloadgcc-150e39291c308c6c7c4df44bd1c0d367794ba76d.zip
gcc-150e39291c308c6c7c4df44bd1c0d367794ba76d.tar.gz
gcc-150e39291c308c6c7c4df44bd1c0d367794ba76d.tar.bz2
tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record TMR_ORIGINAL.
2009-05-22 Richard Guenther <rguenther@suse.de> * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record TMR_ORIGINAL. Always either record TMR_SYMBOL or TMR_BASE. * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle TARGET_MEM_REF. (create_expression_by_pieces): Only convert if necessary. * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF. * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST. From-SVN: r147779
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index bff7cdd..d734a0f 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -6769,6 +6769,24 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
}
break;
+ case TARGET_MEM_REF:
+ {
+ enum gimplify_status r0 = GS_ALL_DONE, r1 = GS_ALL_DONE;
+
+ if (TMR_SYMBOL (*expr_p))
+ r0 = gimplify_expr (&TMR_SYMBOL (*expr_p), pre_p,
+ post_p, is_gimple_lvalue, fb_either);
+ else if (TMR_BASE (*expr_p))
+ r0 = gimplify_expr (&TMR_BASE (*expr_p), pre_p,
+ post_p, is_gimple_val, fb_either);
+ if (TMR_INDEX (*expr_p))
+ r1 = gimplify_expr (&TMR_INDEX (*expr_p), pre_p,
+ post_p, is_gimple_val, fb_rvalue);
+ /* TMR_STEP and TMR_OFFSET are always integer constants. */
+ ret = MIN (r0, r1);
+ }
+ break;
+
case NON_LVALUE_EXPR:
/* This should have been stripped above. */
gcc_unreachable ();