Skip to content

Commit 16923da

Browse files
authored
Revert "[clang] Canonicalize absolute paths in dependency file" (#121638)
Reverts #117458 #117458 (comment) ninja-build/ninja#2528
1 parent e2a071e commit 16923da

File tree

5 files changed

+6
-21
lines changed

5 files changed

+6
-21
lines changed

clang/include/clang/Frontend/Utils.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ class DependencyFileGenerator : public DependencyCollector {
120120
private:
121121
void outputDependencyFile(DiagnosticsEngine &Diags);
122122

123-
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS;
124123
std::string OutputFile;
125124
std::vector<std::string> Targets;
126125
bool IncludeSystemHeaders;

clang/lib/Frontend/DependencyFile.cpp

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@
2323
#include "llvm/ADT/StringSet.h"
2424
#include "llvm/Support/FileSystem.h"
2525
#include "llvm/Support/Path.h"
26-
#include "llvm/Support/VirtualFileSystem.h"
2726
#include "llvm/Support/raw_ostream.h"
2827
#include <optional>
29-
#include <system_error>
3028

3129
using namespace clang;
3230

@@ -238,7 +236,6 @@ void DependencyFileGenerator::attachToPreprocessor(Preprocessor &PP) {
238236
PP.SetSuppressIncludeNotFoundError(true);
239237

240238
DependencyCollector::attachToPreprocessor(PP);
241-
FS = PP.getFileManager().getVirtualFileSystemPtr();
242239
}
243240

244241
bool DependencyFileGenerator::sawDependency(StringRef Filename, bool FromModule,
@@ -315,22 +312,11 @@ void DependencyFileGenerator::finishedMainFile(DiagnosticsEngine &Diags) {
315312
/// https://msdn.microsoft.com/en-us/library/dd9y37ha.aspx for NMake info,
316313
/// https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
317314
/// for Windows file-naming info.
318-
static void printFilename(raw_ostream &OS, llvm::vfs::FileSystem *FS,
319-
StringRef Filename,
315+
static void PrintFilename(raw_ostream &OS, StringRef Filename,
320316
DependencyOutputFormat OutputFormat) {
321317
// Convert filename to platform native path
322318
llvm::SmallString<256> NativePath;
323319
llvm::sys::path::native(Filename.str(), NativePath);
324-
// Resolve absolute path. Make and Ninja canonicalize paths
325-
// without checking for symbolic links in the path, for performance concerns.
326-
// If there is something like `/bin/../lib64` -> `/usr/lib64`
327-
// (where `/bin` links to `/usr/bin`), Make will see them as `/lib64`.
328-
if (FS != nullptr && llvm::sys::path::is_absolute(NativePath)) {
329-
llvm::SmallString<256> NativePathTmp = NativePath;
330-
std::error_code EC = FS->getRealPath(NativePathTmp, NativePath);
331-
if (EC)
332-
NativePath = NativePathTmp;
333-
}
334320

335321
if (OutputFormat == DependencyOutputFormat::NMake) {
336322
// Add quotes if needed. These are the characters listed as "special" to
@@ -414,7 +400,7 @@ void DependencyFileGenerator::outputDependencyFile(llvm::raw_ostream &OS) {
414400
Columns = 2;
415401
}
416402
OS << ' ';
417-
printFilename(OS, FS.get(), File, OutputFormat);
403+
PrintFilename(OS, File, OutputFormat);
418404
Columns += N + 1;
419405
}
420406
OS << '\n';
@@ -425,7 +411,7 @@ void DependencyFileGenerator::outputDependencyFile(llvm::raw_ostream &OS) {
425411
for (auto I = Files.begin(), E = Files.end(); I != E; ++I) {
426412
if (Index++ == InputFileIndex)
427413
continue;
428-
printFilename(OS, FS.get(), *I, OutputFormat);
414+
PrintFilename(OS, *I, OutputFormat);
429415
OS << ":\n";
430416
}
431417
}

clang/test/Frontend/dependency-gen-symlink.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// CHECK: dependency-gen-symlink.c.o
1616
// CHECK: dependency-gen-symlink.c
1717
// CHECK: a/header.h
18-
// CHECK-NOT: b/header.h
18+
// CHECK: b/header.h
1919
// CHECK-NOT: with-header-guard.h
2020
#include "a/header.h"
2121
#include "b/header.h"

clang/test/Frontend/dependency-gen-windows-duplicates.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// RUN: %clang -MD -MF - %t.dir/test.c -fsyntax-only -I %t.dir/subdir | FileCheck %s
1010
// CHECK: test.o:
1111
// CHECK-NEXT: \test.c
12-
// CHECK-NEXT: \subdir\x.h
12+
// CHECK-NEXT: \SubDir\X.h
1313
// File x.h must appear only once (case insensitive check).
1414
// CHECK-NOT: {{\\|/}}{{x|X}}.{{h|H}}
1515

clang/test/VFS/external-names.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,4 @@
4747

4848
// RUN: %clang_cc1 -D REINCLUDE -I %t -ivfsoverlay %t.yaml -Eonly %s -MTfoo -dependency-file %t.dep
4949
// RUN: cat %t.dep | FileCheck --check-prefix=CHECK-DEP %s
50-
// CHECK-DEP: Inputs{{..?}}external-names.h
50+
// CHECK-DEP-NOT: Inputs

0 commit comments

Comments
 (0)