On Thu, Dec 8, 2011 at 1:26 PM, Martin Jambor <mjam...@suse.cz> wrote:
> Hi,
>
> On Thu, Dec 08, 2011 at 10:38:24AM +0100, Feng LI wrote:
>> Hi,
>>
>> I'm building a function with
>> fread = build_decl (LOCATION, FUNCTION_DECL, get_identifier (name), type);
>>
>> and then use it in gimple with
>> gimple gfread = gimple_build_call (fread, 1, offset);
>> gimple_call_set_lhs (fread, lhs);
>>
>> But I need a cast here, since the lhs has a different type than the return 
>> value
>> of the function fread. So I suppose that I need a cast here to cast from the
>> return type of fread -> type_of (lhs). But I've no idea how could I
>> achieve this?
>> Any suggestions?
>
> You need to store the result into a temporary and then add a
> VIEW_CONVERT_EXPR gimple assignment statement after the statement to
> convert to the necessary type.  Grep *.c files for
> 'build.*VIEW_CONVERT_EXPR' and you should be able to find some example
> to follow in your own code.

A traditional cast is a NOP_EXPR.  If you really need a
VIEW_CONVERT_EXPR then this is more like a *(T' *)&t
operation.

Richard.

> Martin

Reply via email to