From 90c4b432cc84257e7d2bf6aa6c1f4df0e91ef168 Mon Sep 17 00:00:00 2001 From: Zahira Ammarguellat Date: Fri, 2 Aug 2024 08:28:35 -0700 Subject: [PATCH 1/5] Fix Dependency filter issue. --- clang/include/clang/Driver/Options.td | 2 +- clang/include/clang/Frontend/DependencyOutputOptions.h | 2 +- clang/include/clang/Frontend/Utils.h | 2 +- clang/lib/Frontend/DependencyFile.cpp | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 628d5643623da..a196fc2a81289 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -7692,7 +7692,7 @@ def show_includes : Flag<["--"], "show-includes">, HelpText<"Print cl.exe style /showIncludes to stdout">; def dependency_filter : Separate<["-"], "dependency-filter">, HelpText<"Filter dependencies with prefix from the dependency output.">, - MarshallingInfoString>; + MarshallingInfoStringVector>; } // let Visibility = [CC1Option] diff --git a/clang/include/clang/Frontend/DependencyOutputOptions.h b/clang/include/clang/Frontend/DependencyOutputOptions.h index db583b7e4d7bb..8383cda618db3 100644 --- a/clang/include/clang/Frontend/DependencyOutputOptions.h +++ b/clang/include/clang/Frontend/DependencyOutputOptions.h @@ -88,7 +88,7 @@ class DependencyOutputOptions { /// Dependency output which is prefixed with this string is filtered from /// the dependency output. - std::string DependencyFilter; + std::vector DependencyFilter; public: DependencyOutputOptions() diff --git a/clang/include/clang/Frontend/Utils.h b/clang/include/clang/Frontend/Utils.h index 4c8edaeefb517..110b008993f1b 100644 --- a/clang/include/clang/Frontend/Utils.h +++ b/clang/include/clang/Frontend/Utils.h @@ -121,7 +121,7 @@ class DependencyFileGenerator : public DependencyCollector { void outputDependencyFile(DiagnosticsEngine &Diags); std::string OutputFile; - std::string DependencyFilter; + std::vector DependencyFilter; std::vector Targets; bool IncludeSystemHeaders; bool PhonyTarget; diff --git a/clang/lib/Frontend/DependencyFile.cpp b/clang/lib/Frontend/DependencyFile.cpp index 5297517a4956c..86bd31fd4980f 100644 --- a/clang/lib/Frontend/DependencyFile.cpp +++ b/clang/lib/Frontend/DependencyFile.cpp @@ -255,11 +255,11 @@ bool DependencyFileGenerator::sawDependency(StringRef Filename, bool FromModule, if (isSpecialFilename(Filename)) return false; - if (DependencyFilter.size() && - DependencyFilter.compare(0, DependencyFilter.size(), Filename.data(), - DependencyFilter.size()) == 0) - // Remove dependencies that are prefixed by the Filter string. - return false; + // Remove dependencies that are prefixed by the Filter string. + for (const std::string &FD : DependencyFilter) { + if (Filename == FD) + return false; + } if (IncludeSystemHeaders) return true; From f021d9bcc7310025bc8b01a039ee8830c6270ec3 Mon Sep 17 00:00:00 2001 From: Zahira Ammarguellat Date: Fri, 2 Aug 2024 12:25:08 -0700 Subject: [PATCH 2/5] Add code to correct LIT test. --- clang/lib/Frontend/DependencyFile.cpp | 2 +- clang/test/Frontend/Inputs/dependency.cpp | 3 +++ clang/test/Frontend/dependency-gen.c | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 clang/test/Frontend/Inputs/dependency.cpp diff --git a/clang/lib/Frontend/DependencyFile.cpp b/clang/lib/Frontend/DependencyFile.cpp index 86bd31fd4980f..1be43caebfb43 100644 --- a/clang/lib/Frontend/DependencyFile.cpp +++ b/clang/lib/Frontend/DependencyFile.cpp @@ -257,7 +257,7 @@ bool DependencyFileGenerator::sawDependency(StringRef Filename, bool FromModule, // Remove dependencies that are prefixed by the Filter string. for (const std::string &FD : DependencyFilter) { - if (Filename == FD) + if (strncmp(Filename.data(), FD.c_str(), DependencyFilter.size()) == 0) return false; } diff --git a/clang/test/Frontend/Inputs/dependency.cpp b/clang/test/Frontend/Inputs/dependency.cpp new file mode 100644 index 0000000000000..4cce7f667ff72 --- /dev/null +++ b/clang/test/Frontend/Inputs/dependency.cpp @@ -0,0 +1,3 @@ +int main() { + return 0; +} diff --git a/clang/test/Frontend/dependency-gen.c b/clang/test/Frontend/dependency-gen.c index b0a3ec174ebdb..664a86a345ebb 100644 --- a/clang/test/Frontend/dependency-gen.c +++ b/clang/test/Frontend/dependency-gen.c @@ -47,3 +47,11 @@ // RUN: %clang -MMD -MF - %s -fsyntax-only -resource-dir=%S/Inputs/resource_dir_with_sanitizer_ignorelist -fsanitize=undefined -flto -fvisibility=hidden -I ./ | FileCheck -check-prefix=ONLY-USER-DEPS %s // ONLY-USER-DEPS: dependency-gen.o: // NOT-ONLY-USER-DEPS: ubsan_ignorelist.txt + +// RUN: %clang -c -x c++ -fsycl \ +// RUN: -MD -MF - %S/Inputs/dependency.cpp | FileCheck -check-prefix=FILTER %s + +// FILTER: dependency.o: +// FILTER: {{.*}}dependency.cpp +// FILTER: dependency.o: +// FILTER: {{.*}}dependency.cpp From ef7ba68b61f2a06a6c011a512bbd4de7c8ddc514 Mon Sep 17 00:00:00 2001 From: Zahira Ammarguellat Date: Fri, 2 Aug 2024 12:47:59 -0700 Subject: [PATCH 3/5] Fix format. --- clang/include/clang/Frontend/DependencyOutputOptions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/include/clang/Frontend/DependencyOutputOptions.h b/clang/include/clang/Frontend/DependencyOutputOptions.h index 8383cda618db3..dca0390558cb3 100644 --- a/clang/include/clang/Frontend/DependencyOutputOptions.h +++ b/clang/include/clang/Frontend/DependencyOutputOptions.h @@ -87,7 +87,7 @@ class DependencyOutputOptions { std::string ModuleDependencyOutputDir; /// Dependency output which is prefixed with this string is filtered from - /// the dependency output. + /// the dependency output. std::vector DependencyFilter; public: From 25c0dacf7ca594b4ce22ed855836c6737d8c937f Mon Sep 17 00:00:00 2001 From: Zahira Ammarguellat Date: Mon, 5 Aug 2024 08:43:32 -0700 Subject: [PATCH 4/5] Addressed offline review comments. --- clang/lib/Frontend/DependencyFile.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/clang/lib/Frontend/DependencyFile.cpp b/clang/lib/Frontend/DependencyFile.cpp index 1be43caebfb43..5a0d44298823a 100644 --- a/clang/lib/Frontend/DependencyFile.cpp +++ b/clang/lib/Frontend/DependencyFile.cpp @@ -256,10 +256,9 @@ bool DependencyFileGenerator::sawDependency(StringRef Filename, bool FromModule, return false; // Remove dependencies that are prefixed by the Filter string. - for (const std::string &FD : DependencyFilter) { - if (strncmp(Filename.data(), FD.c_str(), DependencyFilter.size()) == 0) + for (const std::string &FD : DependencyFilter) + if (FD.compare(0, FD.size(), Filename.data(), FD.size()) == 0) return false; - } if (IncludeSystemHeaders) return true; From 5fd38e473e52471b3b9b8cc87f99ed47cc7f89f2 Mon Sep 17 00:00:00 2001 From: Zahira Ammarguellat Date: Mon, 5 Aug 2024 11:15:15 -0700 Subject: [PATCH 5/5] Fixed the ProtexIP issue. --- clang/test/Frontend/Inputs/dependency.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/Frontend/Inputs/dependency.cpp b/clang/test/Frontend/Inputs/dependency.cpp index 4cce7f667ff72..3e1b41306e1cf 100644 --- a/clang/test/Frontend/Inputs/dependency.cpp +++ b/clang/test/Frontend/Inputs/dependency.cpp @@ -1,3 +1,3 @@ -int main() { +int dep() { return 0; }