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 target/65914] [6 Regression] error: unrecognizable insn


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

--- Comment #6 from Bill Schmidt <wschmidt at gcc dot gnu.org> ---
The tree-optimized dump shows:

void foo() ()
{
  vector(2) long unsigned int vect_cst_.60;
  vector(2) long unsigned int vect_cst_.59;
  vector(2) long unsigned int vect_cst_.58;
  struct A p1;
  const struct A D.3509;
  int p1;
  int p1;
  const struct A D.3508;
  struct A p1;
  struct expression D.3507;
  long unsigned int _5;
  long unsigned int _6;
  long unsigned int _8;
  long unsigned int _11;
  long unsigned int _18;
  long unsigned int _19;

  <bb 2>:
  _18 = (long unsigned int) &p1;
  _19 = (long unsigned int) &p1;
  vect_cst_.60_20 = {_19, _18};
  _6 = (long unsigned int) &D.3509;
  _5 = (long unsigned int) &p1;
  vect_cst_.59_17 = {_5, _6};
  _11 = (long unsigned int) &D.3508;
  _8 = (long unsigned int) &p1;
  vect_cst_.58_7 = {_8, _11};
  D.3509 ={v} {CLOBBER};
  D.3508 ={v} {CLOBBER};
  MEM[(struct  &)&D.3507] ={v} {CLOBBER};
  MEM[(const struct A & *)&D.3507] = vect_cst_.60_20;
  MEM[(const struct A & *)&D.3507 + 16B] = vect_cst_.59_17;
  MEM[(const struct A & *)&D.3507 + 32B] = vect_cst_.58_7;
  operator/<int, A<int>, expression<int, expression<int, int, expression<int,
A\
<int>, A<int>, void, void>, void, void>, expression<int, int, A<int>, void,
voi\
d>, void, void>, void, void, double> (D.3507,
1.0000000000000000555111512312578\
27021181583404541015625e-1);
  return;

}

The problem is that the POWER port doesn't appear to have a pattern to match
the vector constructors like:

  vect_cst_.60_20 = {_19, _18};

The translation into rtl is a (vec_concat:V2DI (reg:DI) (reg:DI)).  The closest
thing we have to matching this is vsx_concat_<mode> in vsx.md, but IIUC this
will only match (vec_concat:V2DF (reg:DF) (reg:DF)) because of the
vsx_register_operand restriction.  Mike Meissner, can you please confirm?


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