From e552c3f0d43f22f641afcc5749af7ab6c7affafa Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Wed, 6 Sep 2017 12:31:50 +0200
Subject: [PATCH] Ignore hard-to-fix warnings in local operators

---
 python/dune/perftool/file.py                 | 5 +++++
 python/dune/perftool/generation/__init__.py  | 1 +
 python/dune/perftool/generation/cpp.py       | 1 +
 python/dune/perftool/pdelab/localoperator.py | 6 ++++++
 4 files changed, 13 insertions(+)

diff --git a/python/dune/perftool/file.py b/python/dune/perftool/file.py
index d1b56659..187f32db 100644
--- a/python/dune/perftool/file.py
+++ b/python/dune/perftool/file.py
@@ -59,6 +59,11 @@ def generate_file(filename, tag, content, headerguard=True):
                 f.write(line)
             f.write('\n\n')
 
+        # Add end of file code
+        for eof in retrieve_cache_items('{} and end_of_file'.format(tag)):
+            for line in eof:
+                f.write(line)
+
         # Close headerguard
         if headerguard:
             f.write("\n\n#endif //{}\n".format(macro))
diff --git a/python/dune/perftool/generation/__init__.py b/python/dune/perftool/generation/__init__.py
index c819772e..c8c085c1 100644
--- a/python/dune/perftool/generation/__init__.py
+++ b/python/dune/perftool/generation/__init__.py
@@ -22,6 +22,7 @@ from dune.perftool.generation.cpp import (base_class,
                                           class_member,
                                           constructor_parameter,
                                           dump_accumulate_timer,
+                                          end_of_file,
                                           include_file,
                                           initializer_list,
                                           pre_include,
diff --git a/python/dune/perftool/generation/cpp.py b/python/dune/perftool/generation/cpp.py
index 57dd91c8..0db90171 100644
--- a/python/dune/perftool/generation/cpp.py
+++ b/python/dune/perftool/generation/cpp.py
@@ -12,6 +12,7 @@ import cgen
 preamble = generator_factory(item_tags=("preamble",), counted=True, context_tags="kernel")
 pre_include = generator_factory(item_tags=("file", "pre_include"), context_tags=("filetag",), no_deco=True)
 post_include = generator_factory(item_tags=("file", "post_include"), context_tags=("filetag",), no_deco=True)
+end_of_file = generator_factory(item_tags=("file", "end_of_file"), context_tags=("filetag",), no_deco=True)
 class_member = generator_factory(item_tags=("member",), context_tags=("classtag",), on_store=lambda m: ClassMember(m), counted=True)
 template_parameter = generator_factory(item_tags=("template_param",), context_tags=("classtag",), counted=True)
 class_basename = generator_factory(item_tags=("basename",), context_tags=("classtag",))
diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py
index 90b320db..fcbeadc2 100644
--- a/python/dune/perftool/pdelab/localoperator.py
+++ b/python/dune/perftool/pdelab/localoperator.py
@@ -12,6 +12,7 @@ from dune.perftool.generation import (backend,
                                       constructor_parameter,
                                       domain,
                                       dump_accumulate_timer,
+                                      end_of_file,
                                       generator_factory,
                                       get_backend,
                                       get_global_context_value,
@@ -688,6 +689,11 @@ def generate_localoperator_kernels(formdata, data):
     include_file('dune/pdelab/localoperator/flags.hh', filetag="operatorfile")
     include_file('dune/pdelab/localoperator/pattern.hh', filetag="operatorfile")
 
+    post_include("#pragma GCC diagnostic push", filetag="operatorfile")
+    post_include("#pragma GCC diagnostic ignored \"-Wsign-compare\"", filetag="operatorfile")
+    post_include("#pragma GCC diagnostic ignored \"-Wunused-variable\"", filetag="operatorfile")
+    end_of_file("#pragma GCC diagnostic pop", filetag="operatorfile")
+
     # Trigger this one once early on to assure that template
     # parameters are set in the right order
     localoperator_basename(formdata, data)
-- 
GitLab