Commit 80d934bb by Jamie Madill

Enable MSVS warning 4512.

Fix up the missing DISALLOW_COPY_AND_ASSIGN macros and various small problems preventing us from turning on this warning. This should ensure we more often use the DISALLOW macro going forward. Change-Id: I2e1a9d23a31a51279a577fad8dffb8c1530e2ee8 Reviewed-on: https://chromium-review.googlesource.com/251100Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCooper Partin <coopp@microsoft.com> Tested-by: 's avatarCooper Partin <coopp@microsoft.com> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 7c1f6f19
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
'angle_build_winrt%': '0', 'angle_build_winrt%': '0',
'angle_build_winphone%': '0', 'angle_build_winphone%': '0',
}, },
'msvs_disabled_warnings': [ 4075, 4100, 4127, 4239, 4244, 4245, 4251, 4264, 4267, 4447, 4512, 4702, 4718 ], 'msvs_disabled_warnings': [ 4075, 4100, 4127, 4239, 4244, 4245, 4251, 4264, 4267, 4447, 4702, 4718 ],
'msvs_system_include_dirs': 'msvs_system_include_dirs':
[ [
'<(windows_sdk_path)/Include/shared', '<(windows_sdk_path)/Include/shared',
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#ifndef COMPILER_TRANSLATOR_DIAGNOSTICS_H_ #ifndef COMPILER_TRANSLATOR_DIAGNOSTICS_H_
#define COMPILER_TRANSLATOR_DIAGNOSTICS_H_ #define COMPILER_TRANSLATOR_DIAGNOSTICS_H_
#include "common/angleutils.h"
#include "compiler/preprocessor/DiagnosticsBase.h" #include "compiler/preprocessor/DiagnosticsBase.h"
class TInfoSink; class TInfoSink;
...@@ -36,6 +37,8 @@ class TDiagnostics : public pp::Diagnostics ...@@ -36,6 +37,8 @@ class TDiagnostics : public pp::Diagnostics
const std::string& text); const std::string& text);
private: private:
DISALLOW_COPY_AND_ASSIGN(TDiagnostics);
TInfoSink& mInfoSink; TInfoSink& mInfoSink;
int mNumErrors; int mNumErrors;
int mNumWarnings; int mNumWarnings;
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#ifndef COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_ #ifndef COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_
#define COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_ #define COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_
#include "common/angleutils.h"
#include "compiler/translator/ExtensionBehavior.h" #include "compiler/translator/ExtensionBehavior.h"
#include "compiler/translator/Pragma.h" #include "compiler/translator/Pragma.h"
#include "compiler/preprocessor/DirectiveHandlerBase.h" #include "compiler/preprocessor/DirectiveHandlerBase.h"
...@@ -41,6 +42,8 @@ class TDirectiveHandler : public pp::DirectiveHandler ...@@ -41,6 +42,8 @@ class TDirectiveHandler : public pp::DirectiveHandler
int version); int version);
private: private:
DISALLOW_COPY_AND_ASSIGN(TDirectiveHandler);
TPragma mPragma; TPragma mPragma;
TExtensionBehavior& mExtensionBehavior; TExtensionBehavior& mExtensionBehavior;
TDiagnostics& mDiagnostics; TDiagnostics& mDiagnostics;
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <algorithm> #include <algorithm>
#include <queue> #include <queue>
#include "common/angleutils.h"
#include "compiler/translator/Common.h" #include "compiler/translator/Common.h"
#include "compiler/translator/Types.h" #include "compiler/translator/Types.h"
#include "compiler/translator/ConstantUnion.h" #include "compiler/translator/ConstantUnion.h"
...@@ -589,6 +590,9 @@ class TIntermTraverser ...@@ -589,6 +590,9 @@ class TIntermTraverser
// During traversing, save all the changes that need to happen into // During traversing, save all the changes that need to happen into
// mReplacements, then do them by calling updateTree(). // mReplacements, then do them by calling updateTree().
std::vector<NodeUpdateEntry> mReplacements; std::vector<NodeUpdateEntry> mReplacements;
private:
DISALLOW_COPY_AND_ASSIGN(TIntermTraverser);
}; };
// //
...@@ -610,10 +614,13 @@ class TMaxDepthTraverser : public TIntermTraverser ...@@ -610,10 +614,13 @@ class TMaxDepthTraverser : public TIntermTraverser
virtual bool visitLoop(Visit, TIntermLoop *) { return depthCheck(); } virtual bool visitLoop(Visit, TIntermLoop *) { return depthCheck(); }
virtual bool visitBranch(Visit, TIntermBranch *) { return depthCheck(); } virtual bool visitBranch(Visit, TIntermBranch *) { return depthCheck(); }
protected: protected:
bool depthCheck() const { return mMaxDepth < mDepthLimit; } bool depthCheck() const { return mMaxDepth < mDepthLimit; }
int mDepthLimit; int mDepthLimit;
private:
DISALLOW_COPY_AND_ASSIGN(TMaxDepthTraverser);
}; };
#endif // COMPILER_TRANSLATOR_INTERMNODE_H_ #endif // COMPILER_TRANSLATOR_INTERMNODE_H_
...@@ -21,9 +21,23 @@ Std140PaddingHelper::Std140PaddingHelper(const std::map<TString, int> &structEle ...@@ -21,9 +21,23 @@ Std140PaddingHelper::Std140PaddingHelper(const std::map<TString, int> &structEle
unsigned *uniqueCounter) unsigned *uniqueCounter)
: mPaddingCounter(uniqueCounter), : mPaddingCounter(uniqueCounter),
mElementIndex(0), mElementIndex(0),
mStructElementIndexes(structElementIndexes) mStructElementIndexes(&structElementIndexes)
{} {}
Std140PaddingHelper::Std140PaddingHelper(const Std140PaddingHelper &other)
: mPaddingCounter(other.mPaddingCounter),
mElementIndex(other.mElementIndex),
mStructElementIndexes(other.mStructElementIndexes)
{}
Std140PaddingHelper &Std140PaddingHelper::operator=(const Std140PaddingHelper &other)
{
mPaddingCounter = other.mPaddingCounter;
mElementIndex = other.mElementIndex;
mStructElementIndexes = other.mStructElementIndexes;
return *this;
}
TString Std140PaddingHelper::next() TString Std140PaddingHelper::next()
{ {
unsigned value = (*mPaddingCounter)++; unsigned value = (*mPaddingCounter)++;
...@@ -107,7 +121,7 @@ TString Std140PaddingHelper::postPaddingString(const TType &type, bool useHLSLRo ...@@ -107,7 +121,7 @@ TString Std140PaddingHelper::postPaddingString(const TType &type, bool useHLSLRo
{ {
const TString &structName = QualifiedStructNameString(*structure, const TString &structName = QualifiedStructNameString(*structure,
useHLSLRowMajorPacking, true); useHLSLRowMajorPacking, true);
numComponents = mStructElementIndexes.find(structName)->second; numComponents = mStructElementIndexes->find(structName)->second;
if (numComponents == 0) if (numComponents == 0)
{ {
......
...@@ -27,7 +27,9 @@ class Std140PaddingHelper ...@@ -27,7 +27,9 @@ class Std140PaddingHelper
{ {
public: public:
explicit Std140PaddingHelper(const std::map<TString, int> &structElementIndexes, explicit Std140PaddingHelper(const std::map<TString, int> &structElementIndexes,
unsigned *uniqueCounter); unsigned int *uniqueCounter);
Std140PaddingHelper(const Std140PaddingHelper &other);
Std140PaddingHelper &operator=(const Std140PaddingHelper &other);
int elementIndex() const { return mElementIndex; } int elementIndex() const { return mElementIndex; }
int prePadding(const TType &type); int prePadding(const TType &type);
...@@ -39,7 +41,7 @@ class Std140PaddingHelper ...@@ -39,7 +41,7 @@ class Std140PaddingHelper
unsigned *mPaddingCounter; unsigned *mPaddingCounter;
int mElementIndex; int mElementIndex;
const std::map<TString, int> &mStructElementIndexes; const std::map<TString, int> *mStructElementIndexes;
}; };
class StructureHLSL class StructureHLSL
...@@ -56,6 +58,8 @@ class StructureHLSL ...@@ -56,6 +58,8 @@ class StructureHLSL
Std140PaddingHelper getPaddingHelper(); Std140PaddingHelper getPaddingHelper();
private: private:
DISALLOW_COPY_AND_ASSIGN(StructureHLSL);
unsigned mUniquePaddingCounter; unsigned mUniquePaddingCounter;
std::map<TString, int> mStd140StructElementIndexes; std::map<TString, int> mStd140StructElementIndexes;
......
...@@ -39,6 +39,8 @@ class UniformHLSL ...@@ -39,6 +39,8 @@ class UniformHLSL
} }
private: private:
DISALLOW_COPY_AND_ASSIGN(UniformHLSL);
TString interfaceBlockString(const TInterfaceBlock &interfaceBlock, unsigned int registerIndex, unsigned int arrayIndex); TString interfaceBlockString(const TInterfaceBlock &interfaceBlock, unsigned int registerIndex, unsigned int arrayIndex);
TString interfaceBlockMembersString(const TInterfaceBlock &interfaceBlock, TLayoutBlockStorage blockStorage); TString interfaceBlockMembersString(const TInterfaceBlock &interfaceBlock, TLayoutBlockStorage blockStorage);
TString interfaceBlockStructString(const TInterfaceBlock &interfaceBlock); TString interfaceBlockStructString(const TInterfaceBlock &interfaceBlock);
......
...@@ -33,6 +33,8 @@ class CollectVariables : public TIntermTraverser ...@@ -33,6 +33,8 @@ class CollectVariables : public TIntermTraverser
virtual bool visitBinary(Visit visit, TIntermBinary *binaryNode); virtual bool visitBinary(Visit visit, TIntermBinary *binaryNode);
private: private:
DISALLOW_COPY_AND_ASSIGN(CollectVariables);
template <typename VarT> template <typename VarT>
void visitVariable(const TIntermSymbol *variable, std::vector<VarT> *infoList) const; void visitVariable(const TIntermSymbol *variable, std::vector<VarT> *infoList) const;
......
...@@ -115,6 +115,9 @@ class TDependencyGraphBuilder : public TIntermTraverser ...@@ -115,6 +115,9 @@ class TDependencyGraphBuilder : public TIntermTraverser
~TNodeSetMaintainer() { mSets.popSet(); } ~TNodeSetMaintainer() { mSets.popSet(); }
protected: protected:
TNodeSetStack &mSets; TNodeSetStack &mSets;
private:
DISALLOW_COPY_AND_ASSIGN(TNodeSetMaintainer);
}; };
// //
...@@ -133,6 +136,8 @@ class TDependencyGraphBuilder : public TIntermTraverser ...@@ -133,6 +136,8 @@ class TDependencyGraphBuilder : public TIntermTraverser
~TNodeSetPropagatingMaintainer() { mSets.popSetIntoNext(); } ~TNodeSetPropagatingMaintainer() { mSets.popSetIntoNext(); }
protected: protected:
TNodeSetStack &mSets; TNodeSetStack &mSets;
private:
DISALLOW_COPY_AND_ASSIGN(TNodeSetPropagatingMaintainer);
}; };
// //
...@@ -169,6 +174,8 @@ class TDependencyGraphBuilder : public TIntermTraverser ...@@ -169,6 +174,8 @@ class TDependencyGraphBuilder : public TIntermTraverser
protected: protected:
TSymbolStack& mLeftmostSymbols; TSymbolStack& mLeftmostSymbols;
bool mNeedsPlaceholderSymbol; bool mNeedsPlaceholderSymbol;
private:
DISALLOW_COPY_AND_ASSIGN(TLeftmostSymbolMaintainer);
}; };
TDependencyGraphBuilder(TDependencyGraph *graph) TDependencyGraphBuilder(TDependencyGraph *graph)
......
...@@ -10,18 +10,21 @@ ...@@ -10,18 +10,21 @@
#include "compiler/translator/depgraph/DependencyGraph.h" #include "compiler/translator/depgraph/DependencyGraph.h"
#include "compiler/translator/InfoSink.h" #include "compiler/translator/InfoSink.h"
class TDependencyGraphOutput : public TDependencyGraphTraverser { class TDependencyGraphOutput : public TDependencyGraphTraverser
public: {
public:
TDependencyGraphOutput(TInfoSinkBase& sink) : mSink(sink) {} TDependencyGraphOutput(TInfoSinkBase& sink) : mSink(sink) {}
virtual void visitSymbol(TGraphSymbol* symbol); void visitSymbol(TGraphSymbol* symbol) override;
virtual void visitArgument(TGraphArgument* parameter); void visitArgument(TGraphArgument* parameter) override;
virtual void visitFunctionCall(TGraphFunctionCall* functionCall); void visitFunctionCall(TGraphFunctionCall* functionCall) override;
virtual void visitSelection(TGraphSelection* selection); void visitSelection(TGraphSelection* selection) override;
virtual void visitLoop(TGraphLoop* loop); void visitLoop(TGraphLoop* loop) override;
virtual void visitLogicalOp(TGraphLogicalOp* logicalOp); void visitLogicalOp(TGraphLogicalOp* logicalOp) override;
void outputAllSpanningTrees(TDependencyGraph& graph); void outputAllSpanningTrees(TDependencyGraph& graph);
private: private:
DISALLOW_COPY_AND_ASSIGN(TDependencyGraphOutput);
void outputIndentation(); void outputIndentation();
TInfoSinkBase& mSink; TInfoSinkBase& mSink;
......
...@@ -12,23 +12,26 @@ ...@@ -12,23 +12,26 @@
class TInfoSinkBase; class TInfoSinkBase;
class RestrictFragmentShaderTiming : TDependencyGraphTraverser { class RestrictFragmentShaderTiming : TDependencyGraphTraverser
public: {
RestrictFragmentShaderTiming(TInfoSinkBase& sink); public:
void enforceRestrictions(const TDependencyGraph& graph); RestrictFragmentShaderTiming(TInfoSinkBase &sink);
void enforceRestrictions(const TDependencyGraph &graph);
int numErrors() const { return mNumErrors; } int numErrors() const { return mNumErrors; }
virtual void visitArgument(TGraphArgument* parameter); void visitArgument(TGraphArgument *parameter) override;
virtual void visitSelection(TGraphSelection* selection); void visitSelection(TGraphSelection *selection) override;
virtual void visitLoop(TGraphLoop* loop); void visitLoop(TGraphLoop *loop) override;
virtual void visitLogicalOp(TGraphLogicalOp* logicalOp); void visitLogicalOp(TGraphLogicalOp *logicalOp) override;
private: private:
void beginError(const TIntermNode* node); DISALLOW_COPY_AND_ASSIGN(RestrictFragmentShaderTiming);
void validateUserDefinedFunctionCallUsage(const TDependencyGraph& graph);
bool isSamplingOp(const TIntermAggregate* intermFunctionCall) const;
TInfoSinkBase& mSink; void beginError(const TIntermNode *node);
void validateUserDefinedFunctionCallUsage(const TDependencyGraph &graph);
bool isSamplingOp(const TIntermAggregate *intermFunctionCall) const;
TInfoSinkBase &mSink;
int mNumErrors; int mNumErrors;
typedef std::set<TString> StringSet; typedef std::set<TString> StringSet;
......
...@@ -50,6 +50,9 @@ struct LinkedUniform ...@@ -50,6 +50,9 @@ struct LinkedUniform
// Register "elements" are used for uniform structs in ES3, to appropriately identify single uniforms // Register "elements" are used for uniform structs in ES3, to appropriately identify single uniforms
// inside aggregate types, which are packed according C-like structure rules. // inside aggregate types, which are packed according C-like structure rules.
unsigned int registerElement; unsigned int registerElement;
private:
DISALLOW_COPY_AND_ASSIGN(LinkedUniform);
}; };
// Helper struct representing a single shader uniform block // Helper struct representing a single shader uniform block
...@@ -70,6 +73,9 @@ struct UniformBlock ...@@ -70,6 +73,9 @@ struct UniformBlock
unsigned int psRegisterIndex; unsigned int psRegisterIndex;
unsigned int vsRegisterIndex; unsigned int vsRegisterIndex;
private:
DISALLOW_COPY_AND_ASSIGN(UniformBlock);
}; };
} }
......
...@@ -106,18 +106,21 @@ bool IsRowMajorLayout(const sh::ShaderVariable &var) ...@@ -106,18 +106,21 @@ bool IsRowMajorLayout(const sh::ShaderVariable &var)
struct AttributeSorter struct AttributeSorter
{ {
AttributeSorter(const ProgramImpl::SemanticIndexArray &semanticIndices) AttributeSorter(const ProgramImpl::SemanticIndexArray &semanticIndices)
: originalIndices(semanticIndices) : originalIndices(&semanticIndices)
{ {
} }
bool operator()(int a, int b) bool operator()(int a, int b)
{ {
if (originalIndices[a] == -1) return false; int indexA = (*originalIndices)[a];
if (originalIndices[b] == -1) return true; int indexB = (*originalIndices)[b];
return (originalIndices[a] < originalIndices[b]);
if (indexA == -1) return false;
if (indexB == -1) return true;
return (indexA < indexB);
} }
const ProgramImpl::SemanticIndexArray &originalIndices; const ProgramImpl::SemanticIndexArray *originalIndices;
}; };
} }
......
...@@ -52,6 +52,9 @@ class SwapChainD3D ...@@ -52,6 +52,9 @@ class SwapChainD3D
const GLenum mDepthBufferFormat; const GLenum mDepthBufferFormat;
HANDLE mShareHandle; HANDLE mShareHandle;
private:
DISALLOW_COPY_AND_ASSIGN(SwapChainD3D);
}; };
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment