aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/translator/ParseContext.cpp2
-rw-r--r--src/compiler/translator/SymbolTable.h6
-rw-r--r--src/compiler/translator/util.cpp2
-rw-r--r--src/libGLESv2/Framebuffer.cpp21
-rw-r--r--src/libGLESv2/renderer/d3d/TextureD3D.cpp2
-rw-r--r--src/preprocessor.target.darwin-arm.mk2
-rw-r--r--src/preprocessor.target.darwin-arm64.mk2
-rw-r--r--src/preprocessor.target.darwin-x86.mk2
-rw-r--r--src/preprocessor.target.darwin-x86_64.mk2
-rw-r--r--src/preprocessor.target.linux-arm.mk2
-rw-r--r--src/preprocessor.target.linux-arm64.mk2
-rw-r--r--src/preprocessor.target.linux-x86.mk2
-rw-r--r--src/preprocessor.target.linux-x86_64.mk2
-rw-r--r--src/translator.target.darwin-arm.mk2
-rw-r--r--src/translator.target.darwin-arm64.mk2
-rw-r--r--src/translator.target.darwin-x86.mk2
-rw-r--r--src/translator.target.darwin-x86_64.mk2
-rw-r--r--src/translator.target.linux-arm.mk2
-rw-r--r--src/translator.target.linux-arm64.mk2
-rw-r--r--src/translator.target.linux-x86.mk2
-rw-r--r--src/translator.target.linux-x86_64.mk2
-rw-r--r--src/translator_lib.target.darwin-arm.mk2
-rw-r--r--src/translator_lib.target.darwin-arm64.mk2
-rw-r--r--src/translator_lib.target.darwin-x86.mk2
-rw-r--r--src/translator_lib.target.darwin-x86_64.mk2
-rw-r--r--src/translator_lib.target.linux-arm.mk2
-rw-r--r--src/translator_lib.target.linux-arm64.mk2
-rw-r--r--src/translator_lib.target.linux-x86.mk2
-rw-r--r--src/translator_lib.target.linux-x86_64.mk2
-rw-r--r--tests/compiler_tests/ShaderVariable_test.cpp25
30 files changed, 47 insertions, 59 deletions
diff --git a/src/compiler/translator/ParseContext.cpp b/src/compiler/translator/ParseContext.cpp
index 37969b54..72e179fc 100644
--- a/src/compiler/translator/ParseContext.cpp
+++ b/src/compiler/translator/ParseContext.cpp
@@ -1375,7 +1375,7 @@ TIntermAggregate* TParseContext::parseInvariantDeclaration(const TSourceLoc &inv
recover();
return NULL;
}
- symbolTable.addInvariantVarying(*identifier);
+ symbolTable.addInvariantVarying(std::string(identifier->c_str()));
const TVariable *variable = getNamedVariable(identifierLoc, identifier, symbol);
ASSERT(variable);
const TType &type = variable->getType();
diff --git a/src/compiler/translator/SymbolTable.h b/src/compiler/translator/SymbolTable.h
index 9cd74218..afb973ae 100644
--- a/src/compiler/translator/SymbolTable.h
+++ b/src/compiler/translator/SymbolTable.h
@@ -413,7 +413,7 @@ class TSymbolTable
// This records invariant varyings declared through
// "invariant varying_name;".
- void addInvariantVarying(const TString &originalName)
+ void addInvariantVarying(const std::string &originalName)
{
mInvariantVaryings.insert(originalName);
}
@@ -421,7 +421,7 @@ class TSymbolTable
// if it is set as invariant during the varying variable
// declaration - this piece of information is stored in the
// variable's type, not here.
- bool isVaryingInvariant(const TString &originalName) const
+ bool isVaryingInvariant(const std::string &originalName) const
{
return (mGlobalInvariant ||
mInvariantVaryings.count(originalName) > 0);
@@ -445,7 +445,7 @@ class TSymbolTable
typedef TMap<TBasicType, TPrecision> PrecisionStackLevel;
std::vector< PrecisionStackLevel *> precisionStack;
- std::set<TString> mInvariantVaryings;
+ std::set<std::string> mInvariantVaryings;
bool mGlobalInvariant;
static int uniqueIdCounter;
diff --git a/src/compiler/translator/util.cpp b/src/compiler/translator/util.cpp
index 8cc06a65..42a995ee 100644
--- a/src/compiler/translator/util.cpp
+++ b/src/compiler/translator/util.cpp
@@ -307,7 +307,7 @@ void GetVariableTraverser::setTypeSpecificInfo(
break;
case EvqVaryingIn:
case EvqVaryingOut:
- if (mSymbolTable.isVaryingInvariant(name))
+ if (mSymbolTable.isVaryingInvariant(std::string(name.c_str())))
{
variable->isInvariant = true;
}
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index 9cd9e25c..74fdd68a 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -644,12 +644,23 @@ DefaultFramebuffer::DefaultFramebuffer(rx::Renderer *renderer, Colorbuffer *colo
Renderbuffer *colorRenderbuffer = new Renderbuffer(0, colorbuffer);
mColorbuffers[0] = new RenderbufferAttachment(GL_BACK, colorRenderbuffer);
- Renderbuffer *depthStencilBuffer = new Renderbuffer(0, depthStencil);
+ GLenum depthStencilActualFormat = depthStencil->getActualFormat();
+ const gl::InternalFormat &depthStencilFormatInfo = GetInternalFormatInfo(depthStencilActualFormat);
- // Make a new attachment objects to ensure we do not double-delete
- // See angle issue 686
- mDepthbuffer = (depthStencilBuffer->getDepthSize() != 0 ? new RenderbufferAttachment(GL_DEPTH_ATTACHMENT, depthStencilBuffer) : NULL);
- mStencilbuffer = (depthStencilBuffer->getStencilSize() != 0 ? new RenderbufferAttachment(GL_STENCIL_ATTACHMENT, depthStencilBuffer) : NULL);
+ if (depthStencilFormatInfo.depthBits != 0 || depthStencilFormatInfo.stencilBits != 0)
+ {
+ Renderbuffer *depthStencilBuffer = new Renderbuffer(0, depthStencil);
+
+ // Make a new attachment objects to ensure we do not double-delete
+ // See angle issue 686
+ mDepthbuffer = (depthStencilFormatInfo.depthBits != 0 ? new RenderbufferAttachment(GL_DEPTH_ATTACHMENT, depthStencilBuffer) : NULL);
+ mStencilbuffer = (depthStencilFormatInfo.stencilBits != 0 ? new RenderbufferAttachment(GL_STENCIL_ATTACHMENT, depthStencilBuffer) : NULL);
+ }
+ else
+ {
+ // This method transfers ownership, so delete the unused storage if we don't keep it.
+ SafeDelete(depthStencil);
+ }
mDrawBufferStates[0] = GL_BACK;
mReadBufferState = GL_BACK;
diff --git a/src/libGLESv2/renderer/d3d/TextureD3D.cpp b/src/libGLESv2/renderer/d3d/TextureD3D.cpp
index bdea186a..77e00f79 100644
--- a/src/libGLESv2/renderer/d3d/TextureD3D.cpp
+++ b/src/libGLESv2/renderer/d3d/TextureD3D.cpp
@@ -1423,7 +1423,7 @@ void TextureD3D_Cube::initMipmapsImages()
unsigned int TextureD3D_Cube::getRenderTargetSerial(const gl::ImageIndex &index)
{
- return (ensureRenderTarget().isError() ? mTexStorage->getRenderTargetSerial(index) : 0);
+ return (!ensureRenderTarget().isError() ? mTexStorage->getRenderTargetSerial(index) : 0);
}
gl::Error TextureD3D_Cube::getRenderTarget(const gl::ImageIndex &index, RenderTarget **outRT)
diff --git a/src/preprocessor.target.darwin-arm.mk b/src/preprocessor.target.darwin-arm.mk
index f5256d83..efbbc78c 100644
--- a/src/preprocessor.target.darwin-arm.mk
+++ b/src/preprocessor.target.darwin-arm.mk
@@ -40,7 +40,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -140,7 +139,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.darwin-arm64.mk b/src/preprocessor.target.darwin-arm64.mk
index 541c8e7f..b9df742e 100644
--- a/src/preprocessor.target.darwin-arm64.mk
+++ b/src/preprocessor.target.darwin-arm64.mk
@@ -39,7 +39,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.darwin-x86.mk b/src/preprocessor.target.darwin-x86.mk
index 78496dab..4be409e5 100644
--- a/src/preprocessor.target.darwin-x86.mk
+++ b/src/preprocessor.target.darwin-x86.mk
@@ -39,7 +39,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -133,7 +132,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.darwin-x86_64.mk b/src/preprocessor.target.darwin-x86_64.mk
index 64ee0ae7..1fefd5d2 100644
--- a/src/preprocessor.target.darwin-x86_64.mk
+++ b/src/preprocessor.target.darwin-x86_64.mk
@@ -40,7 +40,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -133,7 +132,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.linux-arm.mk b/src/preprocessor.target.linux-arm.mk
index f5256d83..efbbc78c 100644
--- a/src/preprocessor.target.linux-arm.mk
+++ b/src/preprocessor.target.linux-arm.mk
@@ -40,7 +40,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -140,7 +139,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.linux-arm64.mk b/src/preprocessor.target.linux-arm64.mk
index 541c8e7f..b9df742e 100644
--- a/src/preprocessor.target.linux-arm64.mk
+++ b/src/preprocessor.target.linux-arm64.mk
@@ -39,7 +39,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.linux-x86.mk b/src/preprocessor.target.linux-x86.mk
index 78496dab..4be409e5 100644
--- a/src/preprocessor.target.linux-x86.mk
+++ b/src/preprocessor.target.linux-x86.mk
@@ -39,7 +39,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -133,7 +132,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.linux-x86_64.mk b/src/preprocessor.target.linux-x86_64.mk
index 64ee0ae7..1fefd5d2 100644
--- a/src/preprocessor.target.linux-x86_64.mk
+++ b/src/preprocessor.target.linux-x86_64.mk
@@ -40,7 +40,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -133,7 +132,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator.target.darwin-arm.mk b/src/translator.target.darwin-arm.mk
index 57eb73fb..15c9640f 100644
--- a/src/translator.target.darwin-arm.mk
+++ b/src/translator.target.darwin-arm.mk
@@ -31,7 +31,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -134,7 +133,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator.target.darwin-arm64.mk b/src/translator.target.darwin-arm64.mk
index 3515ac22..89ecc72b 100644
--- a/src/translator.target.darwin-arm64.mk
+++ b/src/translator.target.darwin-arm64.mk
@@ -30,7 +30,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -121,7 +120,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator.target.darwin-x86.mk b/src/translator.target.darwin-x86.mk
index a0850579..f09b63d5 100644
--- a/src/translator.target.darwin-x86.mk
+++ b/src/translator.target.darwin-x86.mk
@@ -30,7 +30,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator.target.darwin-x86_64.mk b/src/translator.target.darwin-x86_64.mk
index b9440a60..5e200bb0 100644
--- a/src/translator.target.darwin-x86_64.mk
+++ b/src/translator.target.darwin-x86_64.mk
@@ -31,7 +31,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator.target.linux-arm.mk b/src/translator.target.linux-arm.mk
index 57eb73fb..15c9640f 100644
--- a/src/translator.target.linux-arm.mk
+++ b/src/translator.target.linux-arm.mk
@@ -31,7 +31,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -134,7 +133,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator.target.linux-arm64.mk b/src/translator.target.linux-arm64.mk
index 3515ac22..89ecc72b 100644
--- a/src/translator.target.linux-arm64.mk
+++ b/src/translator.target.linux-arm64.mk
@@ -30,7 +30,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -121,7 +120,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator.target.linux-x86.mk b/src/translator.target.linux-x86.mk
index a0850579..f09b63d5 100644
--- a/src/translator.target.linux-x86.mk
+++ b/src/translator.target.linux-x86.mk
@@ -30,7 +30,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator.target.linux-x86_64.mk b/src/translator.target.linux-x86_64.mk
index b9440a60..5e200bb0 100644
--- a/src/translator.target.linux-x86_64.mk
+++ b/src/translator.target.linux-x86_64.mk
@@ -31,7 +31,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.darwin-arm.mk b/src/translator_lib.target.darwin-arm.mk
index e908b4c5..5f4ea7b1 100644
--- a/src/translator_lib.target.darwin-arm.mk
+++ b/src/translator_lib.target.darwin-arm.mk
@@ -95,7 +95,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -198,7 +197,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.darwin-arm64.mk b/src/translator_lib.target.darwin-arm64.mk
index 4dc1a85a..20ccd1eb 100644
--- a/src/translator_lib.target.darwin-arm64.mk
+++ b/src/translator_lib.target.darwin-arm64.mk
@@ -94,7 +94,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -185,7 +184,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.darwin-x86.mk b/src/translator_lib.target.darwin-x86.mk
index c04e2286..d3fc8b50 100644
--- a/src/translator_lib.target.darwin-x86.mk
+++ b/src/translator_lib.target.darwin-x86.mk
@@ -94,7 +94,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -191,7 +190,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.darwin-x86_64.mk b/src/translator_lib.target.darwin-x86_64.mk
index d6ec9385..940fbd36 100644
--- a/src/translator_lib.target.darwin-x86_64.mk
+++ b/src/translator_lib.target.darwin-x86_64.mk
@@ -95,7 +95,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -191,7 +190,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.linux-arm.mk b/src/translator_lib.target.linux-arm.mk
index e908b4c5..5f4ea7b1 100644
--- a/src/translator_lib.target.linux-arm.mk
+++ b/src/translator_lib.target.linux-arm.mk
@@ -95,7 +95,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -198,7 +197,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.linux-arm64.mk b/src/translator_lib.target.linux-arm64.mk
index 4dc1a85a..20ccd1eb 100644
--- a/src/translator_lib.target.linux-arm64.mk
+++ b/src/translator_lib.target.linux-arm64.mk
@@ -94,7 +94,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -185,7 +184,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.linux-x86.mk b/src/translator_lib.target.linux-x86.mk
index c04e2286..d3fc8b50 100644
--- a/src/translator_lib.target.linux-x86.mk
+++ b/src/translator_lib.target.linux-x86.mk
@@ -94,7 +94,6 @@ LOCAL_SRC_FILES := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Debug := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -191,7 +190,6 @@ LOCAL_CPPFLAGS_Debug := \
# Flags passed to both C and C++ files.
MY_CFLAGS_Release := \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.linux-x86_64.mk b/src/translator_lib.target.linux-x86_64.mk
index d6ec9385..940fbd36 100644
--- a/src/translator_lib.target.linux-x86_64.mk
+++ b/src/translator_lib.target.linux-x86_64.mk
@@ -95,7 +95,6 @@ LOCAL_SRC_FILES := \
MY_CFLAGS_Debug := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
@@ -191,7 +190,6 @@ LOCAL_CPPFLAGS_Debug := \
MY_CFLAGS_Release := \
-fstack-protector \
--param=ssp-buffer-size=4 \
- \
-fno-strict-aliasing \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
diff --git a/tests/compiler_tests/ShaderVariable_test.cpp b/tests/compiler_tests/ShaderVariable_test.cpp
index b642260f..7fda29e7 100644
--- a/tests/compiler_tests/ShaderVariable_test.cpp
+++ b/tests/compiler_tests/ShaderVariable_test.cpp
@@ -218,4 +218,29 @@ TEST(ShaderVariableTest, IsSameVaryingWithDifferentInvariance)
EXPECT_TRUE(vx.isSameVaryingAtLinkTime(fx));
}
+// Test that using invariant varyings doesn't trigger a double delete.
+TEST(ShaderVariableTest, InvariantDoubleDeleteBug)
+{
+ ShBuiltInResources resources;
+ ShInitBuiltInResources(&resources);
+
+ ShHandle compiler = ShConstructCompiler(GL_VERTEX_SHADER, SH_GLES2_SPEC, SH_GLSL_OUTPUT, &resources);
+ EXPECT_NE(static_cast<ShHandle>(0), compiler);
+
+ const char *program[] =
+ {
+ "attribute vec4 position;\n"
+ "varying float v;\n"
+ "invariant v;\n"
+ "void main() {\n"
+ " v = 1.0;\n"
+ " gl_Position = position;\n"
+ "}"
+ };
+
+ EXPECT_TRUE(ShCompile(compiler, program, 1, SH_OBJECT_CODE));
+ EXPECT_TRUE(ShCompile(compiler, program, 1, SH_OBJECT_CODE));
+ ShDestruct(compiler);
+}
+
} // namespace sh