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/65263] New: [5 Regression] ICE (error: unrecognizable insn / in insn_min_length, at config/rs6000/rs6000.md) on powerpc64le-linux-gnu


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

            Bug ID: 65263
           Summary: [5 Regression] ICE (error: unrecognizable insn / in
                    insn_min_length, at config/rs6000/rs6000.md) on
                    powerpc64le-linux-gnu
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: doko at gcc dot gnu.org

seen with r221076 on powerpc64le-linux-gnu

$ g++ -c -g -O3 -fPIC eigenvalue.ii 
eigenvalue.ii:26:19: warning: direct base 'VirtualMatrice<int>' inaccessible in
'C<int>' due to ambiguity
 template <> class C<int> : H<Complex>, VirtualMatrice<Complex> {
                   ^
eigenvalue.ii: In member function 'virtual bool
C<int>::_ZThn8_NK1CIiE5m_fn1Ei(int) const':
eigenvalue.ii:47:1: error: unrecognizable insn:
 }
 ^
(call_insn/j 3 2 4 (parallel [
            (call (mem:SI (symbol_ref/i:DI ("_ZNK14VirtualMatriceIiE5m_fn1Ei")
[flags 0x1] <function_decl 0x3fff9696fdf8 m_fn1>) [0  S4 A8])
                (const_int 0 [0]))
            (use (const_int 0 [0]))
            (use (reg:SI 65 lr))
            (simple_return)
        ]) eigenvalue.ii:27 -1
     (nil)
    (nil))
eigenvalue.ii:47:1: internal compiler error: in insn_min_length, at
config/rs6000/rs6000.md:7813
Please submit a full bug report,
with preprocessed source if appropriate.

$cat eigenvalue.ii
template <class> class A;
template <class R> struct VirtualMatrice {
  virtual bool m_fn1(int) const { return true; }
  struct B {
    A<R> x;
    B(VirtualMatrice *p1, A<R> p2) : x(p2) { p1->m_fn1(0) ?: throw; }
  };
  void operator*(A<R> p1) { B(this, p1); }
  ~VirtualMatrice();
}
;
template <class> class A {
public:
  operator int *();
  A(int *, long);
};

class G : public A<int> {
public:
  G(long);
};
int typedef Complex;
template <class> class H : VirtualMatrice<int> {};
template <class> class C;
template <> class C<int> : H<Complex>, VirtualMatrice<Complex> {
  bool m_fn1(int) const { return true; }
};
template <class K, class Mat>
void DoIdoAction(int, int, A<K> p3, A<K>, A<K>, A<K>, Mat, Mat &p8) {
  p8 *p3;
}

class D {
  typedef int K;
  class F {
    int operator()() const;
  };
};
int D::F::operator()() const {
  VirtualMatrice<K> *a;
  VirtualMatrice<K> b, &B = *a;
  G c(0), g(1);
  int d, e, f;
  A<K> h(&g[f], 0), i(&g[e], 0), j(&g[d], 0);
  DoIdoAction(0, 3, h, i, j, c, b, B);
}


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