[Bug rtl-optimization/50489] [UPC/IA64] mis-schedule of MEM ref with -ftree-vectorize and -fschedule-insns2
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Sep 25 12:26:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50489
--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-09-25 12:13:44 UTC ---
D.3059_11 = VIEW_CONVERT_EXPR<shared [8] struct foo[1] *>(D.3058);
looks like bogus IL to me. You view D.3058, a struct of size 16, as
a pointer (of size 8). I suppose you want to load D.3058.vaddr here?
D.3060_12 = (shared [8] struct foo *) D.3059_11;
D.3061_13 = VIEW_CONVERT_EXPR<struct upc_shared_ptr_t>(D.3060_12).phase;
looks bogus IL to me. It views the pointer(!?) D.3060_12 as being a
struct upc_shared_ptr_t and extracts a value that is not within that
pointer.
But maybe I'm missing something because I don't recognize that 'shared [8]'
qualification.
Do you want to dereference D.3060_12 (D.3058.vaddr) here?
That said, I wonder why you don't trip over tree-cfg.c verification
of VIEW_CONVERT_EXPR as TYPE_SIZE (TREE_TYPE (D.3060_12)) != TYPE_SIZE (struct
upc_shared_ptr_t).
Please try to avoid using VIEW_CONVERT_EXPRs completely unless you know
exactly what you are doing.
More information about the Gcc-bugs
mailing list