[Bug tree-optimization/37868] code that breaks TBAA is misoptimized even with -fno-strict-aliasing
rguenth at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Oct 18 22:44:00 GMT 2008
------- Comment #4 from rguenth at gcc dot gnu dot org 2008-10-18 22:42 -------
4.3 is broken because PTA figures
D.1187_2 = { x.a }
from the constraints
x.0_1 = &x
D.1187_2 = x.0_1 + 64
because the 4.3 branch doesn't have the PTA fixes, in particular
/* If the found variable is not exactly at the pointed to
result, we have to include the next variable in the
solution as well. Otherwise two increments by offset / 2
do not result in the same or a conservative superset
solution. */
if (temp->offset != curr->offset + rhsoffset
&& temp->next != NULL)
{
struct constraint_expr c2;
c2.var = temp->next->id;
c2.type = ADDRESSOF;
c2.offset = 0;
VEC_safe_push (ce_s, heap, *results, &c2);
}
see rev. 137573:
2008-07-07 Richard Guenther <rguenther@suse.de>
+ * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
+ (new_var_info): Set it to false.
+ (solution_set_add): Correctly handle pointers outside a var and
+ inside a field.
+ (type_safe): Treat variables with is_full_var properly.
+ (do_sd_constraint): Likewise.
+ (do_ds_constraint): Likewise.
+ (process_constraint): Remove zeroing offset for !use_field_sensitive.
+ (get_constraint_for_ptr_offset): New function.
+ (get_constraint_for_component_ref): For addresses at least include
+ the last field of the variable. Handle is_full_vars properly.
+ (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
+ (handle_ptr_arith): Remove.
+ (find_func_aliases): Simplify assignment handling.
+ (create_function_info_for): For parameter and result varinfos set
+ is_full_var flag.
+ (create_variable_info_for): Set is_full_var flag whenever we
+ just created a single varinfo for a decl.
+ (init_alias_vars): Initialize use_field_sensitive from
+ max-fields-for-field-sensitive parameter.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Keywords| |wrong-code
Last reconfirmed|0000-00-00 00:00:00 |2008-10-18 22:42:54
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37868
More information about the Gcc-bugs
mailing list