Re: about named address space

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 6, 2011 at 11:34 AM, Rony Paul <ronypaul77@xxxxxxxxx> wrote:
> On Fri, May 27, 2011 at 4:51 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
>> Rony Paul <ronypaul77@xxxxxxxxx> writes:
>>
>>> suppose I have the following piece of code in my program.
>>>
>>>   extern  int __ea x;
>>>   int y;
>>>   y = x;
>>>
>>> that means I am copying data from one address space to another.
>>> in that case will the method spu_addr_space_convert (rtx op, tree
>>> from_type, tree to_type);  be called by the compiler?
>>> in the spu.c file the defination of " spu_addr_space_convert " is
>>> given. but when and under which condition they will be called ?
>>
>> I'm pretty sure it won't be called.  That function converts a pointer to
>> one address space into a pointer to a different address space.  No such
>> conversion is happening here.
>>
>>> where
>>> is it defined?
>>
>> The function spu_addr_space_convert is the SPU-specific implementation
>> of the target hook TARGET_ADDR_SPACE_CONVERT which is documented in the
>> section on named address spaces.
>>
>> Ian
>>
>
>
> Then if I want to prevent these type of copying data from one address
> space to another (ie. I dont want to allow these type of copy
> operation in my application). where should I write code in GCC
> compiler?
>
> Actually I can define different address space, but still I cant store
> there data in different byte order. would you give me any idea about
> how to store data in different byte order in different address space?
>
> -Rony
>  please suggest me,
>

in c-type.c file there are some code like :
===========================================================
 asl = TYPE_ADDR_SPACE (ttl);
 asr = TYPE_ADDR_SPACE (ttr);
      if (!null_pointer_constant_p (rhs)
	  && asr != asl && !targetm.addr_space.subset_p (asr, asl))
	{
	  switch (errtype)
	    {
	    case ic_argpass:
	      error_at (location, "passing argument %d of %qE from pointer to "
			"non-enclosed address space", parmnum, rname);
	      break;
	    case ic_assign:
	      error_at (location, "assignment from pointer to "
			"non-enclosed address space");
	      break;
	    case ic_init:
	      error_at (location, "initialization from pointer to "
			"non-enclosed address space");
	      break;
	    case ic_return:
	      error_at (location, "return from pointer to "
			"non-enclosed address space");
	      break;
	    default:
	      gcc_unreachable ();
	    }
	  return error_mark_node;
	}
-==================================================================

and in my program if I write code like,
 __ea int * p = malloc_ea(sizeof(int));
   int * v;
   p=v;

this returns error message  "assignment from pointer to non-enclosed
address space"
so, this checking for pointer of the different address space is done
for pointer. now if I want to add this check for data variable also,
what should I do. I cant understand, would you please help me?

ie. I want to write code like

extern  int __ea x;
int y;

and it should give error message like
"assignment from variable to non-enclosed address space"


Thanks



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux