From 4f18aa8f040e9c4d259eaa1c9bd6d583624aaad5 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 23 May 2012 05:19:18 +0000 Subject: [PATCH] small refinement to r157218 to save a tiny amount of table size in the common case. llvm-svn: 157312 --- llvm/lib/VMCore/Function.cpp | 4 +++- llvm/utils/TableGen/IntrinsicEmitter.cpp | 14 ++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/llvm/lib/VMCore/Function.cpp b/llvm/lib/VMCore/Function.cpp index 6339c67..d0479a9 100644 --- a/llvm/lib/VMCore/Function.cpp +++ b/llvm/lib/VMCore/Function.cpp @@ -388,7 +388,9 @@ static Type *DecodeFixedType(unsigned &NextElt, ArrayRef 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: { + case IIT_PTR: + return PointerType::getUnqual(DecodeFixedType(NextElt, Infos, Tys,Context)); + case IIT_ANYPTR: { // [ANYPTR addrspace, subtype] unsigned AddrSpace = Infos[NextElt++]; Type *PtrTy = DecodeFixedType(NextElt, Infos, Tys,Context); return PointerType::get(PtrTy, AddrSpace); diff --git a/llvm/utils/TableGen/IntrinsicEmitter.cpp b/llvm/utils/TableGen/IntrinsicEmitter.cpp index a595b1e..2a22c97 100644 --- a/llvm/utils/TableGen/IntrinsicEmitter.cpp +++ b/llvm/utils/TableGen/IntrinsicEmitter.cpp @@ -338,7 +338,8 @@ enum IIT_Info { IIT_STRUCT4 = 20, IIT_STRUCT5 = 21, IIT_EXTEND_VEC_ARG = 22, - IIT_TRUNC_VEC_ARG = 23 + IIT_TRUNC_VEC_ARG = 23, + IIT_ANYPTR = 24 }; @@ -412,13 +413,17 @@ 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); + if (AddrSpace) { + Sig.push_back(IIT_ANYPTR); + Sig.push_back(AddrSpace); + } else { + Sig.push_back(IIT_PTR); + } return EncodeFixedType(R->getValueAsDef("ElTy"), NextArgNo, Sig); } @@ -491,7 +496,8 @@ void IntrinsicEmitter::EmitGenerator(const std::vector &Ints, OS << " IIT_STRUCT4 = 20,\n"; OS << " IIT_STRUCT5 = 21,\n"; OS << " IIT_EXTEND_VEC_ARG = 22,\n"; - OS << " IIT_TRUNC_VEC_ARG = 23\n"; + OS << " IIT_TRUNC_VEC_ARG = 23,\n"; + OS << " IIT_ANYPTR = 24\n"; OS << "};\n\n"; -- 2.7.4