From 25b0674d0f2a00f402d7d8ddcc4ce827b41254c7 Mon Sep 17 00:00:00 2001
From: Ben Cumming <louncharf@gmail.com>
Date: Mon, 18 Dec 2017 15:40:58 +0100
Subject: [PATCH] Fix Clang warnings with modcc (#412)

* Fix various compiler warnings in `modcc` when using Apple Clang.
---
 modcc/cexpr_emit.hpp   | 12 ++++++------
 modcc/cprinter.hpp     | 32 ++++++++++++++++----------------
 modcc/cudaprinter.hpp  |  1 -
 modcc/module.cpp       |  5 +----
 modcc/simd_printer.hpp |  4 +++-
 5 files changed, 26 insertions(+), 28 deletions(-)

diff --git a/modcc/cexpr_emit.hpp b/modcc/cexpr_emit.hpp
index c9096a0a..e52c956b 100644
--- a/modcc/cexpr_emit.hpp
+++ b/modcc/cexpr_emit.hpp
@@ -12,13 +12,13 @@ public:
         out_(out), fallback_(fallback)
     {}
 
-    virtual void visit(Expression* e) { e->accept(fallback_); }
+    void visit(Expression* e) override { e->accept(fallback_); }
 
-    virtual void visit(UnaryExpression *e)      override;
-    virtual void visit(BinaryExpression *e)     override;
-    virtual void visit(AssignmentExpression *e) override;
-    virtual void visit(PowBinaryExpression *e)  override;
-    virtual void visit(NumberExpression *e)     override;
+    void visit(UnaryExpression *e)      override;
+    void visit(BinaryExpression *e)     override;
+    void visit(AssignmentExpression *e) override;
+    void visit(PowBinaryExpression *e)  override;
+    void visit(NumberExpression *e)     override;
 
 protected:
     std::ostream& out_;
diff --git a/modcc/cprinter.hpp b/modcc/cprinter.hpp
index 2da740fb..9c636322 100644
--- a/modcc/cprinter.hpp
+++ b/modcc/cprinter.hpp
@@ -11,22 +11,22 @@ public:
     CPrinter() {}
     explicit CPrinter(Module &m): module_(&m) {}
 
-    virtual void visit(Expression *e)           override;
-    virtual void visit(UnaryExpression *e)      override;
-    virtual void visit(BinaryExpression *e)     override;
-    virtual void visit(NumberExpression *e)     override;
-    virtual void visit(VariableExpression *e)   override;
-    virtual void visit(Symbol *e)               override;
-    virtual void visit(LocalVariable *e)        override;
-    virtual void visit(IndexedVariable *e)      override;
-    virtual void visit(CellIndexedVariable *e)  override;
-    virtual void visit(IdentifierExpression *e) override;
-    virtual void visit(CallExpression *e)       override;
-    virtual void visit(ProcedureExpression *e)  override;
-    virtual void visit(APIMethod *e)            override;
-    virtual void visit(LocalDeclaration *e)     override;
-    virtual void visit(BlockExpression *e)      override;
-    virtual void visit(IfExpression *e)         override;
+    void visit(Expression *e)           override;
+    void visit(UnaryExpression *e)      override;
+    void visit(BinaryExpression *e)     override;
+    void visit(NumberExpression *e)     override;
+    void visit(VariableExpression *e)   override;
+    void visit(Symbol *e)               override;
+    void visit(LocalVariable *e)        override;
+    void visit(IndexedVariable *e)      override;
+    void visit(CellIndexedVariable *e)  override;
+    void visit(IdentifierExpression *e) override;
+    void visit(CallExpression *e)       override;
+    void visit(ProcedureExpression *e)  override;
+    void visit(APIMethod *e)            override;
+    void visit(LocalDeclaration *e)     override;
+    void visit(BlockExpression *e)      override;
+    void visit(IfExpression *e)         override;
 
     std::string text() const {
         return text_.str();
diff --git a/modcc/cudaprinter.hpp b/modcc/cudaprinter.hpp
index d016f236..af7d9d13 100644
--- a/modcc/cudaprinter.hpp
+++ b/modcc/cudaprinter.hpp
@@ -108,7 +108,6 @@ private:
 
     std::string module_name_;
     Module *module_ = nullptr;
-    tok parent_op_ = tok::eq;
 
     TextBuffer interface_;
     TextBuffer impl_;
diff --git a/modcc/module.cpp b/modcc/module.cpp
index aa8b33ae..85030677 100644
--- a/modcc/module.cpp
+++ b/modcc/module.cpp
@@ -34,15 +34,12 @@ class NrnCurrentRewriter: public BlockRewriterBase {
         return ionKind::none;
     }
 
-    moduleKind kind_;
     bool has_current_update_ = false;
     std::set<std::string> ion_current_vars_;
 
 public:
     using BlockRewriterBase::visit;
 
-    explicit NrnCurrentRewriter(moduleKind kind): kind_(kind) {}
-
     virtual void finalize() override {
         if (has_current_update_) {
             // Initialize current_ as first statement.
@@ -334,7 +331,7 @@ bool Module::semantic() {
         //..........................................................
         // nrn_current : update contributions to currents
         //..........................................................
-        NrnCurrentRewriter nrn_current_rewriter(kind());
+        NrnCurrentRewriter nrn_current_rewriter;
         breakpoint->accept(&nrn_current_rewriter);
         auto nrn_current_block = nrn_current_rewriter.as_block();
         if (!nrn_current_block) {
diff --git a/modcc/simd_printer.hpp b/modcc/simd_printer.hpp
index caca3853..8208632b 100644
--- a/modcc/simd_printer.hpp
+++ b/modcc/simd_printer.hpp
@@ -16,6 +16,8 @@
 
 template <simdKind Arch>
 class SimdPrinter: public CPrinter {
+    using CPrinter::visit;
+
 public:
     SimdPrinter(): cprinter_(make_unique<CPrinter>())
     {}
@@ -32,8 +34,8 @@ public:
     void visit(UnaryExpression *e) override;
     void visit(BinaryExpression *e) override;
     void visit(PowBinaryExpression *e) override;
-    void visit(ProcedureExpression *e) override;
     void visit(AssignmentExpression *e) override;
+    void visit(ProcedureExpression *e) override;
     void visit(VariableExpression *e) override;
     void visit(LocalVariable *e) override {
         const std::string& name = e->name();
-- 
GitLab