mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 09:09:04 +08:00
Optimize binaries' size by adjusting linkage of constants in headers
When header is included for the first time in translation unit, then preprocessor simply copy-pastes its content. If we define a constant in a header file and this constant has internal linkage then each and every translation unit, which includes this header will have its own copy of this constant. C++17 introduces inline variables, which are meant to allow creation of variables in header files, which do not cause multiple instances. The inline variable has a single instance when: - constexpr is used without static (constexpr implicitly implies inline) - inline is used without static - inline const is used without static (const does not imply internal linkage when used with inline) Signed-off-by: Patryk Wrobel <patryk.wrobel@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
ffe8c75291
commit
c0342a0ab5
@@ -140,7 +140,7 @@ constexpr const char *consumeStringLiteral(ConstStringRef wholeText, const char
|
||||
|
||||
using TokenId = uint32_t;
|
||||
|
||||
static constexpr TokenId invalidTokenId = std::numeric_limits<TokenId>::max();
|
||||
constexpr TokenId invalidTokenId = std::numeric_limits<TokenId>::max();
|
||||
|
||||
struct Token {
|
||||
enum Type : uint8_t { Identifier,
|
||||
@@ -280,7 +280,7 @@ constexpr ConstStringRef inlineCollectionYamlErrorMsg = "NEO::Yaml : Inline coll
|
||||
bool tokenize(ConstStringRef text, LinesCache &outLines, TokensCache &outTokens, std::string &outErrReason, std::string &outWarning);
|
||||
|
||||
using NodeId = uint32_t;
|
||||
static constexpr NodeId invalidNodeID = std::numeric_limits<NodeId>::max();
|
||||
constexpr NodeId invalidNodeID = std::numeric_limits<NodeId>::max();
|
||||
|
||||
struct alignas(32) Node {
|
||||
TokenId key = invalidTokenId;
|
||||
|
||||
Reference in New Issue
Block a user