Memory: Don't use pool memory to store the entry point name in the intermediate representation.
This might address issue #221, which I couldn't reproduce.
This commit is contained in:
parent
78a6b78810
commit
7e3e486344
@ -2126,7 +2126,7 @@ bool TGlslangToSpvTraverser::isShaderEntrypoint(const glslang::TIntermAggregate*
|
|||||||
{
|
{
|
||||||
// have to ignore mangling and just look at the base name
|
// have to ignore mangling and just look at the base name
|
||||||
int firstOpen = node->getName().find('(');
|
int firstOpen = node->getName().find('(');
|
||||||
return node->getName().compare(0, firstOpen, glslangIntermediate->getEntryPoint()) == 0;
|
return node->getName().compare(0, firstOpen, glslangIntermediate->getEntryPoint().c_str()) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make all the functions, skeletally, without actually visiting their bodies.
|
// Make all the functions, skeletally, without actually visiting their bodies.
|
||||||
|
@ -986,7 +986,7 @@ TIntermAggregate* TParseContext::handleFunctionDefinition(const TSourceLoc& loc,
|
|||||||
//
|
//
|
||||||
// Raise error message if main function takes any parameters or returns anything other than void
|
// Raise error message if main function takes any parameters or returns anything other than void
|
||||||
//
|
//
|
||||||
if (function.getName() == intermediate.getEntryPoint()) {
|
if (function.getName() == intermediate.getEntryPoint().c_str()) {
|
||||||
if (function.getParamCount() > 0)
|
if (function.getParamCount() > 0)
|
||||||
error(loc, "function cannot take any parameter(s)", function.getName().c_str(), "");
|
error(loc, "function cannot take any parameter(s)", function.getName().c_str(), "");
|
||||||
if (function.getType().getBasicType() != EbtVoid)
|
if (function.getType().getBasicType() != EbtVoid)
|
||||||
|
@ -149,7 +149,7 @@ public:
|
|||||||
void setSource(EShSource s) { source = s; }
|
void setSource(EShSource s) { source = s; }
|
||||||
EShSource getSource() const { return source; }
|
EShSource getSource() const { return source; }
|
||||||
void setEntryPoint(const char* ep) { entryPoint = ep; }
|
void setEntryPoint(const char* ep) { entryPoint = ep; }
|
||||||
const TString& getEntryPoint() const { return entryPoint; }
|
const std::string& getEntryPoint() const { return entryPoint; }
|
||||||
void setVersion(int v) { version = v; }
|
void setVersion(int v) { version = v; }
|
||||||
int getVersion() const { return version; }
|
int getVersion() const { return version; }
|
||||||
void setProfile(EProfile p) { profile = p; }
|
void setProfile(EProfile p) { profile = p; }
|
||||||
@ -347,7 +347,7 @@ protected:
|
|||||||
|
|
||||||
const EShLanguage language; // stage, known at construction time
|
const EShLanguage language; // stage, known at construction time
|
||||||
EShSource source; // source language, known a bit later
|
EShSource source; // source language, known a bit later
|
||||||
TString entryPoint;
|
std::string entryPoint;
|
||||||
EProfile profile;
|
EProfile profile;
|
||||||
int version;
|
int version;
|
||||||
int spv;
|
int spv;
|
||||||
|
@ -709,7 +709,7 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l
|
|||||||
currentFunctionType = new TType(EbtVoid);
|
currentFunctionType = new TType(EbtVoid);
|
||||||
functionReturnsValue = false;
|
functionReturnsValue = false;
|
||||||
|
|
||||||
inEntrypoint = (function.getName() == intermediate.getEntryPoint());
|
inEntrypoint = (function.getName() == intermediate.getEntryPoint().c_str());
|
||||||
|
|
||||||
//
|
//
|
||||||
// New symbol table scope for body of function plus its arguments
|
// New symbol table scope for body of function plus its arguments
|
||||||
|
Loading…
x
Reference in New Issue
Block a user