This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [Patch]: Fix pb in libcall_dead_p


On Wed, Jun 28, 2000 at 12:45:33AM +0200, Stephane Carrez wrote:
> (insn 439 438 440 (parallel[ 
>             (set (reg:SI 193)
>                 (reg:SI 0 x))
>             (clobber (scratch:HI))
>         ] ) 13 {movsi} (nil)
>     (insn_list:REG_RETVAL 434 (expr_list:REG_EQUAL (expr_list (symbol_ref:HI ("__divsi3"))
>                 (expr_list (reg:SI 189)
>                     (expr_list (const_int 1 [0x1])
>                         (nil))))
>             (nil))))
> 
> (insn 440 439 442 (parallel[ 
>             (set (reg:SI 194)
>                 (reg:SI 0 x))
>             (clobber (scratch:HI))
>         ] ) 13 {movsi} (nil)
>     (insn_list:REG_RETVAL 434 (expr_list:REG_EQUAL (div:SI (const_int 1 [0x1])
>                 (const_int 0 [0x0]))
>             (nil))))

First off, this is illegal.  You cannot have two REG_RETVAL notes for
one libcall.

Second, I'm extremely surprised you can get away with a movsi insn that
incorporates a clobber.  I would have thought the compiler would have
fallen over elsewhere -- particularly during reload.  Why are you doing
that?

> Can you integrate this fix?

Not as-is.  If it is found to be necessary, libcall_dead_p should use
single_set instead.


r~

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]