diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-05-21 22:43:19 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-05-21 22:43:19 +0000 |
commit | 869bac23db0453a05822c049a73de247a96d703a (patch) | |
tree | e6a3b02aba6f9fa95634d6767e26861ee2e90444 /gcc/gimplify.c | |
parent | e716188eca02591dcc41877b1951fe2628be018b (diff) | |
download | gcc-869bac23db0453a05822c049a73de247a96d703a.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147779 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index bff7cdd4b6f..d734a0fdf08 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 (); |