This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/45834] Redundant inter-loop edges in DDG
- From: "bmei at broadcom dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 18 Oct 2010 11:33:26 +0000
- Subject: [Bug c/45834] Redundant inter-loop edges in DDG
- Auto-submitted: auto-generated
- References: <bug-45834-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45834
Bingfeng Mei <bmei at broadcom dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |richard.guenther at gmail
| |dot com
--- Comment #1 from Bingfeng Mei <bmei at broadcom dot com> 2010-10-18 11:33:23 UTC ---
Before using rtx_refs_may_alias_p in may_alias_p, following statement is
executed.
/* We cannot use aliases_everything_p to test MEM, since we must look
at MEM_ADDR, rather than XEXP (mem, 0). */
if (GET_MODE (mem) == QImode || GET_CODE (mem_addr) == AND)
return 1;
Basically, it means that the memory access of a QImode always aliases
everything else. That explains why char data type doesn't work here. The code
in may_alias_p is mostly copied from true_dependence_1. The comment is not very
clear to me. Richard, could you cast a light on this? Why do we need to treat
QImode differently?