diff --git a/python/dune/perftool/file.py b/python/dune/perftool/file.py
index d1b566595abb175dfbfa75867d94149ce235c4f1..187f32dbe24f4d00cf6b76581e7b55434298d236 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 c819772e874a6264a05276873d7ff553fb41188b..c8c085c178d7dc2224d1efd1d76efaacf9da5259 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 57dd91c850779284f875df204cfc21414f9ae592..0db90171a584a2237314fbf399e89656c7154a21 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 90b320db0cfb13fabfc2ab31f7389042145ea46e..fcbeadc21fc4dfa7a8f4d06029eb3c938de50b61 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)