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

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Wed Aug 26 19:43:24 PDT 2015


----- 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


More information about the llvm-dev mailing list