diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-01-10 00:46:21 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-01-10 00:46:21 +0000 |
commit | 1ee4b9e6d2d0d031708e2e6dd52aa9e32b83f1c3 (patch) | |
tree | 98b8803934b96d1a82df9360771090d4025a4db5 /lib/Frontend | |
parent | 8a0d94d2ef8cbc93f9d6ecae2816c7a8db102f53 (diff) |
Fix PR5982, a refacto in checking for '=' in a -D argument.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93088 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend')
-rw-r--r-- | lib/Frontend/InitPreprocessor.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index c5fc5f9f74..841463c8e9 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -27,19 +27,16 @@ using namespace clang; // in which case we emit "#define XXX 1" or "XXX=Y z W" in which case we emit // "#define XXX Y z W". To get a #define with no value, use "XXX=". static void DefineBuiltinMacro(MacroBuilder &Builder, llvm::StringRef Macro, - Diagnostic *Diags = 0) { + Diagnostic &Diags) { std::pair<llvm::StringRef, llvm::StringRef> MacroPair = Macro.split('='); llvm::StringRef MacroName = MacroPair.first; llvm::StringRef MacroBody = MacroPair.second; - if (!MacroBody.empty()) { + if (MacroName.size() != Macro.size()) { // Per GCC -D semantics, the macro ends at \n if it exists. llvm::StringRef::size_type End = MacroBody.find_first_of("\n\r"); - if (End != llvm::StringRef::npos) { - assert(Diags && "Unexpected macro with embedded newline!"); - Diags->Report(diag::warn_fe_macro_contains_embedded_newline) + if (End != llvm::StringRef::npos) + Diags.Report(diag::warn_fe_macro_contains_embedded_newline) << MacroName; - } - Builder.defineMacro(MacroName, MacroBody.substr(0, End)); } else { // Push "macroname 1". @@ -490,7 +487,7 @@ void clang::InitializePreprocessor(Preprocessor &PP, Builder.undefineMacro(InitOpts.Macros[i].first); else DefineBuiltinMacro(Builder, InitOpts.Macros[i].first, - &PP.getDiagnostics()); + PP.getDiagnostics()); } // If -imacros are specified, include them now. These are processed before |