Index: alias.c =================================================================== RCS file: /cvs/dev/tools/src/fp_gcc/gcc/alias.c,v retrieving revision 1.29.2.12 retrieving revision 1.29.2.14 diff -u -r1.29.2.12 -r1.29.2.14 --- alias.c 29 Nov 2010 15:24:04 -0000 1.29.2.12 +++ alias.c 30 Nov 2010 11:22:01 -0000 1.29.2.14 @@ -629,8 +629,9 @@ /*BRCM: Goes back to find whether the memory access is restrict qualified currently only handle INDIRECT_REF and TARGET_MEM_REF */ #ifdef TARGET_FIREPATH - if (TREE_CODE (t) == INDIRECT_REF - || TREE_CODE (t) == TARGET_MEM_REF) + if (currently_expanding_to_rtl + && (TREE_CODE (t) == INDIRECT_REF + || TREE_CODE (t) == TARGET_MEM_REF)) { set = firepath_find_restrict_set (t); if (set != -1) @@ -2630,6 +2631,14 @@ x_addr = canon_rtx (x_addr); mem_addr = canon_rtx (mem_addr); +/*BRCM: FIXME: Richard Guenther mentioned that DIFFERENT_ALIS_SETS_P + is not inter-iteration safe. But we need to that to make use of + alias set derived from restrict qualifier */ +#ifdef TARGET_FIREPATH + if (DIFFERENT_ALIAS_SETS_P (x, mem)) + return 0; +#endif + if (nonoverlapping_memrefs_p (mem, x, true)) return 0;