blob: bf9725bc39fb40e441710a9588e2212f0f5b75c5 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
#ifndef OPENTITAN_SW_DEVICE_LIB_DIF_DIF_WARN_UNUSED_RESULT_H_
#define OPENTITAN_SW_DEVICE_LIB_DIF_DIF_WARN_UNUSED_RESULT_H_
/**
* @file
* @brief Unused Result Warning Macro for DIFs.
*/
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
/**
* Attribute for functions which return errors that must be acknowledged.
*
* This attribute must be used to mark all DIFs which return an error value of
* some kind, to ensure that callers do not accidentally drop the error on the
* ground.
*
* Normally, the standard way to drop such a value on the ground explicitly is
* with the syntax `(void)expr;`, in analogy with the behavior of C++'s
* `[[nodiscard]]` attribute.
* However, GCC does not implement this, so the idiom `if (expr) {}` should be
* used instead, for the time being.
* See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509.
*/
#define DIF_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
#endif // OPENTITAN_SW_DEVICE_LIB_DIF_DIF_WARN_UNUSED_RESULT_H_