A template optimization bug
H.J. Lu
hjl@lucon.org
Sat Oct 17 11:47:00 GMT 1998
This filed failed to compile with egcs 1.0.3/1.1/snapshot
using -O.
# gcc -S -O -v bar.ii
Reading specs from /usr/lib/gcc-lib/i586-pc-linux/egcs-2.91.57/specs
gcc version egcs-2.91.57 19980901 (egcs-1.1 release)
/usr/lib/gcc-lib/i586-pc-linux/egcs-2.91.57/cc1plus bar.ii -quiet -O -version -o bar.s
GNU C++ version egcs-2.91.57 19980901 (egcs-1.1 release) (i586-pc-linux) compiled by GNU C version
egcs-2.91.57 19980901 (egcs-1.1 release).
bar.ii: In function `void * foobar(class bar &, class foo *)':
bar.ii:27: internal error--unrecognizable insn:
(insn 55 150 57 (set (mem:SI (pre_dec:SI (reg:SI 7 %esp)))
(mem:SI (reg:SI 31))) -1 (insn_list 150 (nil))
(expr_list:REG_DEAD (reg:SI 31)
(nil)))
/home/work/misc/gnu/src/egcs-1.1/gcc/toplev.c:1360: Internal compiler error in function fatal_insn
--
H.J. Lu (hjl@gnu.org)
----
template<class T>
class FixSeq
{
public:
void append(const T&);
};
class foo
{
public:
void setupIR();
};
typedef FixSeq<foo *> bar;
extern void dummy (foo *);
void *
foobar (bar &x, foo *p)
{
try
{
p -> setupIR();
}
catch(...)
{
dummy (p);
}
x.append(p);
return p;
}
More information about the Gcc-bugs
mailing list