forked from OSchip/llvm-project
Support: Avoid std::tie in Support/FileSystem/UniqueID.h, NFC
Running `-fsyntax-only` on UniqueID.h is 2x faster with this patch
(which avoids calling `std::tie` for `operator<`). Since the transitive
includers of this file will go up as `FileEntryRef` gets used in more
places, avoid that compile-time hit. This is a follow-up to
23ed570af1
(suggested by Reid Kleckner).
Also drop the `<tuple>` include from FileSystem.h (which was vestigal
from before UniqueID.h was split out).
Differential Revision: https://reviews.llvm.org/D90471
This commit is contained in:
parent
906b9dbc9d
commit
c17da8676a
|
@ -43,7 +43,6 @@
|
|||
#include <stack>
|
||||
#include <string>
|
||||
#include <system_error>
|
||||
#include <tuple>
|
||||
#include <vector>
|
||||
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#define LLVM_SUPPORT_FILESYSTEM_UNIQUEID_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <tuple>
|
||||
|
||||
namespace llvm {
|
||||
namespace sys {
|
||||
|
@ -34,7 +33,12 @@ public:
|
|||
}
|
||||
bool operator!=(const UniqueID &Other) const { return !(*this == Other); }
|
||||
bool operator<(const UniqueID &Other) const {
|
||||
return std::tie(Device, File) < std::tie(Other.Device, Other.File);
|
||||
/// Don't use std::tie since it bloats the compile time of this header.
|
||||
if (Device < Other.Device)
|
||||
return true;
|
||||
if (Other.Device < Device)
|
||||
return false;
|
||||
return File < Other.File;
|
||||
}
|
||||
|
||||
uint64_t getDevice() const { return Device; }
|
||||
|
|
|
@ -37,6 +37,7 @@ add_llvm_unittest(SupportTests
|
|||
FileOutputBufferTest.cpp
|
||||
FileUtilitiesTest.cpp
|
||||
FormatVariadicTest.cpp
|
||||
FSUniqueIDTest.cpp
|
||||
GlobPatternTest.cpp
|
||||
Host.cpp
|
||||
IndexedAccessorTest.cpp
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
//===- llvm/unittest/Support/FSUniqueIDTest.cpp - Test sys::fs::UniqueID --===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Support/FileSystem/UniqueID.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using namespace llvm;
|
||||
using namespace llvm::sys::fs;
|
||||
|
||||
namespace {
|
||||
|
||||
TEST(FSUniqueIDTest, construct) {
|
||||
EXPECT_EQ(20u, UniqueID(20, 10).getDevice());
|
||||
EXPECT_EQ(10u, UniqueID(20, 10).getFile());
|
||||
}
|
||||
|
||||
TEST(FSUniqueIDTest, equals) {
|
||||
EXPECT_TRUE(UniqueID(20, 10) == UniqueID(20, 10));
|
||||
EXPECT_FALSE(UniqueID(20, 20) == UniqueID(20, 10));
|
||||
EXPECT_FALSE(UniqueID(10, 10) == UniqueID(20, 10));
|
||||
}
|
||||
|
||||
TEST(FSUniqueIDTest, less) {
|
||||
EXPECT_FALSE(UniqueID(20, 2) < UniqueID(20, 2));
|
||||
EXPECT_FALSE(UniqueID(20, 3) < UniqueID(20, 2));
|
||||
EXPECT_FALSE(UniqueID(30, 2) < UniqueID(20, 2));
|
||||
EXPECT_FALSE(UniqueID(30, 2) < UniqueID(20, 40));
|
||||
EXPECT_TRUE(UniqueID(20, 2) < UniqueID(20, 3));
|
||||
EXPECT_TRUE(UniqueID(20, 2) < UniqueID(30, 2));
|
||||
EXPECT_TRUE(UniqueID(20, 40) < UniqueID(30, 2));
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
Loading…
Reference in New Issue