From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeffrey A Law To: hjl@lucon.org (H.J. Lu) Cc: gafton@redhat.com (Cristian Gafton), rth@cygnus.com, egcs@cygnus.com Subject: Re: egcs 1.0.2 is broken on x86 and a patch for it. Date: Mon, 20 Apr 1998 00:56:00 -0000 Message-id: <17624.893055503@hurl.cygnus.com> References: X-SW-Source: 1998-04/msg00789.html In message < m0yPWgx-00058vC@ocean.lucon.org >you write: > egcs 1.0.2 is broken on x86. I know folks have asked you before, so please use "has a bug" instead of "is broken". It seems silly, but using "is broken" makes the situation sound a lot worse than it really is. The test case here is miscompiled by -O2. Thanks. I've added it to the testsuite. > Basically convert_regs () calls change_stack () with INSN to emit > some insn after INSN. But some insn has been added after INSN so > that change_stack () will emit some insn at the wrong place. As the > result, the floating point is broken on x86. This is an extremely confusing explanation, primarily because you use "insn"/INSN to refer to three different things. Basically is sounds like you have insn 1 insn 2 It sounds like we thought we wanted to insert after insn 1, but because of other reg-stack actions we really wanted to insert after insn 2. > This patch seems to fix it. Could someone please take a look? Given > the bugs we have seen in egcs 1.0.2, I suggest egcs 1.0.3 be made. I must confess I don't undersatnd reg-stack all that well. Assuming your analysis and explanation are correct, then I think your change is OK, though possibly incomplete. In particular I worry that we need to pass "new" instead of "insn" to the call to emit_pop_insn near the end of convert_regs. I think the call to goto_block_pat in convert_regs is OK. I also worry that there may be cases were we need to insert after insn 1 instead of after insn 2. But I don't know reg-stack well enough to know if that can actually happen. You might ask Bernd Schmidt or Stan Cox to look at the change and comment. I'm going to go ahead and hesitantly install the change, but further comments from folks that understand this code would be greatly appreciated. jeff