This is the mail archive of the gcc@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]
Other format: [Raw text]

ix86_value_regno and callers


[1st try appearantly did not get through - sorry if you get this twice]

Hi!

I'm facing a problem, that with code like

double sin(double);
double __attribute__((sseregparm)) (*mysin)(double) = sin;
double bar(double x)
{
  return mysin(x);
}

we fail to recognize that mysin returns in %mm0 because ix86_value_regno
is only ever called with NULL func argument.  We correctly recognize that
we need to pass x in %mm0, though.  We even sibcall mysin incorrectly
(probably because of the above bug).

I'm lost in the mysteries of expansion of the indirect call, also
ix86_value_regno gets called all over the place, so the "interesting"
call-site is hard to find.

Any ideas?

Thanks,
Richard.



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