diff options
author | Jan Sjodin <jan.sjodin@amd.com> | 2007-07-31 05:01:12 +0000 |
---|---|---|
committer | Jan Sjodin <jsjodin@gcc.gnu.org> | 2007-07-31 05:01:12 +0000 |
commit | 06cb4f7988cff376aeafc230dea8e9a8e3e6c0e9 (patch) | |
tree | c042b23d4ab792a0cd2a13cdac53d198671cbdbd /gcc/tree-data-ref.c | |
parent | a3f918441efe44c3b32606721a0e4fd35089e2dd (diff) | |
download | gcc-06cb4f7988cff376aeafc230dea8e9a8e3e6c0e9.zip gcc-06cb4f7988cff376aeafc230dea8e9a8e3e6c0e9.tar.gz gcc-06cb4f7988cff376aeafc230dea8e9a8e3e6c0e9.tar.bz2 |
2007-07-30 Jan Sjodin <jan.sjodin@amd.com>
* tree-data-ref.c
(split_constant_offset): Enable split_constant_offset to extract
constants from other statements.
* tree-vect-transform.c
(vect_create_addr_base_for_vector_ref): Generate data_ref_base
to a temp var. Force base_offset to be simple.
2007-07-30 Jan Sjodin <jan.sjodin@amd.com>
* gcc.dg/vect/vect-117.c: New test.
* gcc.dg/vect/vect-74.c: Enabled test
* gcc.dg/vect/vect-81.c: Enabled test
From-SVN: r127080
Diffstat (limited to 'gcc/tree-data-ref.c')
-rw-r--r-- | gcc/tree-data-ref.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 85e6d72..94bdaca 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -565,6 +565,27 @@ split_constant_offset (tree exp, tree *var, tree *off) return; } + case SSA_NAME: + { + tree def_stmt = SSA_NAME_DEF_STMT (exp); + if (TREE_CODE (def_stmt) == GIMPLE_MODIFY_STMT) + { + tree def_stmt_rhs = GIMPLE_STMT_OPERAND (def_stmt, 1); + + if (!TREE_SIDE_EFFECTS (def_stmt_rhs) + && EXPR_P (def_stmt_rhs) + && !REFERENCE_CLASS_P (def_stmt_rhs)) + { + split_constant_offset (def_stmt_rhs, &var0, &off0); + var0 = fold_convert (type, var0); + *var = var0; + *off = off0; + return; + } + } + break; + } + default: break; } |