mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 00:32:55 +00:00
Added address space qualifier to intrinsic PointerType arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157218 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4b6e6750fe
commit
b428511989
@ -63,11 +63,15 @@ class LLVMType<ValueType vt> {
|
||||
ValueType VT = vt;
|
||||
}
|
||||
|
||||
class LLVMPointerType<LLVMType elty>
|
||||
class LLVMQualPointerType<LLVMType elty, int addrspace>
|
||||
: LLVMType<iPTR>{
|
||||
LLVMType ElTy = elty;
|
||||
int AddrSpace = addrspace;
|
||||
}
|
||||
|
||||
class LLVMPointerType<LLVMType elty>
|
||||
: LLVMQualPointerType<elty, 0>;
|
||||
|
||||
class LLVMAnyPointerType<LLVMType elty>
|
||||
: LLVMType<iPTRAny>{
|
||||
LLVMType ElTy = elty;
|
||||
|
@ -388,8 +388,11 @@ static Type *DecodeFixedType(unsigned &NextElt, ArrayRef<unsigned char> Infos,
|
||||
return VectorType::get(DecodeFixedType(NextElt, Infos, Tys, Context), 16);
|
||||
case IIT_V32:
|
||||
return VectorType::get(DecodeFixedType(NextElt, Infos, Tys, Context), 32);
|
||||
case IIT_PTR:
|
||||
return PointerType::getUnqual(DecodeFixedType(NextElt, Infos, Tys,Context));
|
||||
case IIT_PTR: {
|
||||
unsigned AddrSpace = Infos[NextElt++];
|
||||
Type *PtrTy = DecodeFixedType(NextElt, Infos, Tys,Context);
|
||||
return PointerType::get(PtrTy, AddrSpace);
|
||||
}
|
||||
case IIT_ARG:
|
||||
case IIT_EXTEND_VEC_ARG:
|
||||
case IIT_TRUNC_VEC_ARG: {
|
||||
|
@ -413,6 +413,12 @@ static void EncodeFixedType(Record *R, unsigned &NextArgNo,
|
||||
|
||||
if (VT == MVT::iPTR) {
|
||||
Sig.push_back(IIT_PTR);
|
||||
unsigned AddrSpace = 0;
|
||||
if (R->isSubClassOf("LLVMQualPointerType")) {
|
||||
AddrSpace = R->getValueAsInt("AddrSpace");
|
||||
assert(AddrSpace < 256 && "Address space exceeds 255");
|
||||
}
|
||||
Sig.push_back(AddrSpace);
|
||||
return EncodeFixedType(R->getValueAsDef("ElTy"), NextArgNo, Sig);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user