https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82012

--- Comment #7 from Andreas Krebbel <krebbel at gcc dot gnu.org> ---
(In reply to rguent...@suse.de from comment #6)
...
> IPA computes this for us, but only somewhat as it looks for FP expressions
> only (hopefully taking all inline asm as containing FP expressions) but
> not disallowing FP value loads/stores.  See i386.c:ix86_can_inline_p:
> 
>   else if (caller_opts->x_ix86_fpmath != callee_opts->x_ix86_fpmath
>            /* If the calle doesn't use FP expressions differences in
>               ix86_fpmath can be ignored.  We are called from FEs
>               for multi-versioning call optimization, so beware of
>               ipa_fn_summaries not available.  */
>            && (! ipa_fn_summaries
>                || ipa_fn_summaries->get
>                (cgraph_node::get (callee))->fp_expressions))
> 
> this means the RA would have to load/store to non-FPR registers
> which is what soft-float should guarantee.  I think even FP expressions
> should work, dispatching to soft-float routines?  So IPA should
> compute a inline_asm flag (but even that would need to name FPRs
> in the constraints explicitely to be a problem I guess).

-msoft-float is supposed to prevent any use of FPRs. With -mhard-float FPRs
might be used as spill slots also for integer expressions and we also emit
FPR<->GPR loads in the function prologue and epilogue in order to avoid
allocating stack if not necessary.  These case would probably not be catched by
the IPA fp accounting - right?!

...
> > So for S/390 I currently would tend to always allow inlining regardless of 
> > the
> > target attributes hoping that the majority of problems would be catched 
> > (with
> > obscure error messages mostly).
> 
> ICEs you mean, or assembler errors.
> 
> On x86 we avoid the inlining to not run into obscure ICEs (but got hit
> with inline failure errors with -flto due to the "bugs").

Ok, I'll try to do the same for s390. Thanks!

Reply via email to