Updating an operand in RTL for a builtin function
Mohamed Shafi
shafitvm@gmail.com
Fri May 11 08:17:00 GMT 2007
On 5/4/07, Andrew Haley <aph-gcc@littlepinkcloud.com> wrote:
> Mohamed Shafi writes:
>
> > I am trying to implement a builtin function __macf for a private target.
> > I have added the required target hooks for this.
> > Say for the following code
> >
> > int main()
> > {
> > int operand1 = 2;
> > int operand2 = 3;
> > int operand3 = 4;
> > int result;
> >
> > /* operand3 = operand3 + (operand1 * operand2)*/
> >
> > result = __macf(operand1, operand2, operand3);
> >
> > }
> >
> > Requirement : I need the value of operand3 and result to be same
> > after calling the builtin.
> > But this is not happening.
>
> What do you mean, exactly? C only has call by value, and gcc's
> builtins can only return one value. Builtins don't change their
> arguments. If you want to update one of the arguments you'll have to
> pass a pointer to the builtin.
>
After the builtin i want to have the following operations also to carried out
operand3 = result ;
Since builtins don't change their arguments and since i don't want to
pass the pointers, i will have to write some kind of wrapper function
to do that. Where should i be doing this? in target_expand_builtin
function ? or should it be done in the backend patten of macf builtin
?
Thanks in advance.
Regards,
Shafi
More information about the Gcc
mailing list