/// Returns the modification time of the given file.
/// @{
- llvm::sys::TimePoint<> GetModificationTime(const FileSpec &file_spec) const;
- llvm::sys::TimePoint<> GetModificationTime(const llvm::Twine &path) const;
+ llvm::sys::TimePoint<>
+ GetModificationTime(const FileSpec &file_spec,
+ bool nanosecond_precision = true) const;
+ llvm::sys::TimePoint<>
+ GetModificationTime(const llvm::Twine &path,
+ bool nanosecond_precision = true) const;
/// @}
/// Returns the on-disk size of the given file in bytes.
}
sys::TimePoint<>
-FileSystem::GetModificationTime(const FileSpec &file_spec) const {
- return GetModificationTime(file_spec.GetPath());
+FileSystem::GetModificationTime(const FileSpec &file_spec,
+ bool nanosecond_precision) const {
+ return GetModificationTime(file_spec.GetPath(), nanosecond_precision);
}
-sys::TimePoint<> FileSystem::GetModificationTime(const Twine &path) const {
+sys::TimePoint<>
+FileSystem::GetModificationTime(const Twine &path,
+ bool nanosecond_precision) const {
ErrorOr<vfs::Status> status = m_fs->status(path);
if (!status)
return sys::TimePoint<>();
- return status->getLastModificationTime();
+ if (nanosecond_precision)
+ return status->getLastModificationTime();
+ else
+ return std::chrono::time_point_cast<std::chrono::seconds>(
+ status->getLastModificationTime());
}
uint64_t FileSystem::GetByteSize(const FileSpec &file_spec) const {
FileSpec oso_file(oso_path);
ConstString oso_object;
if (FileSystem::Instance().Exists(oso_file)) {
- auto oso_mod_time = FileSystem::Instance().GetModificationTime(oso_file);
+ auto oso_mod_time = FileSystem::Instance().GetModificationTime(
+ oso_file, /*nanosecond_precision=*/false);
if (oso_mod_time != comp_unit_info->oso_mod_time) {
obj_file->GetModule()->ReportError(
"debug map object file '%s' has changed (actual time is "