On Fri, Dec 06, 2013 at 02:27:25PM +0100, Jakub Jelinek wrote: > > You can install that as cleanup now if you split it out (so hopefully > > no users creep back that make removing it impossible). > > Ok, will do.
Here is that part, bootstrapped/regtested on x86_64-linux and i686-linux, committed to trunk. 2013-12-06 Jakub Jelinek <ja...@redhat.com> * tree-data-ref.c (struct data_ref_loc_d): Replace pos field with ref. (get_references_in_stmt): Don't record operand addresses, but operands themselves. (find_data_references_in_stmt, graphite_find_data_references_in_stmt): Adjust for the pos -> ref change. --- gcc/tree-data-ref.c.jj 2013-11-28 16:01:05.674837413 +0100 +++ gcc/tree-data-ref.c 2013-12-06 18:31:35.496730632 +0100 @@ -4320,8 +4320,8 @@ compute_all_dependences (vec<data_refere typedef struct data_ref_loc_d { - /* Position of the memory reference. */ - tree *pos; + /* The memory reference. */ + tree ref; /* True if the memory reference is read. */ bool is_read; @@ -4336,7 +4336,7 @@ get_references_in_stmt (gimple stmt, vec { bool clobbers_memory = false; data_ref_loc ref; - tree *op0, *op1; + tree op0, op1; enum gimple_code stmt_code = gimple_code (stmt); /* ASM_EXPR and CALL_EXPR may embed arbitrary side effects. @@ -4369,15 +4369,15 @@ get_references_in_stmt (gimple stmt, vec if (stmt_code == GIMPLE_ASSIGN) { tree base; - op0 = gimple_assign_lhs_ptr (stmt); - op1 = gimple_assign_rhs1_ptr (stmt); + op0 = gimple_assign_lhs (stmt); + op1 = gimple_assign_rhs1 (stmt); - if (DECL_P (*op1) - || (REFERENCE_CLASS_P (*op1) - && (base = get_base_address (*op1)) + if (DECL_P (op1) + || (REFERENCE_CLASS_P (op1) + && (base = get_base_address (op1)) && TREE_CODE (base) != SSA_NAME)) { - ref.pos = op1; + ref.ref = op1; ref.is_read = true; references->safe_push (ref); } @@ -4386,16 +4386,16 @@ get_references_in_stmt (gimple stmt, vec { unsigned i, n; - op0 = gimple_call_lhs_ptr (stmt); + op0 = gimple_call_lhs (stmt); n = gimple_call_num_args (stmt); for (i = 0; i < n; i++) { - op1 = gimple_call_arg_ptr (stmt, i); + op1 = gimple_call_arg (stmt, i); - if (DECL_P (*op1) - || (REFERENCE_CLASS_P (*op1) && get_base_address (*op1))) + if (DECL_P (op1) + || (REFERENCE_CLASS_P (op1) && get_base_address (op1))) { - ref.pos = op1; + ref.ref = op1; ref.is_read = true; references->safe_push (ref); } @@ -4404,11 +4404,11 @@ get_references_in_stmt (gimple stmt, vec else return clobbers_memory; - if (*op0 - && (DECL_P (*op0) - || (REFERENCE_CLASS_P (*op0) && get_base_address (*op0)))) + if (op0 + && (DECL_P (op0) + || (REFERENCE_CLASS_P (op0) && get_base_address (op0)))) { - ref.pos = op0; + ref.ref = op0; ref.is_read = false; references->safe_push (ref); } @@ -4435,7 +4435,7 @@ find_data_references_in_stmt (struct loo FOR_EACH_VEC_ELT (references, i, ref) { dr = create_data_ref (nest, loop_containing_stmt (stmt), - *ref->pos, stmt, ref->is_read); + ref->ref, stmt, ref->is_read); gcc_assert (dr != NULL); datarefs->safe_push (dr); } @@ -4464,7 +4464,7 @@ graphite_find_data_references_in_stmt (l FOR_EACH_VEC_ELT (references, i, ref) { - dr = create_data_ref (nest, loop, *ref->pos, stmt, ref->is_read); + dr = create_data_ref (nest, loop, ref->ref, stmt, ref->is_read); gcc_assert (dr != NULL); datarefs->safe_push (dr); } Jakub