------- Comment #5 from pinskia at gcc dot gnu dot org  2007-01-04 22:21 -------
I think this was exposed/caused by the mem-ssa and the specific DSE
optimization for aggregate DSE:
2006-12-11  Aldy Hernandez  <[EMAIL PROTECTED]>

        * tree-ssa-dse.c (aggregate_vardecl_d): New.
        (dse_global_data): Add aggregate_vardecl field.
        (dse_possible_dead_store_p): New.
        Add prev_defvar variable.
        Allow immediate uses and previous immediate uses to differ
        if they are setting different parts of the whole.
        (get_aggregate_vardecl): New.
        (dse_record_partial_aggregate_store): New.
        (dse_whole_aggregate_clobbered_p): New.
        (dse_partial_kill_p): New.
        (dse_optimize_stmt): Abstract code checking a possible dead store
        into new function dse_possible_dead_store_p().
        Call dse_maybe_record_aggregate_store().
        When checking whether a STMT and its USE_STMT refer to the
        same memory address, check also for partial kills that clobber
        the whole.
        Move some variable definitions to the block where they are used.
        (aggregate_vardecl_hash): New.
        (aggregate_vardecl_eq): New.
        (aggregate_vardecl_free): New.
        (aggregate_whole_store_p): New.
        (tree_ssa_dse): Initialize and free aggregate_vardecl.
        Mark which aggregate stores we care about.


I think we have:
  info_1 = V_DEF<info_0(D)>
  info = {};
...
  info_2 = V_DEF<info_1(D)>
  winetest_set_location (&"encode.c"[0], 2886);

Which thinks info is fully clobbered by winetest_set_location which is not
true.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |aldyh at gcc dot gnu dot
                   |                            |org, dnovillo at gcc dot gnu
                   |                            |dot org
          Component|c                           |tree-optimization
  GCC build triplet|i686-pc-linux-gnu           |
   GCC host triplet|i686-pc-linux-gnu           |
 GCC target triplet|i686-pc-linux-gnu           |
           Keywords|                            |wrong-code
            Summary|tree-ssa-dse incorrectly    |[4.3 Regression] tree-ssa-
                   |removes struct              |dse incorrectly removes
                   |initialization              |struct initialization
   Target Milestone|---                         |4.3.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30375

Reply via email to