[llvm-dev] RFC: alloca -- specify address space for allocation

Hal Finkel via llvm-dev
Thu, 27 Aug 2015 02:43:24 -0000

----- Original Message -----
> From: "Swaroop Sridhar via llvm-dev" <llvm-dev at
lists.llvm.org>
> To: "llvm-dev" <llvm-dev at lists.llvm.org>, "Philip
Reames" <listmail at philipreames.com>, "Sanjoy Das"
> <sanjoy at playingwithpointers.com>
> Sent: Wednesday, August 26, 2015 8:46:08 PM
> Subject: [llvm-dev] RFC: alloca -- specify address space for allocation
>
> Currently, the alloca instruction always allocates in the generic
> address space (0).
>
> This proposal is to extend the semantics of alloca instruction to
> allow allocation in any specified address space.
>
>
>
> Proposed Syntax
>
> <result> = alloca [inalloca] <type> [, <ty>
<NumElements>] [, align
> <alignment>] [, addrspace < num >] ; yields type
> addrspace(num)*:result
>
>
>
> Motivation
>
> Managed language clients typically use address space 1 to represent
> GC-pointers.
>
> Some managed clients (CLR, in particular) allow construction of GC
> pointers to stack locations.
>
> For example, MSIL instruction ldloca (ECMA 335, p 370) creates a GC
> pointer to a stack local.
>
>
>
> Creating an addrespace(1)* pointer to a stack location currently
> involves two steps: the alloca , and an addrspacecast .
>
> Managed code transformations (ex: RewriteStatepointsForGC ) do not
> handle arbitrary address space casting.
>
> So, it is desirable to obtain the addrespace(1)* pointer by
> construction.
>

Is the mental model here that a function using this feature actually has
multiple stacks, in different address spaces, and this allows creating local
stack allocations in those non-addrspace-0 stacks?

Would there be any defined interaction with @llvm.stacksave/@llvm.stackrestore?

Normally we assume that distinct allocas can't alias, but what about allocas
with different address spaces? Can they alias?

 -Hal

>
>
> Thanks,
>
> Swaroop.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>

--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory