------- 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