The patch that causes PR 7782: The patch that causes it
Wolfgang Bangerth
bangerth@ticam.utexas.edu
Wed Dec 11 09:10:00 GMT 2002
OK, here's the first result of the "regression tracking special team"
(Craig, Janis, me, maybe Volker):
The cause for PR 7782 is this patch:
> 2002-01-10 Richard Henderson <rth@redhat.com>
>
> * cfgrtl.c (delete_insn): Assert insn hasn't been deleted yet.
> * reload1.c (delete_output_reload): Zap spill_reg_store. Take
> care not to delete instructions twice.
Here's a testcase:
-----------------
// g++ -O -c PR7782.cc
struct A {
long long x, y;
void bar () const {
A a;
a.y = ~y;
if ((a.x = -y)) ++a.y;
}
void foo (int) const;
};
void A::foo (int i) const {
if (i) bar(); if (i) bar();
}
------------------
Here's the error:
tmp/g> /home/bangerth/tmp/gcc/p/b/gcc/cc1plus -O -quiet PR7782.cc
PR7782.cc: In member function `void A::foo(int) const':
PR7782.cc:18: Internal compiler error in delete_insn, at cfgrtl.c:140
Richard, I understand that the bug may only have been uncovered by your
inserting an assertion, but maybe you can say something about it anyway.
Regards
Wolfgang
PS: I'm sorry that my first "victim" is someone who has, by reviewing all
those patches, helped gcc in such a major way...
-------------------------------------------------------------------------
Wolfgang Bangerth email: bangerth@ticam.utexas.edu
www: http://www.ticam.utexas.edu/~bangerth
More information about the Gcc
mailing list