kousikk updated this revision to Diff 225375. kousikk added a comment. Fix tests now that output is in ascending order
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D69090/new/ https://reviews.llvm.org/D69090 Files: clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp clang/test/ClangScanDeps/Inputs/non-header-dependency.json clang/test/ClangScanDeps/Inputs/sanitize-blacklist.txt clang/test/ClangScanDeps/header_stat_before_open.m clang/test/ClangScanDeps/headerwithdirname.cpp clang/test/ClangScanDeps/headerwithdirnamefollowedbyinclude.cpp clang/test/ClangScanDeps/no-werror.cpp clang/test/ClangScanDeps/non-header-dependency.cpp clang/test/ClangScanDeps/regular_cdb.cpp clang/test/ClangScanDeps/subframework_header_dir_symlink.m clang/test/ClangScanDeps/symlink.cpp clang/test/ClangScanDeps/vfsoverlay.cpp clang/tools/clang-scan-deps/ClangScanDeps.cpp
Index: clang/tools/clang-scan-deps/ClangScanDeps.cpp =================================================================== --- clang/tools/clang-scan-deps/ClangScanDeps.cpp +++ clang/tools/clang-scan-deps/ClangScanDeps.cpp @@ -17,6 +17,7 @@ #include "llvm/Support/Signals.h" #include "llvm/Support/Threading.h" #include <mutex> +#include <set> #include <thread> using namespace clang; @@ -66,7 +67,7 @@ StringRef File) override { if (!this->Opts) this->Opts = std::make_unique<DependencyOutputOptions>(Opts); - Dependencies.push_back(File); + Dependencies.insert(File); } void printDependencies(std::string &S) { @@ -76,7 +77,7 @@ class DependencyPrinter : public DependencyFileGenerator { public: DependencyPrinter(DependencyOutputOptions &Opts, - ArrayRef<std::string> Dependencies) + std::set<std::string> &Dependencies) : DependencyFileGenerator(Opts) { for (const auto &Dep : Dependencies) addDependency(Dep); @@ -94,7 +95,7 @@ private: std::unique_ptr<DependencyOutputOptions> Opts; - std::vector<std::string> Dependencies; + std::set<std::string> Dependencies; }; DependencyPrinterConsumer Consumer; Index: clang/test/ClangScanDeps/vfsoverlay.cpp =================================================================== --- clang/test/ClangScanDeps/vfsoverlay.cpp +++ clang/test/ClangScanDeps/vfsoverlay.cpp @@ -13,5 +13,5 @@ #include "not_real.h" // CHECK: vfsoverlay_input.o -// CHECK-NEXT: vfsoverlay_input.cpp // CHECK-NEXT: Inputs{{/|\\}}header.h +// CHECK-NEXT: vfsoverlay_input.cpp Index: clang/test/ClangScanDeps/symlink.cpp =================================================================== --- clang/test/ClangScanDeps/symlink.cpp +++ clang/test/ClangScanDeps/symlink.cpp @@ -14,10 +14,10 @@ #include "symlink.h" #include "header.h" -// CHECK: symlink_input.cpp +// CHECK: Inputs{{/|\\}}header.h // CHECK-NEXT: Inputs{{/|\\}}symlink.h -// CHECK-NEXT: Inputs{{/|\\}}header.h +// CHECK-NEXT: symlink_input.cpp -// CHECK: symlink_input2.cpp +// CHECK: Inputs{{/|\\}}header.h // CHECK-NEXT: Inputs{{/|\\}}symlink.h -// CHECK-NEXT: Inputs{{/|\\}}header.h +// CHECK-NEXT: symlink_input2.cpp \ No newline at end of file Index: clang/test/ClangScanDeps/subframework_header_dir_symlink.m =================================================================== --- clang/test/ClangScanDeps/subframework_header_dir_symlink.m +++ clang/test/ClangScanDeps/subframework_header_dir_symlink.m @@ -20,5 +20,5 @@ // CHECK: subframework_header_dir_symlink_input.o // CHECK-NEXT: subframework_header_dir_symlink_input.m // CHECK: subframework_header_dir_symlink_input2.o -// CHECK-NEXT: subframework_header_dir_symlink_input2.m // CHECK-NEXT: Inputs{{/|\\}}frameworks_symlink{{/|\\}}Framework.framework{{/|\\}}Headers{{/|\\}}Framework.h +// CHECK-NEXT: subframework_header_dir_symlink_input2.m Index: clang/test/ClangScanDeps/regular_cdb.cpp =================================================================== --- clang/test/ClangScanDeps/regular_cdb.cpp +++ clang/test/ClangScanDeps/regular_cdb.cpp @@ -36,10 +36,11 @@ #include "header.h" // CHECK1: regular_cdb_input2.cpp -// CHECK1-NEXT: regular_cdb_input2.cpp // CHECK1-NEXT: Inputs{{/|\\}}header.h // CHECK1-NEXT: Inputs{{/|\\}}header2.h +// CHECK1-NEXT: regular_cdb_input2.cpp -// CHECK2: regular_cdb_input.cpp +// CHECK2: regular_cdb_input.o // CHECK2-NEXT: Inputs{{/|\\}}header.h -// CHECK2NO-NOT: header2 +// CHECK2NO-NOT: header2.h +// CHECK2-NEXT: regular_cdb_input.cpp Index: clang/test/ClangScanDeps/non-header-dependency.cpp =================================================================== --- /dev/null +++ clang/test/ClangScanDeps/non-header-dependency.cpp @@ -0,0 +1,14 @@ +// RUN: rm -rf %t.dir +// RUN: rm -rf %t.cdb +// RUN: mkdir -p %t.dir +// RUN: cp %s %t.dir/non-header-dependency_input.cpp +// RUN: mkdir %t.dir/Inputs +// RUN: cp %S/Inputs/sanitize-blacklist.txt %t.dir/Inputs/sanitize-blacklist.txt +// RUN: sed -e "s|DIR|%/t.dir|g" %S/Inputs/non-header-dependency.json > %t.cdb +// +// RUN: clang-scan-deps -compilation-database %t.cdb -j 1 | FileCheck %s + +#define FOO "foo" + +// CHECK: Inputs{{/|\\}}sanitize-blacklist.txt +// CHECK-NEXT: non-header-dependency_input.cpp Index: clang/test/ClangScanDeps/no-werror.cpp =================================================================== --- clang/test/ClangScanDeps/no-werror.cpp +++ clang/test/ClangScanDeps/no-werror.cpp @@ -12,5 +12,5 @@ #include "sys-header.h" -// CHECK: no-werror_input.cpp -// CHECK-NEXT: Inputs{{/|\\}}sys-header.h +// CHECK: Inputs{{/|\\}}sys-header.h +// CHECK-NEXT: no-werror_input.cpp Index: clang/test/ClangScanDeps/headerwithdirnamefollowedbyinclude.cpp =================================================================== --- clang/test/ClangScanDeps/headerwithdirnamefollowedbyinclude.cpp +++ clang/test/ClangScanDeps/headerwithdirnamefollowedbyinclude.cpp @@ -17,5 +17,6 @@ #include "foodir/foodirheader.h" // CHECK: headerwithdirname_input.o -// CHECK-NEXT: headerwithdirname_input.cpp // CHECK-NEXT: Inputs{{/|\\}}foodir +// CHECK-NEXT: foodir{{/|\\}}foodirheader.h +// CHECK-NEXT: headerwithdirname_input.cpp Index: clang/test/ClangScanDeps/headerwithdirname.cpp =================================================================== --- clang/test/ClangScanDeps/headerwithdirname.cpp +++ clang/test/ClangScanDeps/headerwithdirname.cpp @@ -13,5 +13,5 @@ #include <foodir> // CHECK: headerwithdirname_input.o -// CHECK-NEXT: headerwithdirname_input.cpp // CHECK-NEXT: Inputs{{/|\\}}foodir +// CHECK-NEXT: headerwithdirname_input.cpp Index: clang/test/ClangScanDeps/header_stat_before_open.m =================================================================== --- clang/test/ClangScanDeps/header_stat_before_open.m +++ clang/test/ClangScanDeps/header_stat_before_open.m @@ -13,6 +13,6 @@ #include "Framework/PrivateHeader.h" // CHECK: header_stat_before_open_input.o -// CHECK-NEXT: header_stat_before_open_input.m // CHECK-NEXT: Inputs{{/|\\}}frameworks{{/|\\}}Framework.framework{{/|\\}}Headers{{/|\\}}Framework.h // CHECK-NEXT: Inputs{{/|\\}}frameworks{{/|\\}}Framework.framework{{/|\\}}PrivateHeaders{{/|\\}}PrivateHeader.h +// CHECK-NEXT: header_stat_before_open_input.m Index: clang/test/ClangScanDeps/Inputs/sanitize-blacklist.txt =================================================================== --- /dev/null +++ clang/test/ClangScanDeps/Inputs/sanitize-blacklist.txt @@ -0,0 +1 @@ +fun:* Index: clang/test/ClangScanDeps/Inputs/non-header-dependency.json =================================================================== --- /dev/null +++ clang/test/ClangScanDeps/Inputs/non-header-dependency.json @@ -0,0 +1,7 @@ +[ + { + "directory": "DIR", + "command": "clang -E DIR/non-header-dependency_input.cpp -fsanitize=bounds -fsanitize-blacklist=DIR/Inputs/sanitize-blacklist.txt", + "file": "DIR/non-header-dependency_input.cpp" + } +] Index: clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp =================================================================== --- clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp +++ clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp @@ -36,6 +36,8 @@ llvm::sys::path::remove_dots(CanonPath, /*remove_dot_dot=*/true); C.handleFileDependency(*Opts, CanonPath); } + for (const auto& ExtraDep : Opts->ExtraDeps) + C.handleFileDependency(*Opts, ExtraDep); } private:
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits