[llvm] r314312 - [Support] mapped_file_region: store size as size_t
Roman Lebedev via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 27 08:59:16 PDT 2017
Author: lebedevri
Date: Wed Sep 27 08:59:16 2017
New Revision: 314312
URL: http://llvm.org/viewvc/llvm-project?rev=314312&view=rev
Log:
[Support] mapped_file_region: store size as size_t
Summary:
Found when testing stage-2 build with D38101.
```
In file included from /build/llvm/lib/Support/Path.cpp:1045:
/build/llvm/lib/Support/Unix/Path.inc:648:14: error: comparison 'uint64_t' (aka 'unsigned long') > 18446744073709551615 is always false [-Werror,-Wtautological-constant-compare]
if (length > std::numeric_limits<size_t>::max()) {
~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
`size_t` is `uint64_t` here, apparently, thus any `uint64_t` value
always fits into `size_t`.
Initial patch was to use some preprocessor logic to
not check if the size is known to fit at compile time.
But Zachary Turner suggested using this approach.
Reviewers: Bigcheese, rafael, zturner, mehdi_amini
Reviewed by (via email): zturner
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D38132
Modified:
llvm/trunk/include/llvm/Support/FileSystem.h
llvm/trunk/lib/Support/Unix/Path.inc
Modified: llvm/trunk/include/llvm/Support/FileSystem.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/FileSystem.h?rev=314312&r1=314311&r2=314312&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/FileSystem.h (original)
+++ llvm/trunk/include/llvm/Support/FileSystem.h Wed Sep 27 08:59:16 2017
@@ -745,7 +745,7 @@ public:
private:
/// Platform-specific mapping state.
- uint64_t Size;
+ size_t Size;
void *Mapping;
std::error_code init(int FD, uint64_t Offset, mapmode Mode);
@@ -758,12 +758,12 @@ public:
/// \param fd An open file descriptor to map. mapped_file_region takes
/// ownership if closefd is true. It must have been opended in the correct
/// mode.
- mapped_file_region(int fd, mapmode mode, uint64_t length, uint64_t offset,
+ mapped_file_region(int fd, mapmode mode, size_t length, uint64_t offset,
std::error_code &ec);
~mapped_file_region();
- uint64_t size() const;
+ size_t size() const;
char *data() const;
/// Get a const view of the data. Modifying this memory has undefined
Modified: llvm/trunk/lib/Support/Unix/Path.inc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Unix/Path.inc?rev=314312&r1=314311&r2=314312&view=diff
==============================================================================
--- llvm/trunk/lib/Support/Unix/Path.inc (original)
+++ llvm/trunk/lib/Support/Unix/Path.inc Wed Sep 27 08:59:16 2017
@@ -641,15 +641,9 @@ std::error_code mapped_file_region::init
return std::error_code();
}
-mapped_file_region::mapped_file_region(int fd, mapmode mode, uint64_t length,
+mapped_file_region::mapped_file_region(int fd, mapmode mode, size_t length,
uint64_t offset, std::error_code &ec)
: Size(length), Mapping() {
- // Make sure that the requested size fits within SIZE_T.
- if (length > std::numeric_limits<size_t>::max()) {
- ec = make_error_code(errc::invalid_argument);
- return;
- }
-
ec = init(fd, offset, mode);
if (ec)
Mapping = nullptr;
More information about the llvm-commits
mailing list