[libc-commits] [libc] c1f1aab - [libc] Fix statfs_to_statvfs conversion function on rv32 (#98098)
via libc-commits
libc-commits at lists.llvm.org
Mon Jul 8 17:08:31 PDT 2024
Author: Mikhail R. Gadelha
Date: 2024-07-08T17:08:28-07:00
New Revision: c1f1aab5d5d4d2a9d86e9e3e1794d609749a15f0
URL: https://github.com/llvm/llvm-project/commit/c1f1aab5d5d4d2a9d86e9e3e1794d609749a15f0
DIFF: https://github.com/llvm/llvm-project/commit/c1f1aab5d5d4d2a9d86e9e3e1794d609749a15f0.diff
LOG: [libc] Fix statfs_to_statvfs conversion function on rv32 (#98098)
Added:
Modified:
libc/src/sys/statvfs/linux/statfs_utils.h
Removed:
################################################################################
diff --git a/libc/src/sys/statvfs/linux/statfs_utils.h b/libc/src/sys/statvfs/linux/statfs_utils.h
index 606786a571838..52f810d702d2a 100644
--- a/libc/src/sys/statvfs/linux/statfs_utils.h
+++ b/libc/src/sys/statvfs/linux/statfs_utils.h
@@ -77,14 +77,15 @@ LIBC_INLINE struct statvfs statfs_to_statvfs(const LinuxStatFs &in) {
struct statvfs out;
out.f_bsize = in.f_bsize;
out.f_frsize = in.f_frsize;
- out.f_blocks = in.f_blocks;
- out.f_bfree = in.f_bfree;
- out.f_bavail = in.f_bavail;
- out.f_files = in.f_files;
- out.f_ffree = in.f_ffree;
- out.f_favail = in.f_ffree;
- out.f_fsid = in.f_fsid.val[0] |
- static_cast<decltype(out.f_fsid)>(in.f_fsid.val[1]) << 32;
+ out.f_blocks = static_cast<decltype(out.f_blocks)>(in.f_blocks);
+ out.f_bfree = static_cast<decltype(out.f_bfree)>(in.f_bfree);
+ out.f_bavail = static_cast<decltype(out.f_bavail)>(in.f_bavail);
+ out.f_files = static_cast<decltype(out.f_files)>(in.f_files);
+ out.f_ffree = static_cast<decltype(out.f_ffree)>(in.f_ffree);
+ out.f_favail = static_cast<decltype(out.f_favail)>(in.f_ffree);
+ out.f_fsid = in.f_fsid.val[0];
+ if constexpr (sizeof(decltype(out.f_fsid)) == sizeof(uint64_t))
+ out.f_fsid |= static_cast<decltype(out.f_fsid)>(in.f_fsid.val[1]) << 32;
out.f_flag = in.f_flags;
out.f_namemax = in.f_namelen;
return out;
More information about the libc-commits
mailing list