From 8983fe2bcf4a4680e11d6132385d3bd5c149f962 Mon Sep 17 00:00:00 2001
From: Clement <clement.brisset@gmail.com>
Date: Fri, 28 Sep 2018 19:24:31 -0700
Subject: [PATCH 1/2] Fix new Mac warnings

---
 domain-server/src/DomainServer.cpp            |  2 +-
 interface/src/raypick/CollisionPick.h         |  2 +-
 interface/src/raypick/PathPointer.h           |  2 +-
 libraries/animation/src/AnimVariant.cpp       |  3 ++-
 .../controllers/src/controllers/InputDevice.h |  2 +-
 .../src/controllers/impl/Conditional.h        |  2 ++
 .../controllers/src/controllers/impl/Filter.h |  2 ++
 .../impl/conditionals/AndConditional.h        |  2 --
 .../impl/conditionals/EndpointConditional.h   |  1 -
 .../impl/conditionals/NotConditional.h        |  1 -
 .../controllers/impl/filters/ClampFilter.h    |  1 -
 .../impl/filters/ConstrainToIntegerFilter.h   |  5 +----
 .../ConstrainToPositiveIntegerFilter.h        |  5 +----
 .../controllers/impl/filters/DeadZoneFilter.h |  1 -
 .../impl/filters/ExponentialSmoothingFilter.h |  1 -
 .../impl/filters/HysteresisFilter.h           |  1 -
 .../controllers/impl/filters/InvertFilter.h   |  3 ---
 .../impl/filters/LowVelocityFilter.h          |  3 +--
 .../src/controllers/impl/filters/NotFilter.h  |  1 -
 .../impl/filters/PostTransformFilter.h        |  3 +--
 .../controllers/impl/filters/PulseFilter.h    |  3 +--
 .../controllers/impl/filters/RotateFilter.h   |  3 +--
 .../controllers/impl/filters/ScaleFilter.h    |  3 +--
 .../impl/filters/TransformFilter.h            |  3 +--
 .../impl/filters/TranslateFilter.h            |  3 +--
 libraries/gpu-gl-common/src/gpu/gl/GLShared.h |  4 ++++
 .../gpu-gl-common/src/gpu/gl/GLTexture.h      |  4 +++-
 libraries/gpu/src/gpu/State.h                 |  6 ++++--
 libraries/graphics/src/graphics/Material.h    |  5 ++++-
 .../src/input-plugins/KeyboardMouseDevice.h   |  1 -
 .../src/model-networking/ModelCache.h         |  2 +-
 libraries/plugins/src/plugins/InputPlugin.h   |  1 -
 libraries/pointers/src/Pick.h                 |  4 ++--
 libraries/render-utils/src/GeometryCache.cpp  |  5 ++++-
 libraries/render-utils/src/MeshPartPayload.h  |  5 ++---
 libraries/render/src/render/Item.h            |  2 +-
 libraries/shared/src/NestableTransformNode.h  |  2 +-
 libraries/shared/src/PrioritySortUtil.h       |  3 ++-
 libraries/shared/src/TransformNode.h          |  3 ++-
 libraries/task/src/task/Task.h                |  2 +-
 plugins/hifiNeuron/src/NeuronPlugin.h         |  1 +
 tests/recording/src/main.cpp                  | 20 +++++++++++++++++++
 42 files changed, 71 insertions(+), 57 deletions(-)

diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp
index 8136bf3b53..b540592d7e 100644
--- a/domain-server/src/DomainServer.cpp
+++ b/domain-server/src/DomainServer.cpp
@@ -2906,7 +2906,7 @@ void DomainServer::updateReplicationNodes(ReplicationServerDirection direction)
         // collect them in a vector to separately remove them with handleKillNode (since eachNode has a read lock and
         // we cannot recursively take the write lock required by handleKillNode)
         std::vector<SharedNodePointer> nodesToKill;
-        nodeList->eachNode([direction, replicationNodesInSettings, replicationDirection, &nodesToKill](const SharedNodePointer& otherNode) {
+        nodeList->eachNode([&direction, &replicationNodesInSettings, &replicationDirection, &nodesToKill](const SharedNodePointer& otherNode) {
             if ((direction == Upstream && NodeType::isUpstream(otherNode->getType()))
                 || (direction == Downstream && NodeType::isDownstream(otherNode->getType()))) {
                 bool nodeInSettings = find(replicationNodesInSettings.cbegin(), replicationNodesInSettings.cend(),
diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h
index 67e39e4d72..92aa415f9e 100644
--- a/interface/src/raypick/CollisionPick.h
+++ b/interface/src/raypick/CollisionPick.h
@@ -76,4 +76,4 @@ protected:
     bool _includeNormals;
 };
 
-#endif // hifi_CollisionPick_h
\ No newline at end of file
+#endif // hifi_CollisionPick_h
diff --git a/interface/src/raypick/PathPointer.h b/interface/src/raypick/PathPointer.h
index 385753a8e8..1aa4165c87 100644
--- a/interface/src/raypick/PathPointer.h
+++ b/interface/src/raypick/PathPointer.h
@@ -27,7 +27,7 @@ class StartEndRenderState {
 public:
     StartEndRenderState() {}
     StartEndRenderState(const OverlayID& startID, const OverlayID& endID);
-    virtual ~StartEndRenderState() {}
+    virtual ~StartEndRenderState() = default;
 
     const OverlayID& getStartID() const { return _startID; }
     const OverlayID& getEndID() const { return _endID; }
diff --git a/libraries/animation/src/AnimVariant.cpp b/libraries/animation/src/AnimVariant.cpp
index 21fe234f7b..d736187e61 100644
--- a/libraries/animation/src/AnimVariant.cpp
+++ b/libraries/animation/src/AnimVariant.cpp
@@ -169,7 +169,8 @@ std::map<QString, QString> AnimVariantMap::toDebugMap() const {
             break;
             */
         default:
-            assert(("invalid AnimVariant::Type", false));
+            // invalid AnimVariant::Type
+            assert(false);
         }
     }
     return result;
diff --git a/libraries/controllers/src/controllers/InputDevice.h b/libraries/controllers/src/controllers/InputDevice.h
index 6c5cc3a065..7479ef7b75 100644
--- a/libraries/controllers/src/controllers/InputDevice.h
+++ b/libraries/controllers/src/controllers/InputDevice.h
@@ -98,7 +98,7 @@ enum Hand {
 class InputDevice {
 public:
     InputDevice(const QString& name) : _name(name) {}
-    virtual ~InputDevice() {}
+    virtual ~InputDevice() = default;
 
     using Pointer = std::shared_ptr<InputDevice>;
 
diff --git a/libraries/controllers/src/controllers/impl/Conditional.h b/libraries/controllers/src/controllers/impl/Conditional.h
index a216c8789f..844a6037be 100644
--- a/libraries/controllers/src/controllers/impl/Conditional.h
+++ b/libraries/controllers/src/controllers/impl/Conditional.h
@@ -30,6 +30,8 @@ namespace controller {
         using Factory = hifi::SimpleFactory<Conditional, QString>;
         using Lambda = std::function<bool()>;
 
+        virtual ~Conditional() = default;
+
         virtual bool satisfied() = 0;
         virtual bool parseParameters(const QJsonValue& parameters) { return true; }
 
diff --git a/libraries/controllers/src/controllers/impl/Filter.h b/libraries/controllers/src/controllers/impl/Filter.h
index cde8f991b7..7afabb4bcb 100644
--- a/libraries/controllers/src/controllers/impl/Filter.h
+++ b/libraries/controllers/src/controllers/impl/Filter.h
@@ -35,6 +35,8 @@ namespace controller {
         using Lambda = std::function<float(float)>;
         using Factory = hifi::SimpleFactory<Filter, QString>;
 
+        virtual ~Filter() = default;
+
         virtual float apply(float value) const = 0;
         virtual Pose apply(Pose value) const = 0;
 
diff --git a/libraries/controllers/src/controllers/impl/conditionals/AndConditional.h b/libraries/controllers/src/controllers/impl/conditionals/AndConditional.h
index 7d8f08ca1c..2299843a24 100644
--- a/libraries/controllers/src/controllers/impl/conditionals/AndConditional.h
+++ b/libraries/controllers/src/controllers/impl/conditionals/AndConditional.h
@@ -24,8 +24,6 @@ public:
     AndConditional(Conditional::Pointer& first, Conditional::Pointer& second)
         : _children({ first, second }) {}
 
-    virtual ~AndConditional() {}
-
     virtual bool satisfied() override;
 
 private:
diff --git a/libraries/controllers/src/controllers/impl/conditionals/EndpointConditional.h b/libraries/controllers/src/controllers/impl/conditionals/EndpointConditional.h
index a6bd7d468d..0ba1347087 100644
--- a/libraries/controllers/src/controllers/impl/conditionals/EndpointConditional.h
+++ b/libraries/controllers/src/controllers/impl/conditionals/EndpointConditional.h
@@ -18,7 +18,6 @@ namespace controller {
 class EndpointConditional : public Conditional {
 public:
     EndpointConditional(Endpoint::Pointer endpoint) : _endpoint(endpoint) {}
-    virtual ~EndpointConditional() {}
     virtual bool satisfied() override { return _endpoint && _endpoint->peek() != 0.0f; }
 private:
     Endpoint::Pointer _endpoint;
diff --git a/libraries/controllers/src/controllers/impl/conditionals/NotConditional.h b/libraries/controllers/src/controllers/impl/conditionals/NotConditional.h
index 3fcd5f49fc..6b19cf9505 100644
--- a/libraries/controllers/src/controllers/impl/conditionals/NotConditional.h
+++ b/libraries/controllers/src/controllers/impl/conditionals/NotConditional.h
@@ -19,7 +19,6 @@ namespace controller {
         using Pointer = std::shared_ptr<NotConditional>;
 
         NotConditional(Conditional::Pointer operand) : _operand(operand) { }
-        virtual ~NotConditional() {}
 
         virtual bool satisfied() override;
 
diff --git a/libraries/controllers/src/controllers/impl/filters/ClampFilter.h b/libraries/controllers/src/controllers/impl/filters/ClampFilter.h
index 6eca00fbe2..b06a43515f 100644
--- a/libraries/controllers/src/controllers/impl/filters/ClampFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/ClampFilter.h
@@ -18,7 +18,6 @@ class ClampFilter : public Filter {
     REGISTER_FILTER_CLASS(ClampFilter);
 public:
     ClampFilter(float min = 0.0, float max = 1.0) : _min(min), _max(max) {};
-    virtual ~ClampFilter() {}
     virtual float apply(float value) const override {
         return glm::clamp(value, _min, _max);
     }
diff --git a/libraries/controllers/src/controllers/impl/filters/ConstrainToIntegerFilter.h b/libraries/controllers/src/controllers/impl/filters/ConstrainToIntegerFilter.h
index bc90121ab0..129e08741d 100644
--- a/libraries/controllers/src/controllers/impl/filters/ConstrainToIntegerFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/ConstrainToIntegerFilter.h
@@ -17,16 +17,13 @@ namespace controller {
 class ConstrainToIntegerFilter : public Filter {
     REGISTER_FILTER_CLASS(ConstrainToIntegerFilter);
 public:
-    ConstrainToIntegerFilter() {};
-    virtual ~ConstrainToIntegerFilter() {}
+    ConstrainToIntegerFilter() = default;
 
     virtual float apply(float value) const override {
         return glm::sign(value);
     }
 
     virtual Pose apply(Pose value) const override { return value; }
-
-protected:
 };
 
 }
diff --git a/libraries/controllers/src/controllers/impl/filters/ConstrainToPositiveIntegerFilter.h b/libraries/controllers/src/controllers/impl/filters/ConstrainToPositiveIntegerFilter.h
index accebef851..8f2140721a 100644
--- a/libraries/controllers/src/controllers/impl/filters/ConstrainToPositiveIntegerFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/ConstrainToPositiveIntegerFilter.h
@@ -17,16 +17,13 @@ namespace controller {
 class ConstrainToPositiveIntegerFilter : public Filter {
     REGISTER_FILTER_CLASS(ConstrainToPositiveIntegerFilter);
 public:
-    ConstrainToPositiveIntegerFilter() {};
-    virtual ~ConstrainToPositiveIntegerFilter() {};
+    ConstrainToPositiveIntegerFilter() = default;
 
     virtual float apply(float value) const override {
         return (value <= 0.0f) ? 0.0f : 1.0f;
     }
 
     virtual Pose apply(Pose value) const override { return value; }
-
-protected:
 };
 
 }
diff --git a/libraries/controllers/src/controllers/impl/filters/DeadZoneFilter.h b/libraries/controllers/src/controllers/impl/filters/DeadZoneFilter.h
index 96c60198e2..d898647126 100644
--- a/libraries/controllers/src/controllers/impl/filters/DeadZoneFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/DeadZoneFilter.h
@@ -18,7 +18,6 @@ class DeadZoneFilter : public Filter {
     REGISTER_FILTER_CLASS(DeadZoneFilter);
 public:
     DeadZoneFilter(float min = 0.0) : _min(min) {};
-    virtual ~DeadZoneFilter() {}
 
     virtual float apply(float value) const override;
 
diff --git a/libraries/controllers/src/controllers/impl/filters/ExponentialSmoothingFilter.h b/libraries/controllers/src/controllers/impl/filters/ExponentialSmoothingFilter.h
index 5b29b6681a..134f57243e 100644
--- a/libraries/controllers/src/controllers/impl/filters/ExponentialSmoothingFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/ExponentialSmoothingFilter.h
@@ -20,7 +20,6 @@ namespace controller {
         ExponentialSmoothingFilter() {}
         ExponentialSmoothingFilter(float rotationConstant, float translationConstant) :
             _translationConstant(translationConstant), _rotationConstant(rotationConstant) {}
-        virtual ~ExponentialSmoothingFilter() {}
 
         float apply(float value) const override { return value; }
         Pose apply(Pose value) const override;
diff --git a/libraries/controllers/src/controllers/impl/filters/HysteresisFilter.h b/libraries/controllers/src/controllers/impl/filters/HysteresisFilter.h
index 4a607d0d5f..4eb563754f 100644
--- a/libraries/controllers/src/controllers/impl/filters/HysteresisFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/HysteresisFilter.h
@@ -18,7 +18,6 @@ class HysteresisFilter : public Filter {
     REGISTER_FILTER_CLASS(HysteresisFilter);
 public:
     HysteresisFilter(float min = 0.25, float max = 0.75);
-    virtual ~HysteresisFilter() {}
     virtual float apply(float value) const override;
 
     virtual Pose apply(Pose value) const override { return value; }
diff --git a/libraries/controllers/src/controllers/impl/filters/InvertFilter.h b/libraries/controllers/src/controllers/impl/filters/InvertFilter.h
index 03b6e9fcb0..9361dfc60b 100644
--- a/libraries/controllers/src/controllers/impl/filters/InvertFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/InvertFilter.h
@@ -19,11 +19,8 @@ class InvertFilter : public ScaleFilter {
 public:
     using ScaleFilter::parseParameters;
     InvertFilter() : ScaleFilter(-1.0f) {}
-    virtual ~InvertFilter() {}
 
     virtual bool parseParameters(const QJsonArray& parameters) { return true; }
-
-private:
 };
 
 }
diff --git a/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h b/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h
index fa75473edf..ac5299dc6f 100644
--- a/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h
@@ -17,10 +17,9 @@ namespace controller {
         REGISTER_FILTER_CLASS(LowVelocityFilter);
 
     public:
-        LowVelocityFilter() {}
+        LowVelocityFilter() = default;
         LowVelocityFilter(float rotationConstant, float translationConstant) :
             _translationConstant(translationConstant), _rotationConstant(rotationConstant) {}
-        virtual ~LowVelocityFilter() {}
 
         float apply(float value) const override { return value; }
         Pose apply(Pose newPose) const override;
diff --git a/libraries/controllers/src/controllers/impl/filters/NotFilter.h b/libraries/controllers/src/controllers/impl/filters/NotFilter.h
index fa52b8e212..ceb7d29de3 100644
--- a/libraries/controllers/src/controllers/impl/filters/NotFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/NotFilter.h
@@ -10,7 +10,6 @@ class NotFilter : public Filter {
     REGISTER_FILTER_CLASS(NotFilter);
 public:
     NotFilter();
-    virtual ~NotFilter() {}
 
     virtual float apply(float value) const override;
     virtual Pose apply(Pose value) const override { return value; }
diff --git a/libraries/controllers/src/controllers/impl/filters/PostTransformFilter.h b/libraries/controllers/src/controllers/impl/filters/PostTransformFilter.h
index 1cb9c0a1bd..3c1cb4f80c 100644
--- a/libraries/controllers/src/controllers/impl/filters/PostTransformFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/PostTransformFilter.h
@@ -19,9 +19,8 @@ namespace controller {
 class PostTransformFilter : public Filter {
     REGISTER_FILTER_CLASS(PostTransformFilter);
 public:
-    PostTransformFilter() { }
+    PostTransformFilter() = default;
     PostTransformFilter(glm::mat4 transform) : _transform(transform) {}
-    virtual ~PostTransformFilter() {}
     virtual float apply(float value) const override { return value; }
     virtual Pose apply(Pose value) const override { return value.postTransform(_transform); }
     virtual bool parseParameters(const QJsonValue& parameters) override { return parseMat4Parameter(parameters, _transform); }
diff --git a/libraries/controllers/src/controllers/impl/filters/PulseFilter.h b/libraries/controllers/src/controllers/impl/filters/PulseFilter.h
index 37cfe34b86..2e0da0efa9 100644
--- a/libraries/controllers/src/controllers/impl/filters/PulseFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/PulseFilter.h
@@ -18,9 +18,8 @@ namespace controller {
 class PulseFilter : public Filter {
     REGISTER_FILTER_CLASS(PulseFilter);
 public:
-    PulseFilter() {}
+    PulseFilter() = default;
     PulseFilter(float interval) : _interval(interval) {}
-    virtual ~PulseFilter() {}
 
     virtual float apply(float value) const override;
 
diff --git a/libraries/controllers/src/controllers/impl/filters/RotateFilter.h b/libraries/controllers/src/controllers/impl/filters/RotateFilter.h
index aecf4f7b7c..c6735f6aa9 100644
--- a/libraries/controllers/src/controllers/impl/filters/RotateFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/RotateFilter.h
@@ -19,9 +19,8 @@ namespace controller {
 class RotateFilter : public Filter {
     REGISTER_FILTER_CLASS(RotateFilter);
 public:
-    RotateFilter() { }
+    RotateFilter() = default;
     RotateFilter(glm::quat rotation) : _rotation(rotation) {}
-    virtual ~RotateFilter() {}
 
     virtual float apply(float value) const override { return value; }
 
diff --git a/libraries/controllers/src/controllers/impl/filters/ScaleFilter.h b/libraries/controllers/src/controllers/impl/filters/ScaleFilter.h
index 84f7cb7e47..936498a7a1 100644
--- a/libraries/controllers/src/controllers/impl/filters/ScaleFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/ScaleFilter.h
@@ -19,9 +19,8 @@ namespace controller {
 class ScaleFilter : public Filter {
     REGISTER_FILTER_CLASS(ScaleFilter);
 public:
-    ScaleFilter() {}
+    ScaleFilter() = default;
     ScaleFilter(float scale) : _scale(scale) {}
-    virtual ~ScaleFilter() {}
 
     virtual float apply(float value) const override {
         return value * _scale;
diff --git a/libraries/controllers/src/controllers/impl/filters/TransformFilter.h b/libraries/controllers/src/controllers/impl/filters/TransformFilter.h
index ccfa9c6c25..a34edaa337 100644
--- a/libraries/controllers/src/controllers/impl/filters/TransformFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/TransformFilter.h
@@ -19,9 +19,8 @@ namespace controller {
 class TransformFilter : public Filter {
     REGISTER_FILTER_CLASS(TransformFilter);
 public:
-    TransformFilter() { }
+    TransformFilter() = default;
     TransformFilter(glm::mat4 transform) : _transform(transform) {}
-    virtual ~TransformFilter() {}
 
     virtual float apply(float value) const override { return value; }
     virtual Pose apply(Pose value) const override { return value.transform(_transform); }
diff --git a/libraries/controllers/src/controllers/impl/filters/TranslateFilter.h b/libraries/controllers/src/controllers/impl/filters/TranslateFilter.h
index a66e1eb4a4..ced9cbc689 100644
--- a/libraries/controllers/src/controllers/impl/filters/TranslateFilter.h
+++ b/libraries/controllers/src/controllers/impl/filters/TranslateFilter.h
@@ -19,9 +19,8 @@ namespace controller {
 class TranslateFilter : public Filter {
     REGISTER_FILTER_CLASS(TranslateFilter);
 public:
-    TranslateFilter() { }
+    TranslateFilter() = default;
     TranslateFilter(glm::vec3 translate) : _translate(translate) {}
-    virtual ~TranslateFilter() {}
 
     virtual float apply(float value) const override { return value; }
     virtual Pose apply(Pose value) const override { return value.transform(glm::translate(_translate)); }
diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLShared.h b/libraries/gpu-gl-common/src/gpu/gl/GLShared.h
index f67439f96a..00301b1c81 100644
--- a/libraries/gpu-gl-common/src/gpu/gl/GLShared.h
+++ b/libraries/gpu-gl-common/src/gpu/gl/GLShared.h
@@ -19,7 +19,11 @@ Q_DECLARE_LOGGING_CATEGORY(gpugllogging)
 Q_DECLARE_LOGGING_CATEGORY(trace_render_gpu_gl)
 Q_DECLARE_LOGGING_CATEGORY(trace_render_gpu_gl_detail)
 
+#if defined(Q_OS_MAC)
+#define BUFFER_OFFSET(bytes) (reinterpret_cast<GLvoid*>(bytes))
+#else
 #define BUFFER_OFFSET(bytes) ((GLubyte*) nullptr + (bytes))
+#endif
 
 namespace gpu { namespace gl { 
 
diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLTexture.h b/libraries/gpu-gl-common/src/gpu/gl/GLTexture.h
index e9a55ad8e2..d3e8f386de 100644
--- a/libraries/gpu-gl-common/src/gpu/gl/GLTexture.h
+++ b/libraries/gpu-gl-common/src/gpu/gl/GLTexture.h
@@ -25,8 +25,10 @@ struct GLFilterMode {
 
 class GLTextureTransferEngine {
 public:
-    virtual ~GLTextureTransferEngine() {}
     using Pointer = std::shared_ptr<GLTextureTransferEngine>;
+
+    virtual ~GLTextureTransferEngine() = default;
+
     /// Called once per frame to perform any require memory management or transfer work
     virtual void manageMemory() = 0;
     virtual void shutdown() = 0;
diff --git a/libraries/gpu/src/gpu/State.h b/libraries/gpu/src/gpu/State.h
index 9bcd69dcdb..e68e829fb5 100755
--- a/libraries/gpu/src/gpu/State.h
+++ b/libraries/gpu/src/gpu/State.h
@@ -118,11 +118,13 @@ public:
         uint8 _function = LESS;
         uint8 _writeMask = true;
         uint8 _enabled = false;
-        uint8 _spare = 0; // _spare is here to to affect alignment
+#if defined(__clang__)
+        __attribute__((unused))
+#endif
+        uint8 _spare = 0; // Padding
     public:
         DepthTest(bool enabled = false, bool writeMask = true, ComparisonFunction func = LESS) :
             _function(func), _writeMask(writeMask), _enabled(enabled) {
-                (void)_spare; // to avoid unusued variable warning
             }
 
         bool isEnabled() const { return _enabled != 0; }
diff --git a/libraries/graphics/src/graphics/Material.h b/libraries/graphics/src/graphics/Material.h
index 63481e0f5e..0db78ab349 100755
--- a/libraries/graphics/src/graphics/Material.h
+++ b/libraries/graphics/src/graphics/Material.h
@@ -320,7 +320,10 @@ public:
 
         float _scattering{ 0.0f }; // Scattering info
 
-        glm::vec2 _spare{ 0.0f };
+#if defined(__clang__)
+        __attribute__((unused))
+#endif
+        glm::vec2 _spare{ 0.0f }; // Padding
 
         uint32_t _key{ 0 }; // a copy of the materialKey
 
diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h
index ce2bea0853..b94acb8b71 100644
--- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h
+++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h
@@ -96,7 +96,6 @@ protected:
     class InputDevice : public controller::InputDevice {
     public:
         InputDevice() : controller::InputDevice("Keyboard") {}
-        virtual ~InputDevice() {}
     private:
         // Device functions
         virtual controller::Input::NamedVector getAvailableInputs() const override;
diff --git a/libraries/model-networking/src/model-networking/ModelCache.h b/libraries/model-networking/src/model-networking/ModelCache.h
index dfe26788f2..8636ece8b6 100644
--- a/libraries/model-networking/src/model-networking/ModelCache.h
+++ b/libraries/model-networking/src/model-networking/ModelCache.h
@@ -36,7 +36,7 @@ public:
 
     Geometry() = default;
     Geometry(const Geometry& geometry);
-    virtual ~Geometry() {}
+    virtual ~Geometry() = default;
 
     // Immutable over lifetime
     using GeometryMeshes = std::vector<std::shared_ptr<const graphics::Mesh>>;
diff --git a/libraries/plugins/src/plugins/InputPlugin.h b/libraries/plugins/src/plugins/InputPlugin.h
index 344f07d64c..23fbb6cac6 100644
--- a/libraries/plugins/src/plugins/InputPlugin.h
+++ b/libraries/plugins/src/plugins/InputPlugin.h
@@ -19,7 +19,6 @@ namespace controller {
 
 class InputPlugin : public Plugin {
 public:
-    virtual ~InputPlugin() {}
     virtual void pluginFocusOutEvent() = 0;
     virtual void pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) = 0;
 
diff --git a/libraries/pointers/src/Pick.h b/libraries/pointers/src/Pick.h
index bde38575ee..55ea7af184 100644
--- a/libraries/pointers/src/Pick.h
+++ b/libraries/pointers/src/Pick.h
@@ -109,7 +109,7 @@ class PickResult {
 public:
     PickResult() {}
     PickResult(const QVariantMap& pickVariant) : pickVariant(pickVariant) {}
-    virtual ~PickResult() {}
+    virtual ~PickResult() = default;
 
     virtual QVariantMap toVariantMap() const {
         return pickVariant;
@@ -135,6 +135,7 @@ class PickQuery : protected ReadWriteLockable {
     Q_GADGET
 public:
     PickQuery(const PickFilter& filter, const float maxDistance, const bool enabled);
+    virtual ~PickQuery() = default;
 
     /**jsdoc
      * Enum for different types of Picks and Pointers.
@@ -245,7 +246,6 @@ template<typename T>
 class Pick : public PickQuery {
 public:
     Pick(const T& mathPick, const PickFilter& filter, const float maxDistance, const bool enabled) : PickQuery(filter, maxDistance, enabled), _mathPick(mathPick) {}
-    virtual ~Pick() {}
 
     virtual T getMathematicalPick() const = 0;
     virtual PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const = 0;
diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp
index 2fe811c97b..1215c9abea 100644
--- a/libraries/render-utils/src/GeometryCache.cpp
+++ b/libraries/render-utils/src/GeometryCache.cpp
@@ -2175,7 +2175,10 @@ public:
     bool isAntiAliased() const { return isFlag(IS_ANTIALIASED); }
 
     Flags _flags = 0;
-    short _spare = 0;
+#if defined(__clang__)
+    __attribute__((unused))
+#endif
+    short _spare = 0; // Padding
 
     int getRaw() const { return *reinterpret_cast<const int*>(this); }
 
diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h
index ceed4b330b..ec520c66a7 100644
--- a/libraries/render-utils/src/MeshPartPayload.h
+++ b/libraries/render-utils/src/MeshPartPayload.h
@@ -26,10 +26,9 @@ class Model;
 
 class MeshPartPayload {
 public:
-
-    MeshPartPayload() {}
+    MeshPartPayload() = default;
     MeshPartPayload(const std::shared_ptr<const graphics::Mesh>& mesh, int partIndex, graphics::MaterialPointer material);
-    virtual ~MeshPartPayload() {}
+    virtual ~MeshPartPayload() = default;
 
     typedef render::Payload<MeshPartPayload> Payload;
     typedef Payload::DataPointer Pointer;
diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h
index 88e85c604a..a87e2031f9 100644
--- a/libraries/render/src/render/Item.h
+++ b/libraries/render/src/render/Item.h
@@ -531,7 +531,7 @@ public:
     typedef UpdateFunctor<T> Updater;
 
     Payload(const DataPointer& data) : _data(data) {}
-    virtual ~Payload() {}
+    virtual ~Payload() = default;
 
     // Payload general interface
     virtual const ItemKey getKey() const override { return payloadGetKey<T>(_data); }
diff --git a/libraries/shared/src/NestableTransformNode.h b/libraries/shared/src/NestableTransformNode.h
index 2f9bc2e985..be017a696d 100644
--- a/libraries/shared/src/NestableTransformNode.h
+++ b/libraries/shared/src/NestableTransformNode.h
@@ -56,4 +56,4 @@ public:
     NestableTransformNode(std::weak_ptr<SpatiallyNestable> spatiallyNestable, int jointIndex) : BaseNestableTransformNode(spatiallyNestable, jointIndex) {};
 };
 
-#endif // hifi_NestableTransformNode_h
\ No newline at end of file
+#endif // hifi_NestableTransformNode_h
diff --git a/libraries/shared/src/PrioritySortUtil.h b/libraries/shared/src/PrioritySortUtil.h
index 4a74c5d212..b11021c48f 100644
--- a/libraries/shared/src/PrioritySortUtil.h
+++ b/libraries/shared/src/PrioritySortUtil.h
@@ -29,7 +29,8 @@ namespace PrioritySortUtil {
 
     class Sortable {
     public:
-        virtual ~Sortable() {}
+        virtual ~Sortable() = default;
+
         virtual glm::vec3 getPosition() const = 0;
         virtual float getRadius() const = 0;
         virtual uint64_t getTimestamp() const = 0;
diff --git a/libraries/shared/src/TransformNode.h b/libraries/shared/src/TransformNode.h
index 1c10bed1c0..c9340bddf0 100644
--- a/libraries/shared/src/TransformNode.h
+++ b/libraries/shared/src/TransformNode.h
@@ -12,7 +12,8 @@
 
 class TransformNode {
 public:
-    virtual ~TransformNode() {}
+    virtual ~TransformNode() = default;
+
     virtual Transform getTransform() = 0;
 };
 
diff --git a/libraries/task/src/task/Task.h b/libraries/task/src/task/Task.h
index 3878c5719b..00e2b1ee88 100644
--- a/libraries/task/src/task/Task.h
+++ b/libraries/task/src/task/Task.h
@@ -175,7 +175,7 @@ public:
     template <class T, class I, class O, class C = Config> using ModelIO = Model<T, C, I, O>;
 
     Job(const ConceptPointer& concept) : _concept(concept) {}
-    virtual ~Job() {}
+    virtual ~Job() = default;
 
     const std::string& getName() const { return _concept->getName(); }
     const Varying getInput() const { return _concept->getInput(); }
diff --git a/plugins/hifiNeuron/src/NeuronPlugin.h b/plugins/hifiNeuron/src/NeuronPlugin.h
index c2909c54fb..c99908d5b7 100644
--- a/plugins/hifiNeuron/src/NeuronPlugin.h
+++ b/plugins/hifiNeuron/src/NeuronPlugin.h
@@ -52,6 +52,7 @@ protected:
         friend class NeuronPlugin;
 
         InputDevice() : controller::InputDevice("Neuron") {}
+        virtual ~InputDevice() = default;
 
         // Device functions
         virtual controller::Input::NamedVector getAvailableInputs() const override;
diff --git a/tests/recording/src/main.cpp b/tests/recording/src/main.cpp
index 1b4e5adf6d..6181906ff0 100644
--- a/tests/recording/src/main.cpp
+++ b/tests/recording/src/main.cpp
@@ -1,8 +1,28 @@
+//
+//  main.cpp
+//  tests/recording/src
+//
+//  Created by Bradley Austin Davis on 11/06/15.
+//  Copyright 2018 High Fidelity, Inc.
+//
+//  Distributed under the Apache License, Version 2.0.
+//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
+//
+
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunused-private-field"
+#endif
+
 #include <QtGlobal>
 #include <QtTest/QtTest>
 #include <QtCore/QTemporaryFile>
 #include <QtCore/QString>
 
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
 #ifdef Q_OS_WIN32
 #include <Windows.h>
 #endif

From 0634efbde9e547c0c6091f31cefdfef8483e1cf2 Mon Sep 17 00:00:00 2001
From: Clement <clement.brisset@gmail.com>
Date: Mon, 1 Oct 2018 16:56:24 -0700
Subject: [PATCH 2/2] CR

---
 libraries/gpu-gl-common/src/gpu/gl/GLShared.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLShared.h b/libraries/gpu-gl-common/src/gpu/gl/GLShared.h
index 00301b1c81..1f40f7b7da 100644
--- a/libraries/gpu-gl-common/src/gpu/gl/GLShared.h
+++ b/libraries/gpu-gl-common/src/gpu/gl/GLShared.h
@@ -19,7 +19,7 @@ Q_DECLARE_LOGGING_CATEGORY(gpugllogging)
 Q_DECLARE_LOGGING_CATEGORY(trace_render_gpu_gl)
 Q_DECLARE_LOGGING_CATEGORY(trace_render_gpu_gl_detail)
 
-#if defined(Q_OS_MAC)
+#if defined(__clang__)
 #define BUFFER_OFFSET(bytes) (reinterpret_cast<GLvoid*>(bytes))
 #else
 #define BUFFER_OFFSET(bytes) ((GLubyte*) nullptr + (bytes))