Revert r151800, which was committed without review and has correctness issues.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151804 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/Basic/DiagnosticLexKinds.td b/include/clang/Basic/DiagnosticLexKinds.td
index d7ed55a..46e0beb 100644
--- a/include/clang/Basic/DiagnosticLexKinds.td
+++ b/include/clang/Basic/DiagnosticLexKinds.td
@@ -292,15 +292,6 @@
ExtWarn<"__has_warning expected option name (e.g. \"-Wundef\")">,
InGroup<MalformedWarningCheck>;
-def warn_pragma_include_alias_mismatch :
- ExtWarn<"pragma include_alias requires matching include directives "
- "(e.g include_alias(\"foo.h\", \"bar.h\") or "
- "include_alias(<foo.h>, <bar.h>))">,
- InGroup<UnknownPragmas>;
-def warn_pragma_include_alias_expected :
- ExtWarn<"pragma include_alias expected '%0'">,
- InGroup<UnknownPragmas>;
-
def err__Pragma_malformed : Error<
"_Pragma takes a parenthesized string literal">;
def err_pragma_comment_malformed : Error<
diff --git a/include/clang/Lex/HeaderSearch.h b/include/clang/Lex/HeaderSearch.h
index f4b6876..84bb37d 100644
--- a/include/clang/Lex/HeaderSearch.h
+++ b/include/clang/Lex/HeaderSearch.h
@@ -154,9 +154,6 @@
llvm::StringMap<const DirectoryEntry *, llvm::BumpPtrAllocator>
FrameworkMap;
- llvm::StringMap<std::pair<StringRef, bool>, llvm::BumpPtrAllocator>
- IncludeAliasMap;
-
/// HeaderMaps - This is a mapping from FileEntry -> HeaderMap, uniquing
/// headermaps. This vector owns the headermap.
std::vector<std::pair<const FileEntry*, const HeaderMap*> > HeaderMaps;
@@ -220,25 +217,6 @@
SystemDirIdx++;
}
- /// AddHeaderMapping -- Map the source include name to the dest include name
- void AddHeaderMapping(const StringRef& Source, const StringRef& Dest,
- bool IsAngled) {
- IncludeAliasMap[Source] = std::make_pair(Dest, IsAngled);
- }
-
- StringRef MapHeader(const StringRef& Source, bool isAngled) {
- // Do any filename replacements before anything else
- llvm::StringMap<std::pair<StringRef,bool> >::const_iterator iter =
- IncludeAliasMap.find(Source);
- if (iter != IncludeAliasMap.end()) {
- // If the angling matches, then we've found a replacement
- if (iter->second.second == isAngled) {
- return iter->second.first;
- }
- }
- return Source;
- }
-
/// \brief Set the path to the module cache.
void setModuleCachePath(StringRef CachePath) {
ModuleCachePath = CachePath;
diff --git a/include/clang/Lex/Preprocessor.h b/include/clang/Lex/Preprocessor.h
index 9ee9e82..feed6a8 100644
--- a/include/clang/Lex/Preprocessor.h
+++ b/include/clang/Lex/Preprocessor.h
@@ -1262,7 +1262,6 @@
void HandlePragmaMessage(Token &MessageTok);
void HandlePragmaPushMacro(Token &Tok);
void HandlePragmaPopMacro(Token &Tok);
- void HandlePragmaIncludeAlias(Token &Tok);
IdentifierInfo *ParsePragmaPushOrPopMacro(Token &Tok);
// Return true and store the first token only if any CommentHandler
diff --git a/lib/Lex/PPDirectives.cpp b/lib/Lex/PPDirectives.cpp
index 4839dfa..0364e42 100644
--- a/lib/Lex/PPDirectives.cpp
+++ b/lib/Lex/PPDirectives.cpp
@@ -1304,9 +1304,6 @@
PragmaARCCFCodeAuditedLoc = SourceLocation();
}
- // Map the filename
- Filename = HeaderInfo.MapHeader(Filename, isAngled);
-
// Search include directories.
const DirectoryLookup *CurDir;
SmallString<1024> SearchPath;
diff --git a/lib/Lex/Pragma.cpp b/lib/Lex/Pragma.cpp
index 7a6ab7d..503fffe 100644
--- a/lib/Lex/Pragma.cpp
+++ b/lib/Lex/Pragma.cpp
@@ -663,101 +663,6 @@
}
}
-void Preprocessor::HandlePragmaIncludeAlias(Token& Tok) {
- // We will either get a quoted filename or a bracketed filename, and we
- // have to track which we got. The first filename is the source name,
- // and the second name is the mapped filename. If the first is quoted,
- // the second must be as well (cannot mix and match quotes and brackets).
- SourceLocation Loc = Tok.getLocation();
-
- // Get the open paren
- Lex(Tok);
- if (Tok.isNot(tok::l_paren)) {
- Diag(Tok, diag::warn_pragma_include_alias_expected) << "(";
- return;
- }
-
- // We expect either a quoted string literal, or a bracketed name
- Token SourceFilenameTok;
- CurPPLexer->LexIncludeFilename(SourceFilenameTok);
- if (SourceFilenameTok.is(tok::eod)) {
- // The diagnostic has already been handled
- return;
- }
-
- StringRef SourceFileName;
- SmallString<128> FileNameBuffer;
- if (SourceFilenameTok.is(tok::string_literal) ||
- SourceFilenameTok.is(tok::angle_string_literal)) {
- SourceFileName = getSpelling(SourceFilenameTok, FileNameBuffer);
- } else if (SourceFilenameTok.is(tok::less)) {
- // This could be a path instead of just a name
- FileNameBuffer.push_back('<');
- SourceLocation End;
- if (ConcatenateIncludeName(FileNameBuffer, End))
- return; // Diagnostic already emitted
- SourceFileName = FileNameBuffer.str();
- } else {
- Diag(Tok, diag::warn_pragma_include_alias_expected) << "include filename";
- return;
- }
- FileNameBuffer.clear();
-
- // Now we expect a comma, followed by another include name
- Lex(Tok);
- if (Tok.isNot(tok::comma)) {
- Diag(Tok, diag::warn_pragma_include_alias_expected) << ",";
- return;
- }
-
- Token ReplaceFilenameTok;
- CurPPLexer->LexIncludeFilename(ReplaceFilenameTok);
- if (ReplaceFilenameTok.is(tok::eod)) {
- // The diagnostic has already been handled
- return;
- }
-
- StringRef ReplaceFileName;
- if (ReplaceFilenameTok.is(tok::string_literal) ||
- ReplaceFilenameTok.is(tok::angle_string_literal)) {
- ReplaceFileName = getSpelling(ReplaceFilenameTok, FileNameBuffer);
- } else if (ReplaceFilenameTok.is(tok::less)) {
- // This could be a path instead of just a name
- FileNameBuffer.push_back('<');
- SourceLocation End;
- if (ConcatenateIncludeName(FileNameBuffer, End))
- return; // Diagnostic already emitted
- ReplaceFileName = FileNameBuffer.str();
- } else {
- Diag(Tok, diag::warn_pragma_include_alias_expected) << "include filename";
- return;
- }
-
- // Finally, we expect the closing paren
- Lex(Tok);
- if (Tok.isNot(tok::r_paren)) {
- Diag(Tok, diag::warn_pragma_include_alias_expected) << ")";
- return;
- }
-
- // Now that we have the source and target filenames, we need to make sure
- // they're both of the same type (angled vs non-angled)
- bool SourceIsAngled =
- GetIncludeFilenameSpelling(SourceFilenameTok.getLocation(),
- SourceFileName);
- bool ReplaceIsAngled =
- GetIncludeFilenameSpelling(ReplaceFilenameTok.getLocation(),
- ReplaceFileName);
- if (SourceIsAngled != ReplaceIsAngled) {
- Diag(Loc, diag::warn_pragma_include_alias_mismatch);
- return;
- }
-
- // Now we can let the include handler know about this mapping
- getHeaderSearchInfo().AddHeaderMapping(SourceFileName, ReplaceFileName,
- SourceIsAngled);
-}
-
/// AddPragmaHandler - Add the specified pragma handler to the preprocessor.
/// If 'Namespace' is non-null, then it is a token required to exist on the
/// pragma line before the pragma string starts, e.g. "STDC" or "GCC".
@@ -1038,15 +943,6 @@
}
};
-/// PragmaIncludeAliasHandler - "#pragma include_alias("...")".
-struct PragmaIncludeAliasHandler : public PragmaHandler {
- PragmaIncludeAliasHandler() : PragmaHandler("include_alias") {}
- virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
- Token &IncludeAliasTok) {
- PP.HandlePragmaIncludeAlias(IncludeAliasTok);
- }
-};
-
/// PragmaMessageHandler - "#pragma message("...")".
struct PragmaMessageHandler : public PragmaHandler {
PragmaMessageHandler() : PragmaHandler("message") {}
@@ -1199,6 +1095,5 @@
// MS extensions.
if (Features.MicrosoftExt) {
AddPragmaHandler(new PragmaCommentHandler());
- AddPragmaHandler(new PragmaIncludeAliasHandler());
}
}
diff --git a/test/Preprocessor/pragma_microsoft.c b/test/Preprocessor/pragma_microsoft.c
index 88925ff..b68d6e3 100644
--- a/test/Preprocessor/pragma_microsoft.c
+++ b/test/Preprocessor/pragma_microsoft.c
@@ -38,20 +38,3 @@
// this warning should go away.
MACRO_WITH__PRAGMA // expected-warning {{expression result unused}}
}
-
-
-// This should include macro_arg_directive even though the include
-// is looking for test.h This allows us to assign to "n"
-#pragma include_alias("test.h", "macro_arg_directive.h" )
-#include "test.h"
-void test( void ) {
- n = 12;
-}
-
-#pragma include_alias("foo.h", <bar.h>) // expected-warning {{pragma include_alias requires matching include directives (e.g include_alias("foo.h", "bar.h") or include_alias(<foo.h>, <bar.h>))}}
-#pragma include_alias("test.h") // expected-warning {{pragma include_alias expected ','}}
-
-// Make sure that the names match exactly for a replacement, including path information. If
-// this were to fail, we would get a file not found error
-#pragma include_alias(".\pp-record.h", "does_not_exist.h")
-#include "pp-record.h"