------- Comment #8 from ebotcazou at gcc dot gnu dot org  2009-07-06 12:49 
-------
 > Index: config/i386/i386.md
> ===================================================================
> --- config/i386/i386.md (revision 149152)
> +++ config/i386/i386.md (working copy)
> @@ -15536,7 +15536,7 @@
>    [(set_attr "type" "call")])
> 
>  (define_insn "*sibcall_1"
> -  [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,c,d,a"))
> +  [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,c,d,a,b"))
>          (match_operand 1 "" ""))]
>    "SIBLING_CALL_P (insn) && !TARGET_64BIT"
>  {
> @@ -22183,7 +22183,7 @@
> 
>  (define_insn "*sibcall_value_1"
>    [(set (match_operand 0 "" "")
> -       (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,c,d,a"))
> +       (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,c,d,a,b"))
>               (match_operand:SI 2 "" "")))]
>    "SIBLING_CALL_P (insn) && !TARGET_64BIT"
>  {

This cannot be correct in the general case as %ebx is call-saved, you cannot
clobber it through a function call.  A solution could be to disparage the 'c'
alternative, but a x86 maintainer will know better.


-- 

ebotcazou at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ebotcazou at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38900

Reply via email to