[Bug ipa/59918] [4.9 Regression] ICE in record_target_from_binfo, at ipa-devirt.c:693

trippels at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jan 23 14:31:00 GMT 2014


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-01-23
                 CC|                            |hubicka at gcc dot gnu.org,
                   |                            |trippels at gcc dot gnu.org
          Component|tree-optimization           |ipa
     Ever confirmed|0                           |1

--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
markus@x4 tmp % cat test.ii
class NameValuePairs {
public:
  ~NameValuePairs();
  virtual bool GetVoidValue(const char *, const std::type_info &valueType,
                            void *) const;
};
class B : NameValuePairs {};
class F : virtual B {};
class G : virtual B {};
class ASN1Object {
public:
  virtual ~ASN1Object();
};
template <class, class BASE> class GetValueHelperClass {
public:
  GetValueHelperClass(int *, int *, const std::type_info &valueType, void *,
                      NameValuePairs *searchFirst) {
    searchFirst->GetVoidValue(0, valueType, 0);
  }
  void Assignable();
};
template <class BASE, class T>
GetValueHelperClass<T, int>
GetValueHelper(T, int, const std::type_info &valueType, void *) {
  GetValueHelperClass<T, BASE>(0, 0, valueType, 0, 0);
}
template <class BASE> class C : ASN1Object, BASE {};
class DL_GroupParameters : F {};
template <class GP> class H : C<F> {
  GP m_groupParameters;
};
template <class GP> class DL_PrivateKeyImpl : H<GP> {};
template <class BASE> class D : BASE {};
class ECP;
template <class EC> class DL_GroupParameters_EC : DL_GroupParameters {
  bool GetVoidValue(const char *, const std::type_info &valueType,
                    void *) const;
};
class A : DL_PrivateKeyImpl<DL_GroupParameters_EC<ECP> > {};
template class D<A>;
class I : C<G>, C<F> {};
template <class EC>
bool DL_GroupParameters_EC<EC>::GetVoidValue(const char *,
                                             const std::type_info &valueType,
                                             void *) const {
  GetValueHelper<DL_GroupParameters>(0, 0, valueType, 0).Assignable();
}

markus@x4 tmp % g++ -O2 -c test.ii
test.ii: In constructor ‘GetValueHelperClass< <template-parameter-1-1>,
BASE>::GetValueHelperClass(int*, int*, const std::type_info&, void*,
NameValuePairs*) [with <template-parameter-1-1> = int; BASE =
DL_GroupParameters]’:
test.ii:18:5: internal compiler error: in record_target_from_binfo, at
ipa-devirt.c:693
     searchFirst->GetVoidValue(0, valueType, 0);
     ^
0x9d0f2b record_target_from_binfo
        ../../gcc/gcc/ipa-devirt.c:693
0x9d0d2c record_target_from_binfo
        ../../gcc/gcc/ipa-devirt.c:728
0x9d0d2c record_target_from_binfo
        ../../gcc/gcc/ipa-devirt.c:728
0x9d0d2c record_target_from_binfo
        ../../gcc/gcc/ipa-devirt.c:728
0x9d0d2c record_target_from_binfo
        ../../gcc/gcc/ipa-devirt.c:728
0x9d133b possible_polymorphic_call_targets_1
        ../../gcc/gcc/ipa-devirt.c:755
0x9d13b4 possible_polymorphic_call_targets_1
        ../../gcc/gcc/ipa-devirt.c:762
0x9d13b4 possible_polymorphic_call_targets_1
        ../../gcc/gcc/ipa-devirt.c:762
0x9d13b4 possible_polymorphic_call_targets_1
        ../../gcc/gcc/ipa-devirt.c:762
0x9d3d32 possible_polymorphic_call_targets(tree_node*, long,
ipa_polymorphic_call_context, bool*, void**)
        ../../gcc/gcc/ipa-devirt.c:1346
0x99093b possible_polymorphic_call_targets(tree_node*, bool*, void**)
        ../../gcc/gcc/ipa-utils.h:135
0x98db4c gimple_fold_call
        ../../gcc/gcc/gimple-fold.c:1193
0x98db4c fold_stmt_1
        ../../gcc/gcc/gimple-fold.c:1306
0x9b01e3 gimplify_call_expr
        ../../gcc/gcc/gimplify.c:2427
0x9a3494 gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
        ../../gcc/gcc/gimplify.c:7412
0x9a7206 gimplify_stmt(tree_node**, gimple_statement_base**)
        ../../gcc/gcc/gimplify.c:5334
0x9a353a gimplify_cleanup_point_expr
        ../../gcc/gcc/gimplify.c:5110
0x9a353a gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
        ../../gcc/gcc/gimplify.c:7804
0x9a7206 gimplify_stmt(tree_node**, gimple_statement_base**)
        ../../gcc/gcc/gimplify.c:5334
0x9a7faa gimplify_bind_expr
        ../../gcc/gcc/gimplify.c:1072
Please submit a full bug report,


More information about the Gcc-bugs mailing list