mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-14 15:28:20 +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:
@@ -63,11 +63,15 @@ class LLVMType<ValueType vt> {
|
|||||||
ValueType VT = vt;
|
ValueType VT = vt;
|
||||||
}
|
}
|
||||||
|
|
||||||
class LLVMPointerType<LLVMType elty>
|
class LLVMQualPointerType<LLVMType elty, int addrspace>
|
||||||
: LLVMType<iPTR>{
|
: LLVMType<iPTR>{
|
||||||
LLVMType ElTy = elty;
|
LLVMType ElTy = elty;
|
||||||
|
int AddrSpace = addrspace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class LLVMPointerType<LLVMType elty>
|
||||||
|
: LLVMQualPointerType<elty, 0>;
|
||||||
|
|
||||||
class LLVMAnyPointerType<LLVMType elty>
|
class LLVMAnyPointerType<LLVMType elty>
|
||||||
: LLVMType<iPTRAny>{
|
: LLVMType<iPTRAny>{
|
||||||
LLVMType ElTy = elty;
|
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);
|
return VectorType::get(DecodeFixedType(NextElt, Infos, Tys, Context), 16);
|
||||||
case IIT_V32:
|
case IIT_V32:
|
||||||
return VectorType::get(DecodeFixedType(NextElt, Infos, Tys, Context), 32);
|
return VectorType::get(DecodeFixedType(NextElt, Infos, Tys, Context), 32);
|
||||||
case IIT_PTR:
|
case IIT_PTR: {
|
||||||
return PointerType::getUnqual(DecodeFixedType(NextElt, Infos, Tys,Context));
|
unsigned AddrSpace = Infos[NextElt++];
|
||||||
|
Type *PtrTy = DecodeFixedType(NextElt, Infos, Tys,Context);
|
||||||
|
return PointerType::get(PtrTy, AddrSpace);
|
||||||
|
}
|
||||||
case IIT_ARG:
|
case IIT_ARG:
|
||||||
case IIT_EXTEND_VEC_ARG:
|
case IIT_EXTEND_VEC_ARG:
|
||||||
case IIT_TRUNC_VEC_ARG: {
|
case IIT_TRUNC_VEC_ARG: {
|
||||||
|
@@ -413,6 +413,12 @@ static void EncodeFixedType(Record *R, unsigned &NextArgNo,
|
|||||||
|
|
||||||
if (VT == MVT::iPTR) {
|
if (VT == MVT::iPTR) {
|
||||||
Sig.push_back(IIT_PTR);
|
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);
|
return EncodeFixedType(R->getValueAsDef("ElTy"), NextArgNo, Sig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user