Summary: | [3.3/3.4 regression] ICE: const myclass &x = *x; (when operator*() defined) | ||
---|---|---|---|
Product: | gcc | Reporter: | Joel Yliluoma <bisqwit> |
Component: | middle-end | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | gcc-bugs, los |
Priority: | P3 | Keywords: | ice-on-valid-code |
Version: | 3.3 | ||
Target Milestone: | 3.3.1 | ||
Host: | i386-pc-linux-gnu | Target: | i386-pc-linux-gnu |
Build: | i386-pc-linux-gnu | Known to work: | |
Known to fail: | Last reconfirmed: | 2003-05-31 10:08:07 |
Description
Joel Yliluoma
2003-05-31 02:25:37 UTC
This same problem also occurs on mainline (20030527). Dara I think the code is well-formed (although a warning would be nice). The code actually compiles with gcc 3.0.x, but ICE's with gcc 2.95.x and since 3.1. Thus, we have a regression. The bug (also PR 4907) is fixed on the tree-ssa-branch. Changing this to the middle end because the ICE is in varasm.c or expr.c which is in the middle- end Subject: Bug 11041 CVSROOT: /cvs/gcc Module name: gcc Changes by: mmitchel@gcc.gnu.org 2003-06-20 00:48:44 Modified files: gcc/cp : ChangeLog call.c cp-tree.h decl.c decl.h decl2.c rtti.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/g++.dg/init: ref7.C Log message: PR c++/11041 * call.c (initialize_reference): Do not use cp_finish_decl to emit temporary variables. * cp-tree.h (static_aggregates): Declare. (pushdecl_top_level_and_finish): Likewise. * decl.c (pushdecl_top_level_1): New function. (pushdecl_top_level): Use it. (pushdecl_top_level_and_finish): New function. (initialize_local_var): Remove redundant code. (cp_finish_decl): Remove support for RESULT_DECLs. Don't check building_stmt_tree. * decl.h (static_aggregates): Remove. * decl2.c (get_guard): Use pushdecl_top_level_and_finish. * rtti.c (get_tinfo_decl): Use pushdecl_top_level_and_finish. (tinfo_base_init): Likewise. PR c++/11041 * g++.dg/init/ref7.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.3439&r2=1.3440 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/call.c.diff?cvsroot=gcc&r1=1.387&r2=1.388 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cp-tree.h.diff?cvsroot=gcc&r1=1.856&r2=1.857 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.c.diff?cvsroot=gcc&r1=1.1067&r2=1.1068 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.h.diff?cvsroot=gcc&r1=1.10&r2=1.11 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl2.c.diff?cvsroot=gcc&r1=1.629&r2=1.630 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/rtti.c.diff?cvsroot=gcc&r1=1.163&r2=1.164 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.2781&r2=1.2782 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/init/ref7.C.diff?cvsroot=gcc&r1=NONE&r2=1.1 Subject: Bug 11041 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_3-branch Changes by: mmitchel@gcc.gnu.org 2003-06-20 01:18:48 Modified files: gcc/cp : ChangeLog call.c cp-tree.h decl.c decl.h decl2.c rtti.c gcc/testsuite : ChangeLog Added files: gcc/testsuite/g++.dg/init: ref7.C Log message: PR c++/11041 * call.c (initialize_reference): Do not use cp_finish_decl to emit temporary variables. * cp-tree.h (static_aggregates): Declare. (pushdecl_top_level_and_finish): Likewise. * decl.c (pushdecl_top_level_1): New function. (pushdecl_top_level): Use it. (pushdecl_top_level_and_finish): New function. (initialize_local_var): Remove redundant code. (cp_finish_decl): Remove support for RESULT_DECLs. Don't check building_stmt_tree. * decl.h (static_aggregates): Remove. * decl2.c (get_guard): Use pushdecl_top_level_and_finish. * rtti.c (get_tinfo_decl): Use pushdecl_top_level_and_finish. (tinfo_base_init): Likewise. PR c++/11041 * g++.dg/init/ref7.C: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.3076.2.153&r2=1.3076.2.154 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/call.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.341.2.20&r2=1.341.2.21 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/cp-tree.h.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.776.2.21&r2=1.776.2.22 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.965.2.48&r2=1.965.2.49 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.h.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.8&r2=1.8.20.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl2.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.575.2.29&r2=1.575.2.30 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/rtti.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.146.2.1&r2=1.146.2.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.2261.2.191&r2=1.2261.2.192 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/init/ref7.C.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=NONE&r2=1.1.2.1 Fixed in GCC 3.3.1, GCC 3.4. |