[PATCH]: Improve data ref disambiguation

Daniel Berlin dberlin@dberlin.org
Wed Jun 6 03:45:00 GMT 2007


Right now, we currently decide that if two base objects are not
operand_equal_p, they must have different base objects.

We can do slightly better.

If the vops on the datarefs are exactly equal, they must have the same
base object.

IE:

(gdb) p debug_generic_stmt (a->stmt)
# VUSE <PARM_NOALIAS.4_22, PARM_NOALIAS.5_14, SMT.6_39> {
PARM_NOALIAS.4 PARM_NOALIAS.5 SMT.6 }
D.1886_24 = *D.1885_23;

$1 = void
(gdb) p debug_generic_stmt (b->stmt)
# VUSE <PARM_NOALIAS.4_22, PARM_NOALIAS.5_14, SMT.6_39> {
PARM_NOALIAS.4 PARM_NOALIAS.5 SMT.6 }
D.1888_28 = *D.1887_27;


Dereferences of these pointers can touch exactly the same memory, so
they must share a base object (there is no guarantee they have the
same offsets, etc, only that their pointers can only touch the same
set of memory).


Bootstrapped and regtested on i686-pc-linux-gnu

Committed to mainline

2007-06-05  Daniel Berlin  <dberlin@dberlin.org>

	* tree-data-ref.c (initialize_data_dependence_relation): Two
	objects also access the same base object if they have the same set
	of vops.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dataref.diff
Type: text/x-patch
Size: 607 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20070606/ade1e31a/attachment.bin>


More information about the Gcc-patches mailing list