implement rdar://6762183.  I'm not sure if it is more insane that
GCC ignores macro definitions after \n's or that real code depends
on this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68511 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp
index a2c06e6..5a5ffc3 100644
--- a/tools/clang-cc/clang-cc.cpp
+++ b/tools/clang-cc/clang-cc.cpp
@@ -969,7 +969,12 @@
     // Turn the = into ' '.
     Buf.insert(Buf.end(), Macro, Equal);
     Buf.push_back(' ');
-    Buf.insert(Buf.end(), Equal+1, Equal+strlen(Equal));
+    
+    // Per GCC -D semantics, the macro ends at \n if it exists.
+    const char *End = strpbrk(Equal, "\n\r");
+    if (End == 0) End = Equal+strlen(Equal);
+    
+    Buf.insert(Buf.end(), Equal+1, End);
   } else {
     // Push "macroname 1".
     Buf.insert(Buf.end(), Macro, Macro+strlen(Macro));