Remove unused SOAArrayType class and Type::GetSOAType() methods.
This commit is contained in:
23
decl.cpp
23
decl.cpp
@@ -505,29 +505,6 @@ Declarator::GetType(const Type *base, DeclSpecs *ds) const {
|
|||||||
FATAL("Unexpected decl kind");
|
FATAL("Unexpected decl kind");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
// Make sure we actually have an array of structs ..
|
|
||||||
const StructType *childStructType =
|
|
||||||
dynamic_cast<const StructType *>(childType);
|
|
||||||
if (childStructType == NULL) {
|
|
||||||
Error(pos, "Illegal to provide soa<%d> qualifier with non-struct "
|
|
||||||
"type \"%s\".", soaWidth, childType->GetString().c_str());
|
|
||||||
return new ArrayType(childType, arraySize == -1 ? 0 : arraySize);
|
|
||||||
}
|
|
||||||
else if ((soaWidth & (soaWidth - 1)) != 0) {
|
|
||||||
Error(pos, "soa<%d> width illegal. Value must be power of two.",
|
|
||||||
soaWidth);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
else if (arraySize != -1 && (arraySize % soaWidth) != 0) {
|
|
||||||
Error(pos, "soa<%d> width must evenly divide array size %d.",
|
|
||||||
soaWidth, arraySize);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return new SOAArrayType(childStructType, arraySize == -1 ? 0 : arraySize,
|
|
||||||
soaWidth);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
216
type.cpp
216
type.cpp
@@ -410,13 +410,6 @@ AtomicType::ResolveUnboundVariability(Variability v) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
|
||||||
AtomicType::GetSOAType(int width) const {
|
|
||||||
Assert(width > 0);
|
|
||||||
return new ArrayType(this, width);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
std::string
|
std::string
|
||||||
AtomicType::GetString() const {
|
AtomicType::GetString() const {
|
||||||
std::string ret;
|
std::string ret;
|
||||||
@@ -724,13 +717,6 @@ EnumType::GetAsUnboundVariabilityType() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
|
||||||
EnumType::GetSOAType(int width) const {
|
|
||||||
Assert(width > 0);
|
|
||||||
return new ArrayType(this, width);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const EnumType *
|
const EnumType *
|
||||||
EnumType::GetAsConstType() const {
|
EnumType::GetAsConstType() const {
|
||||||
if (isConst)
|
if (isConst)
|
||||||
@@ -991,13 +977,6 @@ PointerType::ResolveUnboundVariability(Variability v) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
|
||||||
PointerType::GetSOAType(int width) const {
|
|
||||||
FATAL("Unimplemented.");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const PointerType *
|
const PointerType *
|
||||||
PointerType::GetAsConstType() const {
|
PointerType::GetAsConstType() const {
|
||||||
if (isConst == true)
|
if (isConst == true)
|
||||||
@@ -1283,16 +1262,6 @@ ArrayType::GetAsUnsignedType() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
|
||||||
ArrayType::GetSOAType(int width) const {
|
|
||||||
if (child == NULL) {
|
|
||||||
Assert(m->errorCount > 0);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return new ArrayType(child->GetSOAType(width), numElements);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const ArrayType *
|
const ArrayType *
|
||||||
ArrayType::GetAsConstType() const {
|
ArrayType::GetAsConstType() const {
|
||||||
if (child == NULL) {
|
if (child == NULL) {
|
||||||
@@ -1476,153 +1445,6 @@ ArrayType::SizeUnsizedArrays(const Type *type, Expr *initExpr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
|
||||||
// SOAArrayType
|
|
||||||
|
|
||||||
SOAArrayType::SOAArrayType(const StructType *eltType, int nElem, int sw)
|
|
||||||
: ArrayType(eltType, nElem), soaWidth(sw) {
|
|
||||||
Assert(soaWidth > 0);
|
|
||||||
if (numElements > 0)
|
|
||||||
Assert((numElements % soaWidth) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// FIXME: do we need to implement GetBaseType() here to return child->SOAType()?
|
|
||||||
|
|
||||||
const SOAArrayType *
|
|
||||||
SOAArrayType::GetAsVaryingType() const {
|
|
||||||
return new SOAArrayType(dynamic_cast<const StructType *>(child->GetAsVaryingType()),
|
|
||||||
numElements, soaWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const SOAArrayType *
|
|
||||||
SOAArrayType::GetAsUniformType() const {
|
|
||||||
return new SOAArrayType(dynamic_cast<const StructType *>(child->GetAsUniformType()),
|
|
||||||
numElements, soaWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const SOAArrayType *
|
|
||||||
SOAArrayType::GetAsUnboundVariabilityType() const {
|
|
||||||
return new SOAArrayType(dynamic_cast<const StructType *>(child->GetAsUnboundVariabilityType()),
|
|
||||||
numElements, soaWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
const SOAArrayType *
|
|
||||||
SOAArrayType::ResolveUnboundVariability(Variability v) const {
|
|
||||||
const StructType *sc = dynamic_cast<const StructType *>(child->ResolveUnboundVariability(v));
|
|
||||||
Assert(sc != NULL); // ???
|
|
||||||
return new SOAArrayType(sc, numElements, soaWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
|
||||||
SOAArrayType::GetSOAType(int width) const {
|
|
||||||
return new SOAArrayType(dynamic_cast<const StructType *>(child->GetSOAType(width)),
|
|
||||||
numElements, soaWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const SOAArrayType *
|
|
||||||
SOAArrayType::GetAsConstType() const {
|
|
||||||
return new SOAArrayType(dynamic_cast<const StructType *>(child->GetAsConstType()),
|
|
||||||
numElements, soaWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const SOAArrayType *
|
|
||||||
SOAArrayType::GetAsNonConstType() const {
|
|
||||||
return new SOAArrayType(dynamic_cast<const StructType *>(child->GetAsNonConstType()),
|
|
||||||
numElements, soaWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
std::string
|
|
||||||
SOAArrayType::GetString() const {
|
|
||||||
std::string s;
|
|
||||||
|
|
||||||
char buf[32];
|
|
||||||
sprintf(buf, "soa<%d> ", soaWidth);
|
|
||||||
s += buf;
|
|
||||||
s += GetBaseType()->GetString();
|
|
||||||
|
|
||||||
const ArrayType *at = this;
|
|
||||||
while (at) {
|
|
||||||
char buf[16];
|
|
||||||
if (numElements > 0)
|
|
||||||
sprintf(buf, "%d", at->numElements);
|
|
||||||
else
|
|
||||||
buf[0] = '\0';
|
|
||||||
s += std::string("[") + std::string(buf) + std::string("]");
|
|
||||||
at = dynamic_cast<const ArrayType *>(at->child);
|
|
||||||
}
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
std::string
|
|
||||||
SOAArrayType::Mangle() const {
|
|
||||||
const Type *t = soaType();
|
|
||||||
return t->Mangle();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
std::string
|
|
||||||
SOAArrayType::GetCDeclaration(const std::string &name) const {
|
|
||||||
const Type *t = soaType();
|
|
||||||
return t->GetCDeclaration(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
SOAArrayType::TotalElementCount() const {
|
|
||||||
int sz = numElements / soaWidth;
|
|
||||||
const ArrayType *ct = dynamic_cast<const ArrayType *>(child);
|
|
||||||
if (ct)
|
|
||||||
return sz * ct->TotalElementCount();
|
|
||||||
else
|
|
||||||
return sz;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
LLVM_TYPE_CONST llvm::ArrayType *
|
|
||||||
SOAArrayType::LLVMType(llvm::LLVMContext *ctx) const {
|
|
||||||
if (!child)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
const ArrayType *a = soaType();
|
|
||||||
if (!a)
|
|
||||||
return NULL;
|
|
||||||
return a->LLVMType(ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
llvm::DIType
|
|
||||||
SOAArrayType::GetDIType(llvm::DIDescriptor scope) const {
|
|
||||||
if (!child)
|
|
||||||
return llvm::DIType();
|
|
||||||
|
|
||||||
const Type *t = soaType();
|
|
||||||
return t->GetDIType(scope);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SOAArrayType *
|
|
||||||
SOAArrayType::GetSizedArray(int size) const {
|
|
||||||
if ((size % soaWidth) != 0)
|
|
||||||
return NULL;
|
|
||||||
return new SOAArrayType(dynamic_cast<const StructType *>(child), size, soaWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const ArrayType *
|
|
||||||
SOAArrayType::soaType() const {
|
|
||||||
const Type *childSOA = child->GetSOAType(soaWidth);
|
|
||||||
return new ArrayType(childSOA, numElements / soaWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// VectorType
|
// VectorType
|
||||||
|
|
||||||
@@ -1699,13 +1521,6 @@ VectorType::ResolveUnboundVariability(Variability v) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
|
||||||
VectorType::GetSOAType(int width) const {
|
|
||||||
// FIXME: is this right??
|
|
||||||
return new ArrayType(this, width);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const VectorType *
|
const VectorType *
|
||||||
VectorType::GetAsConstType() const {
|
VectorType::GetAsConstType() const {
|
||||||
return new VectorType(base->GetAsConstType(), numElements);
|
return new VectorType(base->GetAsConstType(), numElements);
|
||||||
@@ -1920,20 +1735,6 @@ StructType::ResolveUnboundVariability(Variability v) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
|
||||||
StructType::GetSOAType(int width) const {
|
|
||||||
std::vector<const Type *> et;
|
|
||||||
// The SOA version of a structure is just a structure that holds SOAed
|
|
||||||
// versions of its elements
|
|
||||||
for (int i = 0; i < GetElementCount(); ++i) {
|
|
||||||
const Type *t = GetElementType(i);
|
|
||||||
et.push_back(t->GetSOAType(width));
|
|
||||||
}
|
|
||||||
return new StructType(name, et, elementNames, elementPositions,
|
|
||||||
isConst, variability, pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const StructType *
|
const StructType *
|
||||||
StructType::GetAsConstType() const {
|
StructType::GetAsConstType() const {
|
||||||
if (IsConstType())
|
if (IsConstType())
|
||||||
@@ -2248,16 +2049,6 @@ ReferenceType::ResolveUnboundVariability(Variability v) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
|
||||||
ReferenceType::GetSOAType(int width) const {
|
|
||||||
if (targetType == NULL) {
|
|
||||||
Assert(m->errorCount > 0);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return new ReferenceType(targetType->GetSOAType(width));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const ReferenceType *
|
const ReferenceType *
|
||||||
ReferenceType::GetAsConstType() const {
|
ReferenceType::GetAsConstType() const {
|
||||||
if (targetType == NULL) {
|
if (targetType == NULL) {
|
||||||
@@ -2483,13 +2274,6 @@ FunctionType::ResolveUnboundVariability(Variability v) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
|
||||||
FunctionType::GetSOAType(int width) const {
|
|
||||||
FATAL("FunctionType::GetSOAType shouldn't be called");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const Type *
|
const Type *
|
||||||
FunctionType::GetAsConstType() const {
|
FunctionType::GetAsConstType() const {
|
||||||
FATAL("FunctionType::GetAsConstType shouldn't be called");
|
FATAL("FunctionType::GetAsConstType shouldn't be called");
|
||||||
|
|||||||
79
type.h
79
type.h
@@ -129,10 +129,6 @@ public:
|
|||||||
For all other types, just returns its own type. */
|
For all other types, just returns its own type. */
|
||||||
virtual const Type *GetReferenceTarget() const;
|
virtual const Type *GetReferenceTarget() const;
|
||||||
|
|
||||||
/** Return a new type representing the current type laid out in
|
|
||||||
width-wide SOA (structure of arrays) format. */
|
|
||||||
virtual const Type *GetSOAType(int width) const = 0;
|
|
||||||
|
|
||||||
/** Get a const version of this type. If it's already const, then the old
|
/** Get a const version of this type. If it's already const, then the old
|
||||||
Type pointer is returned. */
|
Type pointer is returned. */
|
||||||
virtual const Type *GetAsConstType() const = 0;
|
virtual const Type *GetAsConstType() const = 0;
|
||||||
@@ -225,7 +221,6 @@ public:
|
|||||||
const AtomicType *GetAsUnboundVariabilityType() const;
|
const AtomicType *GetAsUnboundVariabilityType() const;
|
||||||
const AtomicType *ResolveUnboundVariability(Variability v) const;
|
const AtomicType *ResolveUnboundVariability(Variability v) const;
|
||||||
const AtomicType *GetAsUnsignedType() const;
|
const AtomicType *GetAsUnsignedType() const;
|
||||||
const Type *GetSOAType(int width) const;
|
|
||||||
const AtomicType *GetAsConstType() const;
|
const AtomicType *GetAsConstType() const;
|
||||||
const AtomicType *GetAsNonConstType() const;
|
const AtomicType *GetAsNonConstType() const;
|
||||||
|
|
||||||
@@ -315,7 +310,6 @@ public:
|
|||||||
const EnumType *GetAsUniformType() const;
|
const EnumType *GetAsUniformType() const;
|
||||||
const EnumType *GetAsUnboundVariabilityType() const;
|
const EnumType *GetAsUnboundVariabilityType() const;
|
||||||
const EnumType *ResolveUnboundVariability(Variability v) const;
|
const EnumType *ResolveUnboundVariability(Variability v) const;
|
||||||
const Type *GetSOAType(int width) const;
|
|
||||||
const EnumType *GetAsConstType() const;
|
const EnumType *GetAsConstType() const;
|
||||||
const EnumType *GetAsNonConstType() const;
|
const EnumType *GetAsNonConstType() const;
|
||||||
|
|
||||||
@@ -370,7 +364,6 @@ public:
|
|||||||
const PointerType *GetAsUniformType() const;
|
const PointerType *GetAsUniformType() const;
|
||||||
const PointerType *GetAsUnboundVariabilityType() const;
|
const PointerType *GetAsUnboundVariabilityType() const;
|
||||||
const PointerType *ResolveUnboundVariability(Variability v) const;
|
const PointerType *ResolveUnboundVariability(Variability v) const;
|
||||||
const Type *GetSOAType(int width) const;
|
|
||||||
const PointerType *GetAsConstType() const;
|
const PointerType *GetAsConstType() const;
|
||||||
const PointerType *GetAsNonConstType() const;
|
const PointerType *GetAsNonConstType() const;
|
||||||
|
|
||||||
@@ -466,7 +459,6 @@ public:
|
|||||||
const ArrayType *ResolveUnboundVariability(Variability v) const;
|
const ArrayType *ResolveUnboundVariability(Variability v) const;
|
||||||
|
|
||||||
const ArrayType *GetAsUnsignedType() const;
|
const ArrayType *GetAsUnsignedType() const;
|
||||||
const Type *GetSOAType(int width) const;
|
|
||||||
const ArrayType *GetAsConstType() const;
|
const ArrayType *GetAsConstType() const;
|
||||||
const ArrayType *GetAsNonConstType() const;
|
const ArrayType *GetAsNonConstType() const;
|
||||||
|
|
||||||
@@ -497,7 +489,6 @@ public:
|
|||||||
static const Type *SizeUnsizedArrays(const Type *type, Expr *initExpr);
|
static const Type *SizeUnsizedArrays(const Type *type, Expr *initExpr);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class SOAArrayType;
|
|
||||||
/** Type of the elements of the array. */
|
/** Type of the elements of the array. */
|
||||||
const Type * const child;
|
const Type * const child;
|
||||||
/** Number of elements in the array. */
|
/** Number of elements in the array. */
|
||||||
@@ -505,72 +496,6 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/** @brief "Structure of arrays" array type.
|
|
||||||
|
|
||||||
This type represents an array with elements of a structure type,
|
|
||||||
"SOA-ized" to some width w. This corresponds to replicating the struct
|
|
||||||
element types w times and then having an array of size/w of these
|
|
||||||
widened structs. This memory layout often makes it possible to access
|
|
||||||
data with regular vector loads, rather than gathers that are needed
|
|
||||||
with "AOS" (array of structures) layout.
|
|
||||||
|
|
||||||
@todo Native support for SOA stuff is still a work in progres...
|
|
||||||
*/
|
|
||||||
class SOAArrayType : public ArrayType {
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
SOAType constructor.
|
|
||||||
|
|
||||||
@param elementType Type of the array elements. Must be a StructType.
|
|
||||||
@param numElements Total number of elements in the array. This
|
|
||||||
parameter may be zero, in which case this is an
|
|
||||||
"unsized" array type. (Arrays of specific size
|
|
||||||
can be converted to unsized arrays to be passed
|
|
||||||
to functions that take array parameters, for
|
|
||||||
example).
|
|
||||||
@param soaWidth If non-zero, this gives the SOA width to use in
|
|
||||||
laying out the array data in memory. (This value
|
|
||||||
must be a power of two). For example, if the
|
|
||||||
array's element type is:
|
|
||||||
<tt>struct { uniform float x, y, z; }</tt>,
|
|
||||||
the SOA width is four, and the number of elements
|
|
||||||
is 12, then the array will be laid out in memory
|
|
||||||
as xxxxyyyyzzzzxxxxyyyyzzzzxxxxyyyyzzzz.
|
|
||||||
*/
|
|
||||||
SOAArrayType(const StructType *elementType, int numElements,
|
|
||||||
int soaWidth);
|
|
||||||
|
|
||||||
const SOAArrayType *GetAsVaryingType() const;
|
|
||||||
const SOAArrayType *GetAsUniformType() const;
|
|
||||||
const SOAArrayType *GetAsUnboundVariabilityType() const;
|
|
||||||
const SOAArrayType *ResolveUnboundVariability(Variability v) const;
|
|
||||||
|
|
||||||
const Type *GetSOAType(int width) const;
|
|
||||||
const SOAArrayType *GetAsConstType() const;
|
|
||||||
const SOAArrayType *GetAsNonConstType() const;
|
|
||||||
|
|
||||||
std::string GetString() const;
|
|
||||||
std::string Mangle() const;
|
|
||||||
std::string GetCDeclaration(const std::string &name) const;
|
|
||||||
|
|
||||||
int TotalElementCount() const;
|
|
||||||
|
|
||||||
LLVM_TYPE_CONST llvm::ArrayType *LLVMType(llvm::LLVMContext *ctx) const;
|
|
||||||
llvm::DIType GetDIType(llvm::DIDescriptor scope) const;
|
|
||||||
|
|
||||||
SOAArrayType *GetSizedArray(int size) const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
/** This member variable records the rate at which the structure
|
|
||||||
elements are replicated. */
|
|
||||||
const int soaWidth;
|
|
||||||
|
|
||||||
/** Returns a regular ArrayType with the struct type's elements widened
|
|
||||||
out and with correspondingly fewer array elements. */
|
|
||||||
const ArrayType *soaType() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/** @brief A (short) vector of atomic types.
|
/** @brief A (short) vector of atomic types.
|
||||||
|
|
||||||
VectorType is used to represent a fixed-size array of elements of an
|
VectorType is used to represent a fixed-size array of elements of an
|
||||||
@@ -600,7 +525,6 @@ public:
|
|||||||
const VectorType *GetAsUnboundVariabilityType() const;
|
const VectorType *GetAsUnboundVariabilityType() const;
|
||||||
const VectorType *ResolveUnboundVariability(Variability v) const;
|
const VectorType *ResolveUnboundVariability(Variability v) const;
|
||||||
|
|
||||||
const Type *GetSOAType(int width) const;
|
|
||||||
const VectorType *GetAsConstType() const;
|
const VectorType *GetAsConstType() const;
|
||||||
const VectorType *GetAsNonConstType() const;
|
const VectorType *GetAsNonConstType() const;
|
||||||
|
|
||||||
@@ -650,7 +574,6 @@ public:
|
|||||||
const StructType *GetAsUnboundVariabilityType() const;
|
const StructType *GetAsUnboundVariabilityType() const;
|
||||||
const StructType *ResolveUnboundVariability(Variability v) const;
|
const StructType *ResolveUnboundVariability(Variability v) const;
|
||||||
|
|
||||||
const Type *GetSOAType(int width) const;
|
|
||||||
const StructType *GetAsConstType() const;
|
const StructType *GetAsConstType() const;
|
||||||
const StructType *GetAsNonConstType() const;
|
const StructType *GetAsNonConstType() const;
|
||||||
|
|
||||||
@@ -728,7 +651,6 @@ public:
|
|||||||
const ReferenceType *GetAsUnboundVariabilityType() const;
|
const ReferenceType *GetAsUnboundVariabilityType() const;
|
||||||
const ReferenceType *ResolveUnboundVariability(Variability v) const;
|
const ReferenceType *ResolveUnboundVariability(Variability v) const;
|
||||||
|
|
||||||
const Type *GetSOAType(int width) const;
|
|
||||||
const ReferenceType *GetAsConstType() const;
|
const ReferenceType *GetAsConstType() const;
|
||||||
const ReferenceType *GetAsNonConstType() const;
|
const ReferenceType *GetAsNonConstType() const;
|
||||||
|
|
||||||
@@ -780,7 +702,6 @@ public:
|
|||||||
const Type *GetAsUnboundVariabilityType() const;
|
const Type *GetAsUnboundVariabilityType() const;
|
||||||
const FunctionType *ResolveUnboundVariability(Variability v) const;
|
const FunctionType *ResolveUnboundVariability(Variability v) const;
|
||||||
|
|
||||||
const Type *GetSOAType(int width) const;
|
|
||||||
const Type *GetAsConstType() const;
|
const Type *GetAsConstType() const;
|
||||||
const Type *GetAsNonConstType() const;
|
const Type *GetAsNonConstType() const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user