12712 – [3.3.2/3.4 regression] ICE on short legit C++ code fragment with gcc 3.3.2 (original) (raw)
Description Markus Schoder 2003-10-21 19:42:38 UTC
The following valid C++ code gives an ICE with gcc 3.3.2 when no optimization is used. With -O, -O2 or -O3 the code compiles.
struct A { ~A(); float f(float x); float g() const {return 0;} };
void h() { A a, b; a.f(b.g() + 1); }
Comment 1 Volker Reichelt 2003-10-21 22:05:36 UTC
Indeed. Crashes 3.3.2 and mainline. According to Phil's regression checker, the regression was introduced between 2003-09-21-trunk (#407) and 2003-09-22-trunk (#408).
Comment 2 Eric Botcazou 2003-10-22 04:07:51 UTC
This is
2003-09-22 Olivier Hainque <hainque@act-europe.fr>
[PR target/9786](show%5Fbug.cgi?id=9786 "RESOLVED FIXED - [3.3/3.4 regression] Ice in fixup_abnormal_edges with -fnon-call-exceptions -O2")
* reg-stack.c (convert_regs_1): Purge possible dead eh edges
after potential deletion of trapping insn. Avoids later ICE
from call to fixup_abnormal_edges.
(convert_regs_2): Stack the current block successors before
processing this block, that is, before the potential deletion of
dead edges by convert_regs_1, because these edges have been used
to initialize the predecessors count.Since I checked in the patch, I'll investigate.
Comment 3 Eric Botcazou 2003-10-25 12:42:23 UTC
This is really x86-specific.