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