[cfe-dev] "generic" address space
Mon P Wang
wangmp at apple.com
Tue Jul 15 17:38:47 PDT 2008
Hi Eli,
On an architecture that support address spaces, any builtins that
touches memory would probably need this support. Today, I think it's
mostly the sync functions. For a specific architecture, one is likely
to add architecture specific built-ins to support some other
operations that touches memory and I would like to use the same
mechanism (e.g., specialized load/store instructions) to do the
check. I rather not specifying that the argument list is completely
variable because I think that means that for any such a built-in, we
would need to teach clang about that operation and signature. I would
prefer to teach clang that some intrinsics can take pointer to any
address space but to a specific domain type and get that information
from the signature of the intrinsics. I would like to keep clang as
clean as possible. The only other possibility that I have though of
other than loosing the parameter-argument constraint or the weird type
is to generate a different built-in signature for the pointer type
base on the address space of the use. I didn't like that choice as it
seemed dirty without much benefit.
-- Mon Ping
On Jul 15, 2008, at 4:16 PM, Eli Friedman wrote:
> On Tue, Jul 15, 2008 at 8:50 AM, Mon P Wang <wangmp at apple.com> wrote:
>> Hi,
>> I took a look at what __buildin_shufflevector does. In that case, it
>> enforces more rules than the type system allow after checking the
>> call. In
>> that vein, what I could do instead of using this weird type is
>> in ActOnCallExpr,when checking the arguments of an intrinsic call,
>> instead
>> of calling
>> CheckSingleAssignmentConstraints
>> I could call my own version, e.g.,
>> CheckBuiltinAssignmentConstraints that
>> will allow mismatches between address spaces to go through. How
>> does that
>> sound?
>
> What we do for __builtin_shufflevector does is claim the argument list
> is completely variable, then check the actual arguments from
> CheckFunctionCall. What I was thinking is that we could do the same
> thing for the builtins which can take alternate address spaces, i.e.
> __sync_*. (Are there any other builtins for which you're planning
> address space overloading?)
>
> That said, your approach could also work, although it doesn't seem as
> clean to me.
>
> -Eli
More information about the cfe-dev
mailing list