[Bug c++/83667] New: ICE in dump_function_decl on a thunk with variadic arguments

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jan 3 12:20:00 GMT 2018


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

            Bug ID: 83667
           Summary: ICE in dump_function_decl on a thunk with variadic
                    arguments
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: nathan at gcc dot gnu.org
  Target Milestone: ---

Very ancient bug, fails for all releases I have:

$ cat ice.cpp

struct a
{
  virtual ~a ();
};
struct b
{
  virtual void d (...);
};
struct : a, b
{
  void
  d (...)
  {
  }
} c;

$ ./xgcc -B. ice.cpp -fdump-ipa-inline
during IPA pass: inline
/home/marxin/Programming/testcases/ice.cpp:15:4: internal compiler error:
Segmentation fault
 } c;
    ^
0x120ee31 crash_signal
        ../../gcc/toplev.c:325
0x81e0d4 tree_check(tree_node*, char const*, int, char const*, tree_code)
        ../../gcc/tree.h:3127
0x93d23a dump_function_decl
        ../../gcc/cp/error.c:1604
0x93b36b dump_decl
        ../../gcc/cp/error.c:1259
0x943e21 decl_as_string(tree_node*, int)
        ../../gcc/cp/error.c:2956
0x943ef9 lang_decl_name(tree_node*, int, bool)
        ../../gcc/cp/error.c:2990
0xae90a8 cxx_printable_name_internal
        ../../gcc/cp/tree.c:2556
0xae9148 cxx_printable_name(tree_node*, int)
        ../../gcc/cp/tree.c:2565
0xc60c85 symtab_node::name() const
        ../../gcc/symtab.c:524
0xf4a057 ipa_dump_fn_summary(_IO_FILE*, cgraph_node*)
        ../../gcc/ipa-fnsummary.c:889
0xf4a4eb ipa_dump_fn_summaries(_IO_FILE*)
        ../../gcc/ipa-fnsummary.c:959
0x1db5621 ipa_inline
        ../../gcc/ipa-inline.c:2370
0x1db667e execute
        ../../gcc/ipa-inline.c:2855

   │1600      if (DECL_CLASS_SCOPE_P (t))
   │1601        cname = DECL_CONTEXT (t);
   │1602      /* This is for partially instantiated template methods.  */
   │1603      else if (TREE_CODE (fntype) == METHOD_TYPE)
  >│1604        cname = TREE_TYPE (TREE_VALUE (parmtypes));

parmtypes == 0

Nathan can you please take a look?

Martin


More information about the Gcc-bugs mailing list