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 ipa/59882] [4.9 Regression] internal compiler error: Segmentation fault


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59882

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
           Keywords|                            |ice-on-valid-code
   Last reconfirmed|                            |2014-01-20
          Component|other                       |ipa
                 CC|                            |trippels at gcc dot gnu.org
     Ever confirmed|0                           |1
            Summary|dev-cpp/xsd: internal       |[4.9 Regression]  internal
                   |compiler error:             |compiler error:
                   |Segmentation fault          |Segmentation fault
   Target Milestone|---                         |4.9.0

--- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Confirmed. Another devirtualization issue.

markus@x4 tmp % cat test.ii
class A;
class B {};
struct C {
  virtual void dispatch();
  int traversal_map_;
};
template <typename> class F : public virtual C {};

struct I : F<A>, F<int> {};
struct J : B, I {};
class D {};
struct L {
  L(D &, int &p2) : map_(p2) {}
  virtual void traverse(int &p1) {
    int &s = p1;
    names<L>(s, names_);
  }
  int &map_;
  J names_;
  template <typename> void names(int &, C &p2) { p2.dispatch(); }
};

struct G : D {
  G(D &, int &p2) : map_(p2) { L(*this, map_); }
  int &map_;
};

int a;
void fn1(D &p1) { G(p1, a); }

markus@x4 tmp % g++ -c -O2 test.ii
test.ii: In member function âvirtual void L::traverse(int&)â:
test.ii:29:29: internal compiler error: Segmentation fault
 void fn1(D &p1) { G(p1, a); }
                             ^
0xb541af crash_signal
        ../../gcc/gcc/toplev.c:337
0x98e5eb tree_check
        ../../gcc/gcc/tree.h:2708
0x98e5eb gimple_get_virt_method_for_binfo(long, tree_node*)
        ../../gcc/gcc/gimple-fold.c:3242
0x9d35a9 possible_polymorphic_call_targets(tree_node*, long,
ipa_polymorphic_call_context, bool*, void**)
        ../../gcc/gcc/ipa-devirt.c:1312
0x9902ab possible_polymorphic_call_targets(tree_node*, bool*, void**)
        ../../gcc/gcc/ipa-utils.h:135
0x98d4a6 gimple_fold_call
        ../../gcc/gcc/gimple-fold.c:1185
0x98d4a6 fold_stmt_1
        ../../gcc/gcc/gimple-fold.c:1298
0xbaacb9 fold_marked_statements
        ../../gcc/gcc/tree-inline.c:4511
0xbb8374 optimize_inline_calls(tree_node*)
        ../../gcc/gcc/tree-inline.c:4592
0x1058409 early_inliner
        ../../gcc/gcc/ipa-inline.c:2272
0x1058409 execute
        ../../gcc/gcc/ipa-inline.c:2335
Please submit a full bug report,

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