tflite-micro/tensorflow/lite/micro/micro_profiler_interface.h
Advait Jain 333f2c116a
Add virtual destructor to fix build error from -Wnon-virtual-dtor.
Without the current change, (and if we are building with `-Wnon-virtual-dtor`) we will get the following build error:

```
./tensorflow/lite/micro/micro_profiler_interface.h:24:7: error: 'class tflite::MicroProfilerInterface' has virtual functions and accessible non-virtual destructor [-Werror=non-virtual-dtor]
   24 | class MicroProfilerInterface {
      |       ^~~~~~~~~~~~~~~~~~~~~~
```

The `-Wnon-virtual-dtor` warning is applied to internal Google builds but not to the TFLM GitHub builds (prior to this PR) which is why the issue was not caught by the presubmit checks for #1376.

The current change updates the build flags for both bazel and make to add `-Wnon-virtual-dtor` and have the OSS and internal builds be more consistent.

Manually verified that with the new warning, we get the same error on Github as we do internally. And hence we have confidence that the fix here (which passes all the GitHub presubmits) will also pass the internal checks.

BUG=#1336
2022-09-26 16:46:02 +00:00

38 lines
1.3 KiB
C++

/* Copyright 2022 The TensorFlow Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
#ifndef TENSORFLOW_LITE_MICRO_MICRO_PROFILER_INTERFACE_H_
#define TENSORFLOW_LITE_MICRO_MICRO_PROFILER_INTERFACE_H_
#include <cstdint>
namespace tflite {
// Interface class that the TFLM framework relies on for profiling.
class MicroProfilerInterface {
public:
virtual ~MicroProfilerInterface() {}
// Marks the start of a new event and returns an event handle that can be used
// to mark the end of the event via EndEvent.
virtual uint32_t BeginEvent(const char* tag) = 0;
// Marks the end of an event associated with event_handle.
virtual void EndEvent(uint32_t event_handle) = 0;
};
} // namespace tflite
#endif // TENSORFLOW_LITE_MICRO_MICRO_PROFILER_INTERFACE_H_