0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-05-29 00:03:45 +02:00

ircd: Add assume() convenience wrapping for __builtin_assume().

This commit is contained in:
Jason Volk 2020-10-12 14:27:21 -07:00
parent 6914201335
commit 597f60cf6b
2 changed files with 27 additions and 0 deletions

View file

@ -40,6 +40,7 @@
// Project library interfaces
//
#include "util/assume.h"
#include "util/mask.h"
#include "string_view.h"
#include "vector_view.h"

View file

@ -0,0 +1,26 @@
// The Construct
//
// Copyright (C) The Construct Developers, Authors & Contributors
// Copyright (C) 2016-2020 Jason Volk <jason@zemos.net>
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice is present in all copies. The
// full license for this software is available in the LICENSE file.
#pragma once
#define HAVE_IRCD_UTIL_ASSUME_H
namespace ircd { inline namespace util
{
template<class T>
[[using gnu: always_inline, gnu_inline, artificial]]
extern inline void
assume(T&& expr)
{
assert(static_cast<T&&>(expr));
#if __has_builtin(__builtin_assume)
__builtin_assume(static_cast<T&&>(expr));
#endif
}
}}