The following valid code snippet triggers an ICE on mainline and 4.3 branch when compiled with -O: =============== void foo() { throw 0r; } =============== bug.cc: In function 'void foo()': bug.cc:3: internal compiler error: in write_type, at cp/mangle.c:1695 Please submit a full bug report, [etc.] The code was invalid before GCC 4.3.0 and was simply rejected.
The code also ICEs without "-O".
This is most likely because there is no way to mangle fixed point types at all. So really I don't think this should be a P2 or marked as a regression until the ABI has been finialized
4.3.1 is being released, adjusting target milestone.
4.3.2 is released, changing milestones to 4.3.3.
Is there a mangling convention now for fixed-point types, or not? If not, we should make this a sorry() and resolve this bug as SUSPENDED for now. If there is, well, you know, we should add it ;-)
Subject: Bug 35319 Author: jason Date: Wed Dec 10 22:11:44 2008 New Revision: 142661 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=142661 Log: PR c++/35319 * mangle.c (write_builtin_type): Add mangling for decimal floating point and fixed point types. (write_type): Pass FIXED_POINT_TYPE along. * cp-demangle.c (cplus_demangle_type): Support fixed-point types. (d_print_comp, d_dump): Likewise. Added: trunk/gcc/testsuite/g++.dg/ext/fixed2.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/mangle.c trunk/gcc/testsuite/ChangeLog trunk/include/ChangeLog trunk/include/demangle.h trunk/libiberty/ChangeLog trunk/libiberty/cp-demangle.c
Fixed on mainline.
The fix isn't suitable for 4.3.
Fixed-point constants are rejected by the C++ frontend since the patch for PR39059.