[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-07-05 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #12 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
fixed


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-07-05 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

--- Comment #11 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Author: wschmidt
Date: Mon Jul  6 02:08:59 2015
New Revision: 225442

URL: https://gcc.gnu.org/viewcvs?rev=225442root=gccview=rev
Log:
[gcc]

2015-07-05  Bill Schmidt  wschm...@linux.vnet.ibm.com

Backport from mainline r224725
2015-06-22  Bill Schmidt  wschm...@linux.vnet.ibm.com

PR target/65914
* config/rs6000/predicates.md (altivec_register_operand): Permit
virtual stack registers.
(vsx_register_operand): Likewise.
(vfloat_operand): Likewise.
(vint_operand): Likewise.
(vlogical_operand): Likewise.

[gcc/testsuite]

2015-07-05  Bill Schmidt  wschm...@linux.vnet.ibm.com

Backport from mainline r224725
2015-06-22  Bill Schmidt  wschm...@linux.vnet.ibm.com

PR target/65914
* g++.dg/torture/pr65914.C:  New.


Added:
branches/gcc-4_9-branch/gcc/testsuite/g++.dg/torture/pr65419.C
Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/config/rs6000/predicates.md
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-07-05 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

--- Comment #10 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Author: wschmidt
Date: Mon Jul  6 02:07:49 2015
New Revision: 225441

URL: https://gcc.gnu.org/viewcvs?rev=225441root=gccview=rev
Log:
[gcc]

2015-07-05  Bill Schmidt  wschm...@linux.vnet.ibm.com

Backport from mainline r224725
2015-06-22  Bill Schmidt  wschm...@linux.vnet.ibm.com

PR target/65914
* config/rs6000/predicates.md (altivec_register_operand): Permit
virtual stack registers.
(vsx_register_operand): Likewise.
(vfloat_operand): Likewise.
(vint_operand): Likewise.
(vlogical_operand): Likewise.

[gcc/testsuite]

2015-07-05  Bill Schmidt  wschm...@linux.vnet.ibm.com

Backport from mainline r224725
2015-06-22  Bill Schmidt  wschm...@linux.vnet.ibm.com

PR target/65914
* g++.dg/torture/pr65914.C:  New.


Added:
branches/gcc-5-branch/gcc/testsuite/g++.dg/torture/pr65419.C
Modified:
branches/gcc-5-branch/gcc/ChangeLog
branches/gcc-5-branch/gcc/config/rs6000/predicates.md
branches/gcc-5-branch/gcc/testsuite/ChangeLog


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-06-22 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

--- Comment #8 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Author: wschmidt
Date: Mon Jun 22 13:16:04 2015
New Revision: 224725

URL: https://gcc.gnu.org/viewcvs?rev=224725root=gccview=rev
Log:
[gcc]

2015-06-22  Bill Schmidt  wschm...@linux.vnet.ibm.com

PR target/65914
* config/rs6000/predicates.md (altivec_register_operand): Permit
virtual stack registers.
(vsx_register_operand): Likewise.
(vfloat_operand): Likewise.
(vint_operand): Likewise.
(vlogical_operand): Likewise.

[gcc/testsuite]

2015-06-22  Bill Schmidt  wschm...@linux.vnet.ibm.com

PR target/65914
* g++.dg/torture/pr65914.C:  New.


Added:
trunk/gcc/testsuite/g++.dg/torture/pr65914.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/predicates.md
trunk/gcc/testsuite/ChangeLog


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-06-22 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

Bill Schmidt wschmidt at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |wschmidt at gcc dot 
gnu.org

--- Comment #9 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Will let this burn in for a week, and then plan to backport to 4.9/5.


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-06-19 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

--- Comment #7 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Looking at the vsx_register_operand predicate in predicates.md, this seems to
need some TLC.  Will discuss with Mike Meissner offline.


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-06-18 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

--- Comment #4 from Bill Schmidt wschmidt at gcc dot gnu.org ---
With the smaller test, at least, this did not reproduce for me with r223868. 
Patching up to latest and will try again.


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-06-18 Thread wschmidt at gcc dot gnu.org
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, Aint, expressionint, expressionint, int, expressionint,
A\
int, Aint, void, void, void, void, expressionint, int, Aint, void,
voi\
d, void, void, void, void, double (D.3507,
1.555111512312578\
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?


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-06-18 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

--- Comment #5 from Bill Schmidt wschmidt at gcc dot gnu.org ---
Confirmed with r224625, however.


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-06-17 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-06-17
 Ever confirmed|0   |1

--- Comment #3 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Another smaller testcase:

trippels@gcc2-power8 tools % cat sf_concept_check_elliptic.ii
enum expression_template_option { et_on };
template class, expression_template_option = et_on class A;
template class, class, class, class = void, class = void struct expression;
template class T struct B { typedef const T type; };
template class tag, class A1, class A2, class A3, class A4
struct Bexpressiontag, A1, A2, A3, A4 {
  typedef expressiontag, A1, A2 type;
};
template class tag, class Arg1, class Arg2
struct expressiontag, Arg1, Arg2 {
  expression(Arg1 p1, const Arg2 p2) : arg1(p1), arg2(p2) {}
  typename BArg1::type arg1;
  typename BArg2::type arg2;
};
template class Backend expressionint, int, ABackend sin(ABackend) {
  return expressionint, int, ABackend(0, 0);
}
template class tag, class A1, class A2, class A3, class A4
expressionint, int, expressiontag, A1, A2
asin(expressiontag, A1, A2, A3, A4 p1) {
  return expressionint, int, expressiontag, A1, A2(0, p1);
}
template class B, expression_template_option ET, class tag, class Arg1,
  class Arg2, class Arg3, class Arg4
expressionint, AB, expressiontag, Arg1, Arg2
operator+(AB, ET, expressiontag, Arg1, Arg2, Arg3, Arg4 p2) {
  return expressionint, AB, expressiontag, Arg1, Arg2(0, p2);
}
template class tag, class Arg1, class Arg2, class Arg3, class Arg4, class
tag2,
  class Arg1b, class Arg2b, class Arg3b, class Arg4b
expressionint, expressiontag, Arg1, Arg2, expressiontag2, Arg1b, Arg2b
operator*(expressiontag, Arg1, Arg2, Arg3, Arg4 p1,
  expressiontag2, Arg1b, Arg2b, Arg3b, Arg4b p2) {
  return expressionint, expressiontag, Arg1, Arg2,
expressiontag2, Arg1b, Arg2b(p1, p2);
}
template class B expressionint, AB, AB operator/(AB, AB) {
  return expressionint, AB, AB(0, 0);
}
template class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V
void operator/(expressiontag, Arg1, Arg2, Arg3, Arg4, V);
template class, expression_template_option class A {
public:
  A() {}
  template class V A(V) {}
};
template class T, class Policy void jacobi_recurse(T, T, Policy) {
  T a, b, c;
  (a + asin(b / c) * sin(a)) / 0.1;
}
template class T, class Policy void jacobi_imp(T p1, Policy) {
  T x;
  jacobi_recurse(x, p1, 0);
}
template class T, class U, class V, class Policy
void jacobi_elliptic(T, U, V, Policy) {
  jacobi_imp(static_castT(0), 0);
}
template class U, class T, class Policy void jacobi_sn(U, T, Policy) {
  jacobi_elliptic(static_castT(0), 0, 0, 0);
}
template class U, class T void jacobi_sn(U, T p2) { jacobi_sn(0, p2, 0); }
template class T void test_extra(T) {
  T d;
  jacobi_sn(0, d);
}
void foo() { test_extra(Aint()); }


trippels@gcc2-power8 tools % g++ -O3 -c -std=c++14 sf_concept_check_elliptic.ii
sf_concept_check_elliptic.ii: In function ‘void foo()’:
sf_concept_check_elliptic.ii:67:36: error: unrecognizable insn:
 void foo() { test_extra(Aint()); }
^
(insn 11 10 12 2 (set (reg:V2DI 168 [ vect_cst_.59 ])
(vec_concat:V2DI (reg:DI 169 [ D.3522 ])
(reg/f:DI 150 virtual-stack-vars [ D.3522 ]))) -1
 (nil))
sf_concept_check_elliptic.ii:67:36: internal compiler error: in extract_insn,
at recog.c:2319
0x109fe913 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
../../gcc/gcc/rtl-error.c:110
0x109fe98f _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
../../gcc/gcc/rtl-error.c:118
0x109c32a7 extract_insn(rtx_insn*)
../../gcc/gcc/recog.c:2319
0x106f6d5b instantiate_virtual_regs_in_insn
../../gcc/gcc/function.c:1588
0x106f6d5b instantiate_virtual_regs
../../gcc/gcc/function.c:1956
0x106f6d5b execute
../../gcc/gcc/function.c:2005
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.

[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-04-28 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |6.0


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-04-28 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

--- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Created attachment 35415
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35415action=edit
Somewhat reduced testcase


[Bug target/65914] [6 Regression] error: unrecognizable insn

2015-04-28 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65914

--- Comment #2 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Started with r222514 so possibly a latent issue.