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 middle-end/20991] New: ICE in cgraph_mark_reachable_node


Current gcc-4_0-branch (i.e. with PR20635 fix in) ICEs on the attached testcase
at -O3 -m32.  It is a recent regression (the assert was added 2005-03-18)
and prevents building Octave.
virtual std::string octave_value::class_name() const (this)
{
...
}
seen in *.generic dump seems to be unused until *.dom1 time (till then
Fissparse uses
  arg_106 = &D.101031;
  D.141412_107 = arg_106->_vptr.octave_value;
  D.141413_108 = D.141412_107 + 468B;
  D.141414_109 = *D.141413_108;
  OBJ_TYPE_REF(D.141414_109;arg_106->117) (&D.141411, arg_106) [return slot
addr];
and only in the first dominator pass this gets changed into:
  arg_175 = &arg;
  D.131589_176 = arg._vptr.octave_value;
  D.131590_177 = D.131589_176 + 468B;
  D.131591_178 = *D.131590_177;
  class_name (&D.131588, &arg) [return slot addr];
but cgraph does not know about this call until Fissparse's assembly is emitted.
But at that point cgraph_global_info_ready is already true, therefore the ICE.

-- 
           Summary: ICE in cgraph_mark_reachable_node
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P2
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jakub at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org,hubicka at gcc dot gnu
                    dot org
GCC target triplet: i386-redhat-linux


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


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