mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +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;
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user