public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c++/8080: g++ 3.3 ICE in make_decl_rtl
@ 2002-09-28  8:16 snyder
  0 siblings, 0 replies; only message in thread
From: snyder @ 2002-09-28  8:16 UTC (permalink / raw)
  To: gcc-gnats


>Number:         8080
>Category:       c++
>Synopsis:       g++ 3.3 ICE in make_decl_rtl
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sat Sep 28 08:16:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     
>Release:        3.3 20020928 (experimental)
>Organization:
<organization of PR author (multiple lines)>
>Environment:
System: Linux karma 2.4.19-emp_2419p5a829i #1 Tue Sep 3 17:42:17 EST 2002 i686 unknown
Architecture: i686

	<machine, os, target, libraries (multiple lines)>
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc/configure --prefix=/usr/local/gcc --enable-threads=posix --enable-long-long : (reconfigured)  : (reconfigured)  : (reconfigured) 
>Description:

g++ crashes on the source below:

$ g++ x.cc
x.cc: In function `void get_root_object(TIter&) [with T = int]':
x.cc:16:   instantiated from here
x.cc:10: internal compiler error: in make_decl_rtl, at varasm.c:812
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
$

Here's where it's crashing:

Starting program: /home/sss/gcc/build/gcc/cc1plus x.cc
 void get_root_object(TIter&) void foo(TIter&) void foo(TIter&) void get_root_object(TIter&) [with T = int] void get_root_object(TIter&) [with T = int]
Breakpoint 1, make_decl_rtl (decl=0x4008f380, asmspec=0x0)
    at ../../gcc/gcc/varasm.c:812
812	    abort ();
(gdb) where
#0  make_decl_rtl (decl=0x4008f380, asmspec=0x0) at ../../gcc/gcc/varasm.c:812
#1  0x08265bcb in expand_expr (exp=0x4008f380, target=0x0, tmode=VOIDmode, 
    modifier=EXPAND_NORMAL) at ../../gcc/gcc/expr.c:6568
#2  0x082814bf in do_jump (exp=0x4008f380, if_false_label=0x0, 
    if_true_label=0x4008cf20) at ../../gcc/gcc/expr.c:10059
#3  0x0827fe9c in do_jump (exp=0x4002afe0, if_false_label=0x4008cf20, 
    if_true_label=0x0) at ../../gcc/gcc/expr.c:9865
#4  0x0843429d in expand_start_cond (cond=0x4002afe0, exitflag=0)
    at ../../gcc/gcc/stmt.c:2415
#5  0x081d0c9f in genrtl_if_stmt (t=0x4002afa0)
    at ../../gcc/gcc/c-semantics.c:406
#6  0x081d2bd3 in expand_stmt (t=0x4002afa0) at ../../gcc/gcc/c-semantics.c:810
#7  0x081d1121 in genrtl_while_stmt (t=0x4002af20)
    at ../../gcc/gcc/c-semantics.c:434
#8  0x081d2bb3 in expand_stmt (t=0x4002af20) at ../../gcc/gcc/c-semantics.c:802
#9  0x081d2596 in genrtl_compound_stmt (t=0x4008db7c)
    at ../../gcc/gcc/c-semantics.c:700
#10 0x081d2be3 in expand_stmt (t=0x4008db7c) at ../../gcc/gcc/c-semantics.c:814
#11 0x081d2596 in genrtl_compound_stmt (t=0x4008db40)
    at ../../gcc/gcc/c-semantics.c:700
#12 0x081d2be3 in expand_stmt (t=0x4008db40) at ../../gcc/gcc/c-semantics.c:814
#13 0x08192351 in expand_body (fn=0x4008f850)
    at ../../gcc/gcc/cp/semantics.c:2454
#14 0x080de371 in instantiate_decl (d=0x4008f850, defer_ok=0)
    at ../../gcc/gcc/cp/pt.c:10173
#15 0x080de8ce in instantiate_pending_templates ()
    at ../../gcc/gcc/cp/pt.c:10250
#16 0x08117c29 in finish_file () at ../../gcc/gcc/cp/decl2.c:2772
#17 0x0818f6a4 in finish_translation_unit ()
    at ../../gcc/gcc/cp/semantics.c:1639
#18 0x08136aae in yyparse () at parse.y:488
#19 0x081d33f0 in c_common_parse_file (set_yydebug=0)
    at ../../gcc/gcc/c-lex.c:159
#20 0x0844bf09 in compile_file () at ../../gcc/gcc/toplev.c:2132
#21 0x0845211e in do_compile () at ../../gcc/gcc/toplev.c:5337
#22 0x08452171 in toplev_main (argc=2, argv=0xbfffcf44)
    at ../../gcc/gcc/toplev.c:5367
#23 0x081e01e6 in main (argc=2, argv=0xbfffcf44) at ../../gcc/gcc/main.c:35


>How-To-Repeat:

----------------
class TObject {};

struct TIter {
  TObject           *operator()();
};


template<class T>
void get_root_object(TIter& iobj) {
  while ( TObject* pnew_obj = iobj() )
    ;
}

void foo(TIter& iobj)
{
  get_root_object<int>(iobj);
}

----------------

>Fix:
	<how to correct or work around the problem, if known (multiple lines)>
>Release-Note:
>Audit-Trail:
>Unformatted:
 SEND-PR: Leave "Confidential" as "no"; all GCC PRs are public.
 SEND-PR: critical     GCC is completely not operational; no work-around known.
 SEND-PR: serious      GCC is not working properly; a work-around is possible.
 SEND-PR: non-critical Report indicates minor problem.
 SEND-PR: medium       The problem should be solved in the next release.
 SEND-PR: low          The problem should be solve in a future release.
 SEND-PR: doc-bug          The documentation is incorrect.
 SEND-PR: accepts-illegal  GCC fails to reject erroneous code.
 SEND-PR: rejects-legal    GCC gives an error message for correct code.
 SEND-PR: wrong-code       The machine code generated by gcc is incorrect.
 SEND-PR: ice-on-legal-code   GCC gives an Internal Compiler Error (ICE)
 SEND-PR:                     for correct code
 SEND-PR: ice-on-illegal-code GCC gives an ICE instead of reporting an error
 SEND-PR: pessimizes-code     GCC misses an important optimization opportunity
 SEND-PR: sw-bug              Software bug of some other class than above
 SEND-PR: change-request      A feature in GCC is missing.
 SEND-PR: support             I need help with gcc.


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-09-28 15:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-09-28  8:16 c++/8080: g++ 3.3 ICE in make_decl_rtl snyder

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).