This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/50489] [UPC/IA64] mis-schedule of MEM ref with -ftree-vectorize and -fschedule-insns2


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]