------- 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  <[EMAIL PROTECTED]>

+       * 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

Reply via email to