c++/9358: ICE in simplify_gen_subreg

aj@suse.de aj@suse.de
Fri Jan 17 21:28:00 GMT 2003


>Number:         9358
>Category:       c++
>Synopsis:       ICE in simplify_gen_subreg
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jan 17 13:26:00 PST 2003
>Closed-Date:
>Last-Modified:
>Originator:     Dirk Müller
>Release:        GCC 3.3 since 2002-12-06
>Organization:
>Environment:
i686-linux-gnu and x86_64-linux-gnu
>Description:
=== Cut===
struct A { ~A(); };

struct B {
  A a;
  void x(B) {  }
};

void foo(const B& b)
{
    B y;
    y.x( b );
}
=== Cut ===

Gives an ICE with GCC 3.3 and 3.4 but not with 3.2:
gromit:~/tmp:[0]$ /opt/gcc/3.3-devel/bin/g++ -O1 -c test.cc
test.cc: In function `void foo(const B&)':
test.cc:5: internal compiler error: in simplify_gen_subreg, at simplify-rtx.c:
   2673
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
gromit:~/tmp:[1]$ /opt/gcc/3.2-devel/bin/g++ -O1 -c test.cc
gromit:~/tmp:[0]$ /opt/gcc/3.4-devel/bin/g++ -O1 -c test.cc
test.cc: In function `void foo(const B&)':
test.cc:5: internal compiler error: in simplify_gen_subreg, at simplify-rtx.c:
   2629
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:
Just compile the small test program.
>Fix:
The bug was introduced with this patch set:

+2002-12-04  Jason Merrill  <jason@redhat.com>
+
+	PR c++/8461, c++/8625
+	* integrate.c (copy_decl_for_inlining): Handle explicit invisible
+	references.
+	* tree-inline.c (initialize_inlined_parameters): Likewise.
+
+	* tree.c (variably_modified_type_p): Just return an error_mark_node.
--- gcc/cp/ChangeLog	4 Dec 2002 11:32:13 -0000	1.3068
+++ gcc/cp/ChangeLog	4 Dec 2002 20:12:59 -0000	1.3069
@@ -6,6 +6,18 @@
 
 2002-12-03  Jason Merrill  <jason@redhat.com>
 
+	PR c++/8674
+	* call.c (build_over_call): Check specifically for TARGET_EXPR
+	when eliding.
+
+	PR c++/8461, c++/8625
+	* call.c (convert_for_arg_passing): Don't mess with error_mark_node.
+	(cp_convert_parm_for_inlining): Remove.
+	* cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): 
+	Remove.
+	* cp-tree.h (ADDR_IS_INVISIREF): Remove.
+	* except.c (stabilize_throw_expr): Remove ADDR_IS_INVISIREF code.
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the Gcc-bugs mailing list