Remove a mangled-name cache in the type that was sometimes stale.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22653 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
1b42f2a33d
commit
252b619066
Binary file not shown.
@ -98,3 +98,9 @@ int foo(out float a) // ERROR
|
|||||||
return 3.2; // ERROR
|
return 3.2; // ERROR
|
||||||
foo(a); // ERROR
|
foo(a); // ERROR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool gen(vec3 v)
|
||||||
|
{
|
||||||
|
if (abs(v[0]) < 1e-4 && abs(v[1]) < 1e-4)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@ -405,7 +405,7 @@ public:
|
|||||||
explicit TType(TBasicType t, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0) :
|
explicit TType(TBasicType t, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0) :
|
||||||
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), arraySizes(0),
|
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), arraySizes(0),
|
||||||
structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0),
|
structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0),
|
||||||
fieldName(0), mangled(0), typeName(0)
|
fieldName(0), typeName(0)
|
||||||
{
|
{
|
||||||
sampler.clear();
|
sampler.clear();
|
||||||
qualifier.clear();
|
qualifier.clear();
|
||||||
@ -414,7 +414,7 @@ public:
|
|||||||
TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0) :
|
TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0) :
|
||||||
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), arraySizes(0),
|
basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), arraySizes(0),
|
||||||
structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0),
|
structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0),
|
||||||
fieldName(0), mangled(0), typeName(0)
|
fieldName(0), typeName(0)
|
||||||
{
|
{
|
||||||
sampler.clear();
|
sampler.clear();
|
||||||
qualifier.clear();
|
qualifier.clear();
|
||||||
@ -424,7 +424,7 @@ public:
|
|||||||
}
|
}
|
||||||
explicit TType(const TPublicType &p) :
|
explicit TType(const TPublicType &p) :
|
||||||
basicType(p.basicType), vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), arraySizes(p.arraySizes),
|
basicType(p.basicType), vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), arraySizes(p.arraySizes),
|
||||||
structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0), fieldName(0), mangled(0), typeName(0)
|
structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0), fieldName(0), typeName(0)
|
||||||
{
|
{
|
||||||
if (basicType == EbtSampler)
|
if (basicType == EbtSampler)
|
||||||
sampler = p.sampler;
|
sampler = p.sampler;
|
||||||
@ -438,7 +438,7 @@ public:
|
|||||||
}
|
}
|
||||||
TType(TTypeList* userDef, const TString& n, TStorageQualifier blockQualifier = EvqGlobal) :
|
TType(TTypeList* userDef, const TString& n, TStorageQualifier blockQualifier = EvqGlobal) :
|
||||||
basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), arraySizes(0),
|
basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), arraySizes(0),
|
||||||
structure(userDef), maxArraySize(0), arrayInformationType(0), fieldName(0), mangled(0)
|
structure(userDef), maxArraySize(0), arrayInformationType(0), fieldName(0)
|
||||||
{
|
{
|
||||||
sampler.clear();
|
sampler.clear();
|
||||||
qualifier.clear();
|
qualifier.clear();
|
||||||
@ -497,10 +497,6 @@ public:
|
|||||||
if (copyOf.typeName)
|
if (copyOf.typeName)
|
||||||
typeName = NewPoolTString(copyOf.typeName->c_str());
|
typeName = NewPoolTString(copyOf.typeName->c_str());
|
||||||
|
|
||||||
mangled = 0;
|
|
||||||
if (copyOf.mangled)
|
|
||||||
mangled = NewPoolTString(copyOf.mangled->c_str());
|
|
||||||
|
|
||||||
structureSize = copyOf.structureSize;
|
structureSize = copyOf.structureSize;
|
||||||
maxArraySize = copyOf.maxArraySize;
|
maxArraySize = copyOf.maxArraySize;
|
||||||
assert(copyOf.arrayInformationType == 0);
|
assert(copyOf.arrayInformationType == 0);
|
||||||
@ -706,15 +702,11 @@ public:
|
|||||||
return totalSize;
|
return totalSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
TString& getMangledName()
|
// append this type's mangled name to the passed in 'name'
|
||||||
|
void appendMangledName(TString& name)
|
||||||
{
|
{
|
||||||
if (!mangled) {
|
buildMangledName(name);
|
||||||
mangled = NewPoolTString("");
|
name += ';' ;
|
||||||
buildMangledName(*mangled);
|
|
||||||
*mangled += ';' ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return *mangled;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool sameElementType(const TType& right) const
|
bool sameElementType(const TType& right) const
|
||||||
@ -758,7 +750,6 @@ protected:
|
|||||||
int maxArraySize;
|
int maxArraySize;
|
||||||
TType* arrayInformationType;
|
TType* arrayInformationType;
|
||||||
TString *fieldName; // for structure field names
|
TString *fieldName; // for structure field names
|
||||||
TString *mangled;
|
|
||||||
TString *typeName; // for structure field type name
|
TString *typeName; // for structure field type name
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -195,7 +195,7 @@ public:
|
|||||||
void addParameter(TParameter& p)
|
void addParameter(TParameter& p)
|
||||||
{
|
{
|
||||||
parameters.push_back(p);
|
parameters.push_back(p);
|
||||||
mangledName = mangledName + p.type->getMangledName();
|
p.type->appendMangledName(mangledName);
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString& getMangledName() const { return mangledName; }
|
const TString& getMangledName() const { return mangledName; }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user