[Driver] Improve Clang::getDependencyFileName and its tests after rC371853
authorFangrui Song <maskray@google.com>
Sat, 14 Sep 2019 04:13:15 +0000 (04:13 +0000)
committerFangrui Song <maskray@google.com>
Sat, 14 Sep 2019 04:13:15 +0000 (04:13 +0000)
The test file name metadata-with-dots.c is confusing because -MD and -MMD
have nothing to do with metadata.

llvm-svn: 371917

clang/lib/Driver/ToolChains/Clang.cpp
clang/test/Driver/m-and-mm.c [new file with mode: 0644]
clang/test/Driver/m_and_mm.c [deleted file]
clang/test/Driver/metadata-with-dots.c [deleted file]

index d848d21..169b03b 100644 (file)
@@ -6073,7 +6073,7 @@ const char *Clang::getDependencyFileName(const ArgList &Args,
     return Args.MakeArgString(OutputFilename);
   }
 
-  return Args.MakeArgString(std::string(getBaseInputStem(Args, Inputs)) + ".d");
+  return Args.MakeArgString(Twine(getBaseInputStem(Args, Inputs)) + ".d");
 }
 
 // Begin ClangAs
diff --git a/clang/test/Driver/m-and-mm.c b/clang/test/Driver/m-and-mm.c
new file mode 100644 (file)
index 0000000..6adcb86
--- /dev/null
@@ -0,0 +1,17 @@
+// RUN: %clang -M -MM %s 2>&1 | FileCheck /dev/null --implicit-check-not=warning
+
+// RUN: mkdir -p %t.dir
+// RUN: rm -f %t.dir/test.d
+// RUN: %clang -fsyntax-only -MD %s -o %t.dir/test.i
+// RUN: test -f %t.dir/test.d
+
+/// If the output file name does not have a suffix, just append `.d`.
+// RUN: rm -f %t.dir/test.d
+// RUN: %clang -fsyntax-only -MD %s -o %t.dir/test
+// RUN: test -f %t.dir/test.d
+
+#warning "-M and -MM suppresses preprocessing, thus this warning shouldn't show up"
+int main(void)
+{
+    return 0;
+}
diff --git a/clang/test/Driver/m_and_mm.c b/clang/test/Driver/m_and_mm.c
deleted file mode 100644 (file)
index 6e40c82..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang -### \
-// RUN:   -M -MM %s 2> %t
-// RUN: not grep '"-sys-header-deps"' %t
-
-// RUN: %clang -M -MM %s 2> %t
-// RUN: not grep "warning" %t
-
-// RUN: %clang -MMD -MD %s 2> %t || true
-// RUN: grep "warning" %t
-
-#warning "This warning shouldn't show up with -M and -MM"
-int main (void)
-{
-    return 0;
-}
diff --git a/clang/test/Driver/metadata-with-dots.c b/clang/test/Driver/metadata-with-dots.c
deleted file mode 100644 (file)
index 6058b91..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-// REQUIRES: shell
-// RUN: mkdir -p %t/out.dir
-// RUN: cat %s > %t/out.dir/test.c
-// RUN: %clang -E -MMD %s -o %t/out.dir/test
-// RUN: test ! -f %out.d
-// RUN: test -f %t/out.dir/test.d
-// RUN: rm -rf %t/out.dir/test.d %t/out.dir/ out.d
-int main (void)
-{
-    return 0;
-}