Author: Fangrui Song Date: 2022-10-28T20:35:29-07:00 New Revision: ff9576f74514b836e1ba0268409a2ecb919d7118
URL: https://github.com/llvm/llvm-project/commit/ff9576f74514b836e1ba0268409a2ecb919d7118 DIFF: https://github.com/llvm/llvm-project/commit/ff9576f74514b836e1ba0268409a2ecb919d7118.diff LOG: [Frontend] Fix -MP when main file is <stdin> rC220726 had a bug: `echo "<cstdlib>" | clang -M -MP -x c++ - 2>/dev/null` (used by glibc/configure.ac find_cxx_header) omitted a `cstdlib:` line. Instead of filtering out `<stdin>` in `Dependencies`, retain it (so that the number of entries does not change whether or not main file is `<stdin>`) and filter the `PhonyTarget` output. Added: clang/test/Frontend/dependency-gen-phony.c Modified: clang/lib/Frontend/DependencyFile.cpp Removed: clang/test/Frontend/dependency-gen-extradeps-phony.c ################################################################################ diff --git a/clang/lib/Frontend/DependencyFile.cpp b/clang/lib/Frontend/DependencyFile.cpp index 06ddb0f0db201..930d5b488b8f4 100644 --- a/clang/lib/Frontend/DependencyFile.cpp +++ b/clang/lib/Frontend/DependencyFile.cpp @@ -160,10 +160,7 @@ bool DependencyCollector::addDependency(StringRef Filename) { } static bool isSpecialFilename(StringRef Filename) { - return llvm::StringSwitch<bool>(Filename) - .Case("<built-in>", true) - .Case("<stdin>", true) - .Default(false); + return Filename == "<built-in>"; } bool DependencyCollector::sawDependency(StringRef Filename, bool FromModule, @@ -356,6 +353,8 @@ void DependencyFileGenerator::outputDependencyFile(llvm::raw_ostream &OS) { // duplicates. ArrayRef<std::string> Files = getDependencies(); for (StringRef File : Files) { + if (File == "<stdin>") + continue; // Start a new line if this would exceed the column limit. Make // sure to leave space for a trailing " \" in case we need to // break the line on the next iteration. diff --git a/clang/test/Frontend/dependency-gen-extradeps-phony.c b/clang/test/Frontend/dependency-gen-extradeps-phony.c deleted file mode 100644 index 2d67a959ed85e..0000000000000 --- a/clang/test/Frontend/dependency-gen-extradeps-phony.c +++ /dev/null @@ -1,10 +0,0 @@ -// RUN: %clang -MM -MP -Xclang -fdepfile-entry=1.extra -Xclang -fdepfile-entry=2.extra -Xclang -fdepfile-entry=2.extra %s | \ -// RUN: FileCheck %s --implicit-check-not=.c: -// -// Verify that phony targets are only created for the extra dependency files, -// and not the input file. - -// CHECK: dependency-gen-extradeps-phony.o: 1.extra 2.extra \ -// CHECK-NEXT: dependency-gen-extradeps-phony.c -// CHECK: 1.extra: -// CHECK: 2.extra: diff --git a/clang/test/Frontend/dependency-gen-phony.c b/clang/test/Frontend/dependency-gen-phony.c new file mode 100644 index 0000000000000..5bfb02ba819a5 --- /dev/null +++ b/clang/test/Frontend/dependency-gen-phony.c @@ -0,0 +1,23 @@ +// RUN: cd %S +// RUN: %clang -MM -MP -I Inputs -Xclang -fdepfile-entry=1.extra -Xclang -fdepfile-entry=2.extra -Xclang -fdepfile-entry=2.extra dependency-gen-phony.c | \ +// RUN: FileCheck %s --match-full-lines --strict-whitespace --implicit-check-not=.c: +// RUN: %clang -MM -MP -I Inputs -xc - < dependency-gen-phony.c | FileCheck %s --check-prefix=STDIO --implicit-check-not=.c: + +/// Verify that phony targets are only created for the extra dependency files, +/// and not the input file. +// CHECK:dependency-gen-phony.o: 1.extra 2.extra dependency-gen-phony.c \ +// CHECK-NEXT: Inputs{{/|\\\\}}empty.h +// CHECK-EMPTY: +// CHECK-NEXT:1.extra: +// CHECK-EMPTY: +// CHECK-NEXT:2.extra: +// CHECK-EMPTY: +// CHECK-NEXT:{{.*}}empty.h: +// CHECK-NOT:{{.}} + +// STDIO: -.o: Inputs{{/|\\\\}}empty.h +// STDIO-EMPTY: +// STDIO-NEXT: {{.*}}empty.h: +// STDIO-NOT: {{.}} + +#include "empty.h" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits