[RFC PATCH, i386]: Pass FP arguments in i387 registers

Richard Guenther richard.guenther@gmail.com
Thu Oct 12 15:37:00 GMT 2006


On 10/12/06, Uros Bizjak <ubizjak@gmail.com> wrote:
> Hello!
>
> This patch implements i387 register passing ABI extension for FP
> function arguments:
> a) unconditionally passes XFmode arguments of local functions in i387 registers
> b) passes DFmode and SFmode arguments of local functions in i387
> registers for -ffast-math
>
> c) for -m387regparm, passes XFmode arguments in i387 registers
> d) for -m387regparm, passes DFmode and SFmode arguments in 387
> registers if -ffast-math is selected
>
> This patch also cares for -msseregparm setting and doesn't step on its toes.

The patch mostly looks ok, though I wonder about the FIXME in regstack and

+  /* For local functions, pass up to X87_REGPARM_MAX floating point
+     arguments in x87 registers.  */
+  if (!TARGET_64BIT && decl
+      && flag_unit_at_a_time && !profile_flag)
+    {
+      struct cgraph_local_info *i = cgraph_local_info (decl);
+      if (i && i->local)
+	return 1;
+    }

shouldn't we disable this if !(ix86_fpmath & FPMATH_387)?  How will the code
decide where to pass SF/DFmode arguments if -mfpmath=387,sse is in effect?

Richard.



More information about the Gcc-patches mailing list