[AIX][z/OS][Support] Provide alternate no-op mapped_file_region::dontNeedImpl impleme...
authorDavid Tenty <daltenty@ibm.com>
Tue, 4 Jan 2022 16:42:18 +0000 (10:42 -0600)
committerDavid Tenty <daltenty@ibm.com>
Wed, 5 Jan 2022 15:21:01 +0000 (10:21 -0500)
mapped_file_region::dontNeedImpl added in D116366 calls madvise, which
causes problems for z/OS and AIX.

For z/OS, we don't have either madvise, so treat this as a no-op, same
as Windows does.

For AIX, it doesn't have any effect, doesn't have a standardized
signature, and it needs certain feature test macros (i.e. _ALL_SOURCE)
we don't set by default for LLVM on AIX, so just make it a no-op too.

Differential Revision: https://reviews.llvm.org/D116603

llvm/lib/Support/Unix/Path.inc

index a18650a..97b280b 100644 (file)
@@ -872,8 +872,13 @@ void mapped_file_region::unmapImpl() {
 
 void mapped_file_region::dontNeedImpl() {
   assert(Mode == mapped_file_region::readonly);
+#if defined(__MVS__) || defined(_AIX)
+  // If we don't have madvise, or it isn't beneficial, treat this as a no-op.
+  return;
+#else
   if (Mapping)
     ::madvise(Mapping, Size, MADV_DONTNEED);
+#endif
 }
 
 int mapped_file_region::alignment() {