Index: lib/Frontend/HeaderIncludeGen.cpp =================================================================== --- lib/Frontend/HeaderIncludeGen.cpp +++ lib/Frontend/HeaderIncludeGen.cpp @@ -51,6 +51,10 @@ static void PrintHeaderInfo(raw_ostream *OutputFile, StringRef Filename, bool ShowDepth, unsigned CurrentIncludeDepth, bool MSStyle) { + // Simplify Filename that starts with "./" + if (Filename.startswith("./")) + Filename = Filename.substr(2); + // Write to a temporary string to avoid unnecessary flushing on errs(). SmallString<512> Pathname(Filename); if (!MSStyle) Index: test/Frontend/clang_H_opt.c =================================================================== --- /dev/null +++ test/Frontend/clang_H_opt.c @@ -0,0 +1,41 @@ +// RUN: %clang -H -fsyntax-only %s 2>&1 | FileCheck %s + +#include "../Index/Inputs/empty.h" +#include "Inputs/empty.h" +#include "./Inputs/empty.h" +#include "././Inputs/empty.h" +#include "./Inputs/empty.h" +// CHECK: . +// CHECK-SAME: ../Index/Inputs/empty.h +// CHECK: . +// CHECK-SAME: Inputs/empty.h +// CHECK: . +// CHECK-SAME: ./Inputs/empty.h +// CHECK: . +// CHECK-SAME: ././Inputs/empty.h +// CHECK: . +// CHECK-SAME: ./Inputs/empty.h + +#if defined(_WIN32) || defined(_WIN64) +#include "..\Index\Inputs\empty.h" +#include "Inputs\empty.h" +#include ".\Inputs\empty.h" +#include ".\.\Inputs\empty.h" +#include ".\Inputs\empty.h" +#else +#include "../Index/Inputs/empty.h" +#include "Inputs/empty.h" +#include "./Inputs/empty.h" +#include "././Inputs/empty.h" +#include "./Inputs/empty.h" +// CHECK: . +// CHECK-SAME: ..{{\/|\\\\}}Index{{\/|\\\\}}Inputs{{\/|\\\\}}empty.h +// CHECK: . +// CHECK-SAME: Inputs{{\/|\\\\}}empty.h +// CHECK: . +// CHECK-SAME: .{{\/|\\\\}}Inputs{{\/|\\\\}}empty.h +// CHECK: . +// CHECK-SAME: .{{\/|\\\\}}.{{\/|\\\\}}Inputs{{\/|\\\\}}empty.h +// CHECK: . +// CHECK-SAME: .{{\/|\\\\}}Inputs{{\/|\\\\}}empty.h +#endif