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?