[PATCH] Use rtx_refs_may_alias_p instead of alias_sets_conflict_p in

H.J. Lu hjl.tools@gmail.com
Mon Aug 9 15:56:00 GMT 2010


On Mon, Aug 9, 2010 at 5:41 AM, Bingfeng Mei <bmei@broadcom.com> wrote:
> Hi,
> I created a new may_alias_p function as Richard proposed. The function
> disables offset-based memory disambiguation and TBAA, it is also slightly
> more conservative than true/output/anti_dependence. For example,
> write_dependence checks:
>  if (GET_MODE (x) == BLKmode && GET_CODE (XEXP (x, 0)) == SCRATCH)
>    return 1;
>  if (GET_MODE (mem) == BLKmode && GET_CODE (XEXP (mem, 0)) == SCRATCH)
>    return 1;
>
> true_depdence checks both above and following (isn't above
> statement redundant then?).
>  if (mem_mode == BLKmode || GET_MODE (x) == BLKmode)
>    return 1;
> may_alias_p takes more conservative check of the latter one only.
>
> Since insn_alias_sets_conflict_p is misnamed and only used once by ddg.c,
> it & friends (walk_mems_1, walk_mems_2) are moved into ddg.c and
> renamed as insns_may_alias_p.
>
> The patch is bootstrapped on x86_64-unknown-linux-gnu and tested.
> OK for trunk?
>
> Thanks,
> Bingfeng
>
>
> 2010-08-10  Bingfeng Mei  <bmei@broadcom.com>
>
>        * ddg.c (walk_mems_2): Moved from alias.c, use may_alias_p instead of
>        alias_sets_conflict_p.
>        (walk_mems_1): Moved from alias.c.
>        (insns_may_alias_p): New function, originally insn_alias_sets_conflict_p
>        in alias.c.
>        (add_inter_loop_mem_dep): Use insns_may_alias_p now.
>        * cse.c (cse_insn): New argument in calling nonoverlapping_memrefs_p.
>        * alias.c (walk_mems_2): Moved to ddg.c.
>        (walk_mems_1): Ditto.
>        (insn_alias_sets_conflict_p): Renamed to insns_may_alias_p and moved
>        to ddg.c.
>        (nonoverlapping_memrefs_p): Add flag to guard offset-based memory
>        disambiguation.
>        *(may_alias_p): New function to check whether two memory expression
>        may alias or not. Currently used in buidling inter-iteration memory
>        dependence.
>        *alias.h (nonoverlapping_memrefs_p): New flag as third argument.
>        (insn_alias_sets_conflict_p): Removed
>        *rtl.h (may_alias_p): New function prototype.
>

Gcc is broken:

../../src-trunk/gcc/alias.c: In function 'may_alias_p':
../../src-trunk/gcc/alias.c:2537:7: error: unused variable 'ret'
[-Werror=unused-variable]
cc1: all warnings being treated as errors


H.J.



More information about the Gcc-patches mailing list