Commit 3486ec96 by Jamie Madill Committed by Commit Bot

Enable -Wweak-template-vtables.

Needs one suppression due to Clang warning about multiple vtables in a cpp file. Bug: skia:7647 Change-Id: If7f318b7539d23f783b0ef6d6478ce24a0b72bc7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2404746 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
parent ae09e889
......@@ -161,6 +161,7 @@ config("extra_warnings") {
"-Wtautological-type-limit-compare",
"-Wundefined-reinterpret-cast",
"-Wunneeded-internal-declaration",
"-Wweak-template-vtables",
# The below warnings are used by WebKit. We enable them to make rolling
# ANGLE in WebKit easier.
......
......@@ -398,4 +398,14 @@ std::ostream &FmtHex(std::ostream &os, T value)
# define ANGLE_REENABLE_DESTRUCTOR_OVERRIDE_WARNING
#endif
#if defined(__clang__)
# define ANGLE_DISABLE_WEAK_TEMPLATE_VTABLES_WARNING \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wweak-template-vtables\"")
# define ANGLE_REENABLE_WEAK_TEMPLATE_VTABLES_WARNING _Pragma("clang diagnostic pop")
#else
# define ANGLE_DISABLE_WEAK_TEMPLATE_VTABLES_WARNING
# define ANGLE_REENABLE_WEAK_TEMPLATE_VTABLES_WARNING
#endif
#endif // COMMON_DEBUG_H_
......@@ -97,6 +97,8 @@ void TypedResourceManager<ResourceType, ImplT, IDType>::deleteObject(const Conte
}
}
// Unclear why Clang warns about weak vtables in this case.
ANGLE_DISABLE_WEAK_TEMPLATE_VTABLES_WARNING
template class TypedResourceManager<Buffer, BufferManager, BufferID>;
template class TypedResourceManager<Texture, TextureManager, TextureID>;
template class TypedResourceManager<Renderbuffer, RenderbufferManager, RenderbufferID>;
......@@ -104,8 +106,10 @@ template class TypedResourceManager<Sampler, SamplerManager, SamplerID>;
template class TypedResourceManager<Sync, SyncManager, GLuint>;
template class TypedResourceManager<Framebuffer, FramebufferManager, FramebufferID>;
template class TypedResourceManager<ProgramPipeline, ProgramPipelineManager, ProgramPipelineID>;
ANGLE_REENABLE_WEAK_TEMPLATE_VTABLES_WARNING
// BufferManager Implementation.
BufferManager::~BufferManager() = default;
// static
Buffer *BufferManager::AllocateNewObject(rx::GLImplFactory *factory, BufferID handle)
......@@ -212,6 +216,8 @@ void ShaderProgramManager::deleteObject(const Context *context,
// TextureManager Implementation.
TextureManager::~TextureManager() = default;
// static
Texture *TextureManager::AllocateNewObject(rx::GLImplFactory *factory,
TextureID handle,
......@@ -253,6 +259,8 @@ void TextureManager::enableHandleAllocatorLogging()
// RenderbufferManager Implementation.
RenderbufferManager::~RenderbufferManager() = default;
// static
Renderbuffer *RenderbufferManager::AllocateNewObject(rx::GLImplFactory *factory,
RenderbufferID handle)
......@@ -280,6 +288,8 @@ Renderbuffer *RenderbufferManager::getRenderbuffer(RenderbufferID handle) const
// SamplerManager Implementation.
SamplerManager::~SamplerManager() = default;
// static
Sampler *SamplerManager::AllocateNewObject(rx::GLImplFactory *factory, SamplerID handle)
{
......@@ -311,6 +321,8 @@ bool SamplerManager::isSampler(SamplerID sampler) const
// SyncManager Implementation.
SyncManager::~SyncManager() = default;
// static
void SyncManager::DeleteObject(const Context *context, Sync *sync)
{
......@@ -333,6 +345,8 @@ Sync *SyncManager::getSync(GLuint handle) const
// FramebufferManager Implementation.
FramebufferManager::~FramebufferManager() = default;
// static
Framebuffer *FramebufferManager::AllocateNewObject(rx::GLImplFactory *factory,
FramebufferID handle,
......@@ -380,6 +394,8 @@ void FramebufferManager::invalidateFramebufferCompletenessCache() const
// ProgramPipelineManager Implementation.
ProgramPipelineManager::~ProgramPipelineManager() = default;
// static
ProgramPipeline *ProgramPipelineManager::AllocateNewObject(rx::GLImplFactory *factory,
ProgramPipelineID handle)
......
......@@ -142,7 +142,7 @@ class BufferManager : public TypedResourceManager<Buffer, BufferManager, BufferI
static void DeleteObject(const Context *context, Buffer *buffer);
protected:
~BufferManager() override {}
~BufferManager() override;
};
class ShaderProgramManager : public ResourceManagerBase
......@@ -210,7 +210,7 @@ class TextureManager : public TypedResourceManager<Texture, TextureManager, Text
void enableHandleAllocatorLogging();
protected:
~TextureManager() override {}
~TextureManager() override;
};
class RenderbufferManager
......@@ -229,7 +229,7 @@ class RenderbufferManager
static void DeleteObject(const Context *context, Renderbuffer *renderbuffer);
protected:
~RenderbufferManager() override {}
~RenderbufferManager() override;
};
class SamplerManager : public TypedResourceManager<Sampler, SamplerManager, SamplerID>
......@@ -248,7 +248,7 @@ class SamplerManager : public TypedResourceManager<Sampler, SamplerManager, Samp
static void DeleteObject(const Context *context, Sampler *sampler);
protected:
~SamplerManager() override {}
~SamplerManager() override;
};
class SyncManager : public TypedResourceManager<Sync, SyncManager, GLuint>
......@@ -260,7 +260,7 @@ class SyncManager : public TypedResourceManager<Sync, SyncManager, GLuint>
static void DeleteObject(const Context *context, Sync *sync);
protected:
~SyncManager() override {}
~SyncManager() override;
};
class FramebufferManager
......@@ -288,7 +288,7 @@ class FramebufferManager
static void DeleteObject(const Context *context, Framebuffer *framebuffer);
protected:
~FramebufferManager() override {}
~FramebufferManager() override;
};
class ProgramPipelineManager
......@@ -308,7 +308,7 @@ class ProgramPipelineManager
static void DeleteObject(const Context *context, ProgramPipeline *pipeline);
protected:
~ProgramPipelineManager() override {}
~ProgramPipelineManager() override;
};
class MemoryObjectManager : public ResourceManagerBase
......
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