[Frontend] Fix an issue where a quoted search path is incorrectly

removed as a duplicate header search path

The commit r126167 started passing the First index into RemoveDuplicates, but
forgot to update 0 to First in the loop that looks for the duplicate. This
resulted in a bug where an -iquoted search path was incorrectly removed if you
passed in the same path into -iquote and more than one time into -isystem.

rdar://23991350

Differential Revision: https://reviews.llvm.org/D27298

llvm-svn: 288491
This commit is contained in:
Alex Lorenz 2016-12-02 09:51:51 +00:00
parent 5ce101a848
commit 8c1b5c9ea9
2 changed files with 13 additions and 1 deletions

View File

@ -526,7 +526,7 @@ static unsigned RemoveDuplicates(std::vector<DirectoryLookup> &SearchList,
if (CurEntry.getDirCharacteristic() != SrcMgr::C_User) {
// Find the dir that this is the same of.
unsigned FirstDir;
for (FirstDir = 0; ; ++FirstDir) {
for (FirstDir = First;; ++FirstDir) {
assert(FirstDir != i && "Didn't find dupe?");
const DirectoryLookup &SearchEntry = SearchList[FirstDir];

View File

@ -0,0 +1,12 @@
// RUN: %clang_cc1 -v -I%S/Inputs -iquote %S/Inputs/SystemHeaderPrefix -isystem %S/Inputs/SystemHeaderPrefix -isystem %S/Inputs/SystemHeaderPrefix %s 2>&1 | FileCheck %s
#include <test.h>
// CHECK: ignoring duplicate directory
// CHECK-SAME: Inputs/SystemHeaderPrefix"{{$}}
// CHECK: #include "..."
// CHECK-NEXT: {{.*}}Inputs/SystemHeaderPrefix{{$}}
// CHECK-NEXT: #include <...>
// CHECK-NEXT: {{.*}}Inputs{{$}}
// CHECK-NEXT: {{.*}}Inputs/SystemHeaderPrefix{{$}}