This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/33136] [4.1/4.2/4.3 Regression] wrong code due to alias with allocation in loop
- From: "dberlin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 Aug 2007 20:10:15 -0000
- Subject: [Bug tree-optimization/33136] [4.1/4.2/4.3 Regression] wrong code due to alias with allocation in loop
- References: <bug-33136-12956@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #15 from dberlin at gcc dot gnu dot org 2007-08-22 20:10 -------
(In reply to comment #14)
> --- ipa-type-escape.c.jj13 2007-08-13 15:11:18.000000000 +0200
> +++ ipa-type-escape.c 2007-08-22 19:21:07.000000000 +0200
> @@ -1704,6 +1704,21 @@ analyze_function (struct cgraph_node *fn
> FOR_EACH_BB_FN (this_block, this_cfun)
> {
> block_stmt_iterator bsi;
> + tree phi, op;
> + use_operand_p use;
> + ssa_op_iter iter;
> +
> + /* Find the addresses taken in phi node arguments. */
> + for (phi = phi_nodes (this_block); phi; phi = PHI_CHAIN (phi))
> + {
> + FOR_EACH_PHI_ARG (use, phi, iter, SSA_OP_USE)
> + {
> + op = USE_FROM_PTR (use);
> + if (TREE_CODE (op) == ADDR_EXPR)
> + check_rhs_var (op);
> + }
> + }
> +
> for (bsi = bsi_start (this_block); !bsi_end_p (bsi); bsi_next (&bsi))
> walk_tree (bsi_stmt_ptr (bsi), scan_for_refs,
> fn, visited_nodes);
>
> doesn't help here at all (it could have helped if one of the PHI arguments
> contained say &s.some_field, but as it contains just &s, it doesn't do
> anything.
> mark_interesting_addressof is only called for addresses of aggr fields
> and has_proper_scope_for_analysis is a nop for automatic variables.
>
Sigh. It should be considering &s to be an address taking of the first field.
Looks like look_for_address_of needs to be fixed.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33136