PPro and egcs

H.J. Lu hjl@lucon.org
Mon Oct 27 16:30:00 GMT 1997


>   > >   > Has anyone tried egcs on PPro? I got an error.
>   > >   > 
>   > >   > # gcc -O -march=i686 -S foo.c -fomit-frame-pointer
>   > >   > foo.c: In function `nfs_readpage_sync':
>   > >   > foo.c:1618: internal error--insn does not satisfy its constraints:
>   > >   > (insn 317 316 139 (parallel[ 
>   > >   >             (set (reg/v:SI 3 %ebx)
>   > >   >                 (if_then_else:SI (ne (cc0)
>   > >   >                         (const_int 0))
>   > >   >                     (reg:SI 0 %eax)
>   > >   >                     (const_int -22)))
>   > >   >             (clobber (reg:SI 0 %eax))
>   > >   >         ] ) 374 {movsicc_1} (nil)
>   > >   >     (expr_list:REG_DEAD (reg:SI 0 %eax)
>   > >   >         (expr_list:REG_UNUSED (reg:SI 0 %eax)
>   > >   >             (nil))))
>   > >   > gcc: Internal compiler error: program cc1 got fatal signal 6
>   > > I don't have a ppro, nor do I know anything about the architecture.
>   > > 
>   > > Can the cmov instruction accept a constant as a source operand?
>   > > 
>   > 
>   > No. How about we do this?
>   > 
>   > If operands 2/3 are immediate operands, we emit
>   > 
>   > 
>   > 	jmp next
>   > 	.align	4
>   > operand2:
>   > 	.4bytes	operand2
>   > operand3:
>   > 	.4bytes	operand3
>   > next:
>   > 	cmovxx	operand2,operand0
>   > 	cmovyy	operand3,operand0
> Possibly, but we'd be better off disallowing constants to begin with if
> that's the code we'd have to generate to support them.
> 
> jeff
> 

I tried it. But it failed to compile _bb.o in libgcc2.a.
It aborted in find_reloads (). It seems that there weren't
enough registers for reload.


-- 
H.J. Lu (hjl@gnu.ai.mit.edu)



More information about the Gcc mailing list