This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/50489] [UPC/IA64] mis-schedule of MEM ref with -ftree-vectorize and -fschedule-insns2
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 25 Sep 2011 12:13:44 +0000
- Subject: [Bug rtl-optimization/50489] [UPC/IA64] mis-schedule of MEM ref with -ftree-vectorize and -fschedule-insns2
- Auto-submitted: auto-generated
- References: <bug-50489-4@http.gcc.gnu.org/bugzilla/>
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.