From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13870 invoked by alias); 20 Feb 2007 21:03:37 -0000 Received: (qmail 13842 invoked by uid 48); 20 Feb 2007 21:03:26 -0000 Date: Tue, 20 Feb 2007 21:03:00 -0000 Subject: [Bug c++/30895] New: [4.1/4.2/4.3 regression] ICE with complex values in template parameter X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "reichelt at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2007-02/txt/msg02387.txt.bz2 The following code snippet triggers an ICE since GCC 3.4.0: ===================================== template struct A {}; template struct B { A a1; A a2; }; ===================================== bug.cc:6: internal compiler error: in cp_tree_equal, at cp/tree.c:1858 Please submit a full bug report, [etc.] Before we got the message: bug.cc:5: sorry, unimplemented: `complex_cst' not supported by dump_expr bug.cc:5: sorry, unimplemented: `complex_cst' not supported by dump_expr bug.cc:6: sorry, unimplemented: `complex_cst' not supported by dump_expr bug.cc:6: sorry, unimplemented: `complex_cst' not supported by dump_expr I'm not quite sure whether the code is valid or not. It does compile with "0.0" instead of "0i". So if we consider complex types as basic arithmetic types, the code should be valid IMHO. OTOH, we don't allow casts from complex int to int. But if we don't instantiate B this shouldn't matter IMHO. -- Summary: [4.1/4.2/4.3 regression] ICE with complex values in template parameter Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, monitored Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30895