Frontend: Don't include stdin in the dependency list for an object file

GCC doesn't do this and it semes weird to include a file that we can't
open.

This fixes PR21362.

llvm-svn: 220726
This commit is contained in:
David Majnemer
2014-10-27 22:31:50 +00:00
parent a41521a8bd
commit f0822fb00a

View File

@@ -22,6 +22,7 @@
#include "clang/Lex/Preprocessor.h"
#include "clang/Serialization/ASTReader.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
@@ -113,10 +114,18 @@ void DependencyCollector::maybeAddDependency(StringRef Filename, bool FromModule
Dependencies.push_back(Filename);
}
static bool isSpecialFilename(StringRef Filename) {
return llvm::StringSwitch<bool>(Filename)
.Case("<built-in>", true)
.Case("<stdin>", true)
.Default(false);
}
bool DependencyCollector::sawDependency(StringRef Filename, bool FromModule,
bool IsSystem, bool IsModuleFile,
bool IsMissing) {
return Filename != "<built-in>" && (needSystemDependencies() || !IsSystem);
return !isSpecialFilename(Filename) &&
(needSystemDependencies() || !IsSystem);
}
DependencyCollector::~DependencyCollector() { }
@@ -218,7 +227,7 @@ void DependencyFileGenerator::AttachToASTReader(ASTReader &R) {
/// considered as a dependency.
bool DFGImpl::FileMatchesDepCriteria(const char *Filename,
SrcMgr::CharacteristicKind FileType) {
if (strcmp("<built-in>", Filename) == 0)
if (isSpecialFilename(Filename))
return false;
if (IncludeSystemHeaders)