970917 on mips-sgi-irix6.2, haifa disabled: many problems
Jim Wilson
wilson@cygnus.com
Wed Oct 1 13:56:00 GMT 1997
$ ./cc1 961223-1.i -quiet -dumpbase -O0 -version
error--insn does not satisfy its constraints:
(insn 31 32 4 (set (reg:DF 35 $f3)
(reg:DF 84)) 193 {movdf_internal1} (nil)
(nil))
Doesn't happen with -O.
I think this is an inlining problem, because I can't find an insn like
the one it complains about anywhere in a -drx RTL dump (with or
without -O), and cc1 aborts while generating RTL for `main' not `sub'.
-drx is not particularly useful for debugging bugs of this kind. Try -da,
and then you can see that this insn first appears in the .greg dump file.
The problem is that there is a reference to an invalid pseudo, which isn't
obvious until after reload. However, the problem exists when the RTL was
generated, and the invalid pseudo can also be seen in the .rtl file. It
was supposed to have been a reference to an argument register.
I have installed the following patch to fix this.
Note that function inlining can only happen when -O is specified,
so problems that appear without -O aren't inlining problems.
Wed Oct 1 13:43:53 1997 Jim Wilson <wilson@cygnus.com>
Bring over from FSF.
Tue Aug 5 16:10:45 1997 Jason Merrill <jason@yorick.cygnus.com>
* mips.c (function_arg): Handle passing a struct
containing a double in a DFmode register without the PARALLEL.
Index: config/mips/mips.c
===================================================================
RCS file: /cvs/cvsfiles/egcs/gcc/config/mips/mips.c,v
retrieving revision 1.3
diff -p -r1.3 mips.c
*** mips.c 1997/09/23 04:48:36 1.3
--- mips.c 1997/10/01 20:48:45
*************** function_arg (cum, mode, type, named)
*** 3208,3214 ****
% BITS_PER_WORD == 0))
break;
! if (! field)
ret = gen_rtx (REG, mode, regbase + *arg_words + bias);
else
{
--- 3208,3214 ----
% BITS_PER_WORD == 0))
break;
! if (! field || mode == DFmode)
ret = gen_rtx (REG, mode, regbase + *arg_words + bias);
else
{
More information about the Gcc-bugs
mailing list