yvvan updated this revision to Diff 149684.
yvvan added a comment.
fix indentation in unit-test
https://reviews.llvm.org/D47460
Files:
include/clang/Basic/FileManager.h
lib/Basic/FileManager.cpp
lib/Frontend/ASTUnit.cpp
unittests/Frontend/ASTUnitTest.cpp
Index: unittests/Frontend/ASTUnitTest.cpp
===================================================================
--- unittests/Frontend/ASTUnitTest.cpp
+++ unittests/Frontend/ASTUnitTest.cpp
@@ -18,6 +18,33 @@
#include "llvm/Support/ToolOutputFile.h"
#include "gtest/gtest.h"
+#define CREATE_AST_UNIT(isVolatile) \
+ int FD; \
+ llvm::SmallString<256> InputFileName; \
+ ASSERT_FALSE(llvm::sys::fs::createTemporaryFile("ast-unit", "cpp", FD, \
+ InputFileName)); \
+ ToolOutputFile input_file(InputFileName, FD); \
+ input_file.os() << ""; \
+ \
+ const char *Args[] = {"clang", "-xc++", InputFileName.c_str()}; \
+ \
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags = \
+ CompilerInstance::createDiagnostics(new DiagnosticOptions()); \
+ \
+ std::shared_ptr<CompilerInvocation> CInvok = \
+ createInvocationFromCommandLine(Args, Diags); \
+ \
+ if (!CInvok) \
+ FAIL() << "could not create compiler invocation"; \
+ \
+ FileManager *FileMgr = \
+ new FileManager(FileSystemOptions(), vfs::getRealFileSystem()); \
+ auto PCHContainerOps = std::make_shared<PCHContainerOperations>(); \
+ \
+ std::unique_ptr<ASTUnit> AST = ASTUnit::LoadFromCompilerInvocation( \
+ CInvok, PCHContainerOps, Diags, FileMgr, false, false, 0, TU_Complete, \
+ false, false, isVolatile);
+
using namespace llvm;
using namespace clang;
@@ -38,29 +65,7 @@
EXPECT_TRUE(PolicyWithDefaultLangOpt.UseVoidForZeroParams);
}
- int FD;
- llvm::SmallString<256> InputFileName;
- ASSERT_FALSE(llvm::sys::fs::createTemporaryFile("ast-unit", "cpp", FD, InputFileName));
- ToolOutputFile input_file(InputFileName, FD);
- input_file.os() << "";
-
- const char* Args[] = {"clang", "-xc++", InputFileName.c_str()};
-
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
-
- std::shared_ptr<CompilerInvocation> CInvok =
- createInvocationFromCommandLine(Args, Diags);
-
- if (!CInvok)
- FAIL() << "could not create compiler invocation";
-
- FileManager *FileMgr =
- new FileManager(FileSystemOptions(), vfs::getRealFileSystem());
- auto PCHContainerOps = std::make_shared<PCHContainerOperations>();
-
- std::unique_ptr<ASTUnit> AST = ASTUnit::LoadFromCompilerInvocation(
- CInvok, PCHContainerOps, Diags, FileMgr);
+ CREATE_AST_UNIT(false);
if (!AST)
FAIL() << "failed to create ASTUnit";
@@ -84,4 +89,17 @@
EXPECT_FALSE(AU->getASTContext().getPrintingPolicy().UseVoidForZeroParams);
}
+TEST(ASTUnit, GetBufferForFileMemoryMapping) {
+ CREATE_AST_UNIT(true);
+
+ if (!AST)
+ FAIL() << "failed to create ASTUnit";
+
+ std::unique_ptr<llvm::MemoryBuffer> memoryBuffer =
+ AST->getBufferForFile(InputFileName);
+
+ EXPECT_NE(memoryBuffer->getBufferKind(),
+ llvm::MemoryBuffer::MemoryBuffer_MMap);
+}
+
} // anonymous namespace
Index: lib/Frontend/ASTUnit.cpp
===================================================================
--- lib/Frontend/ASTUnit.cpp
+++ lib/Frontend/ASTUnit.cpp
@@ -156,7 +156,8 @@
static std::unique_ptr<llvm::MemoryBuffer>
getBufferForFileHandlingRemapping(const CompilerInvocation &Invocation,
vfs::FileSystem *VFS,
- StringRef FilePath) {
+ StringRef FilePath,
+ bool isVolatile) {
const auto &PreprocessorOpts = Invocation.getPreprocessorOpts();
// Try to determine if the main file has been remapped, either from the
@@ -176,7 +177,7 @@
llvm::sys::fs::UniqueID MID = MPathStatus->getUniqueID();
if (MainFileID == MID) {
// We found a remapping. Try to load the resulting, remapped source.
- BufferOwner = valueOrNull(VFS->getBufferForFile(RF.second));
+ BufferOwner = valueOrNull(VFS->getBufferForFile(RF.second, -1, true, isVolatile));
if (!BufferOwner)
return nullptr;
}
@@ -201,7 +202,7 @@
// If the main source file was not remapped, load it now.
if (!Buffer && !BufferOwner) {
- BufferOwner = valueOrNull(VFS->getBufferForFile(FilePath));
+ BufferOwner = valueOrNull(VFS->getBufferForFile(FilePath, -1, true, isVolatile));
if (!BufferOwner)
return nullptr;
}
@@ -707,7 +708,7 @@
std::unique_ptr<llvm::MemoryBuffer>
ASTUnit::getBufferForFile(StringRef Filename, std::string *ErrorStr) {
assert(FileMgr);
- auto Buffer = FileMgr->getBufferForFile(Filename);
+ auto Buffer = FileMgr->getBufferForFile(Filename, UserFilesAreVolatile);
if (Buffer)
return std::move(*Buffer);
if (ErrorStr)
@@ -1278,7 +1279,7 @@
PreambleInvocationIn.getFrontendOpts().Inputs[0].getFile();
std::unique_ptr<llvm::MemoryBuffer> MainFileBuffer =
getBufferForFileHandlingRemapping(PreambleInvocationIn, VFS.get(),
- MainFilePath);
+ MainFilePath, UserFilesAreVolatile);
if (!MainFileBuffer)
return nullptr;
Index: lib/Basic/FileManager.cpp
===================================================================
--- lib/Basic/FileManager.cpp
+++ lib/Basic/FileManager.cpp
@@ -450,13 +450,13 @@
}
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
-FileManager::getBufferForFile(StringRef Filename) {
+FileManager::getBufferForFile(StringRef Filename, bool isVolatile) {
if (FileSystemOpts.WorkingDir.empty())
- return FS->getBufferForFile(Filename);
+ return FS->getBufferForFile(Filename, -1, true, isVolatile);
SmallString<128> FilePath(Filename);
FixupRelativePath(FilePath);
- return FS->getBufferForFile(FilePath.c_str());
+ return FS->getBufferForFile(FilePath.c_str(), -1, true, isVolatile);
}
/// getStatValue - Get the 'stat' information for the specified path,
Index: include/clang/Basic/FileManager.h
===================================================================
--- include/clang/Basic/FileManager.h
+++ include/clang/Basic/FileManager.h
@@ -239,7 +239,7 @@
getBufferForFile(const FileEntry *Entry, bool isVolatile = false,
bool ShouldCloseOpenFile = true);
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
- getBufferForFile(StringRef Filename);
+ getBufferForFile(StringRef Filename, bool isVolatile = false);
/// Get the 'stat' information for the given \p Path.
///
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits