Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LLVM_COMPLETE_INSTALLATION #29

Closed
wants to merge 274 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
274 commits
Select commit Hold shift + click to select a range
ad1624f
Merging r351459:
zmodem Jan 18, 2019
d4d3f77
Merging r351504:
zmodem Jan 18, 2019
6e751e8
Merging r351463, r351466, r351467, and r351468
zmodem Jan 18, 2019
e264dae
Merging r351426:
zmodem Jan 18, 2019
119d8a5
Merging r351580:
zmodem Jan 22, 2019
eb74b59
Merging r351686:
zmodem Jan 22, 2019
2bebfeb
Merging r351753:
zmodem Jan 22, 2019
ee231d0
Merging r351754:
zmodem Jan 22, 2019
642a173
Merging r351788:
zmodem Jan 22, 2019
a05d35f
[docs] Amend the release notes with more things I've contributed sinc…
mstorsjo Jan 22, 2019
78ecdd7
[docs] Add release notes for notable things I've contributed since la…
mstorsjo Jan 22, 2019
1e7e399
[docs] Add release notes for notable things I've contributed since la…
mstorsjo Jan 22, 2019
d0fae09
Merging r351531:
zmodem Jan 23, 2019
f669262
Merging r351738:
zmodem Jan 23, 2019
40cbc00
Merging r351898:
zmodem Jan 23, 2019
b00b2b8
Merging r351899:
zmodem Jan 23, 2019
17c9824
Merging r351670:
zmodem Jan 23, 2019
22c2b2b
Merging r351930 and r351932:
zmodem Jan 24, 2019
a008fbe
Merging r352040:
zmodem Jan 24, 2019
de8481e
Merging r352040:
zmodem Jan 24, 2019
400f8a3
Merging r352102:
zmodem Jan 24, 2019
24479b1
Merging r352116:
zmodem Jan 25, 2019
22f92b5
Merging r352082:
zmodem Jan 25, 2019
4474451
Merging r351485:
zmodem Jan 25, 2019
b7988f7
Merging r351579:
zmodem Jan 25, 2019
e25507d
Merging r352034:
zmodem Jan 25, 2019
af62a72
Merging r352068:
zmodem Jan 25, 2019
4ba28fc
Merging r352079:
zmodem Jan 25, 2019
9fbd743
Merging r352204:
zmodem Jan 25, 2019
30d3a54
Merging r352234:
zmodem Jan 25, 2019
f149bca
Merging r352257:
zmodem Jan 28, 2019
01ddd7c
Remove failing test expectations.
zmodem Jan 28, 2019
8f1376f
Merging r352302:
zmodem Jan 28, 2019
f86097d
Merging r352323:
zmodem Jan 28, 2019
246bce4
Merging r352099:
zmodem Jan 28, 2019
b73d705
Merging r352105:
zmodem Jan 28, 2019
1680cb5
Merging r352221 and r352222:
zmodem Jan 28, 2019
accabdd
Merging r352229:
zmodem Jan 28, 2019
d1ba949
Merging r352231:
zmodem Jan 28, 2019
be5f5b3
Merging r352413:
zmodem Jan 29, 2019
53ba53b
Merging r352381:
zmodem Jan 29, 2019
caadceb
Merging r352382:
zmodem Jan 29, 2019
84d97e3
Merging r352459:
zmodem Jan 29, 2019
71b117e
Merging r352374:
zmodem Jan 29, 2019
5751c2b
Merging r352374:
zmodem Jan 29, 2019
2cc5c39
Merging r352374:
zmodem Jan 29, 2019
c1d99f8
Merging r352374:
zmodem Jan 29, 2019
f103e43
Merging r351910:
zmodem Jan 29, 2019
3c554e2
Merging r352539:
zmodem Jan 29, 2019
88481d5
Merging r352610:
zmodem Jan 30, 2019
dbbe633
[docs][mips] Add MIPS specific release notes for LLD 8.0
atanasyan Jan 30, 2019
dfc033d
[docs][mips] Clang 8.0 Release notes
atanasyan Jan 30, 2019
8a11e14
[docs][mips] 8.0 Release notes
atanasyan Jan 30, 2019
6dcd982
Merging r352407:
zmodem Feb 1, 2019
9f0ae69
Merging r352435:
zmodem Feb 1, 2019
15decd1
Merging r352482:
zmodem Feb 1, 2019
538ee73
Merging r352606:
zmodem Feb 1, 2019
2a08347
Merging r352672:
zmodem Feb 1, 2019
e26a2f2
Merging r352822:
zmodem Feb 1, 2019
d4c2ff4
Merging r352770:
zmodem Feb 1, 2019
c081a5f
Merging r352156:
zmodem Feb 1, 2019
f66fbcf
Merging r352463:
zmodem Feb 1, 2019
61ff0b6
Merging r352246:
zmodem Feb 1, 2019
b96362f
[Hexagon] Update release notes with the changes to the Hexagon backend
Feb 1, 2019
36e9afb
Release Notes: Add Zig to External Open Source Projects Using LLVM 8
zmodem Feb 4, 2019
8cc77b4
Merging r352889:
zmodem Feb 4, 2019
44c7930
Merging r352307:
zmodem Feb 4, 2019
ca26c44
Merging r352928:
zmodem Feb 5, 2019
9c110d5
Merging r352929:
zmodem Feb 5, 2019
f7f9945
Merging r352945:
zmodem Feb 5, 2019
a10d2d2
Merging r353082:
zmodem Feb 5, 2019
a9a9c27
Merging r352555:
zmodem Feb 5, 2019
30ce79e
Merging rr353218:
rnk Feb 5, 2019
35f4f2f
Merging r353155:
zmodem Feb 6, 2019
5581990
Merging r352016:
zmodem Feb 6, 2019
a2f4603
Merging r353224:
zmodem Feb 6, 2019
7ec84db
Merging r353250:
zmodem Feb 6, 2019
f582206
Merging r353304:
zmodem Feb 7, 2019
238045f
lld-link: Add some entries to the 8.0 release notes
zmodem Feb 7, 2019
33fc712
Merging r353367:
zmodem Feb 7, 2019
7399f70
Merging r353327:
zmodem Feb 7, 2019
104c654
Merging r353393:
zmodem Feb 7, 2019
8c33d4f
Re-generate docs/ClangCommandLineReference.rst
zmodem Feb 7, 2019
cb2d048
Generate docs/AttributeReference.rst
zmodem Feb 7, 2019
829bb6f
[docs] Update the release notes for the backported feature with thunk…
mstorsjo Feb 7, 2019
ac29b65
Fix sphinx warning
zmodem Feb 7, 2019
98ebe74
Merging r353399:
zmodem Feb 7, 2019
2699311
Add external project LDC to release notes.
redstar Feb 7, 2019
ce52769
Merging r351387, r351765, and r353374:
zmodem Feb 8, 2019
22558d3
Merging r353463:
zmodem Feb 8, 2019
15f159c
- Update ReleaseNotes for lld 8.0.0.
rui314 Feb 8, 2019
62ead03
Minor update to lld/ReleaseNotes.
rui314 Feb 11, 2019
e055d7f
Merging r353495:
zmodem Feb 12, 2019
0cbe0b9
ReleaseNotes about the toolchain version cmake check
zmodem Feb 12, 2019
75ff7d0
Merging r353551 and r353809:
zmodem Feb 12, 2019
018cd5f
Merging r352607 r352608 r353015 r353061 r353138 r353141 r353334 r353489
zmodem Feb 12, 2019
e552366
Merging r353142:
zmodem Feb 12, 2019
2ccd8c1
Merging r353308 and r353383:
zmodem Feb 12, 2019
df368fd
Merging r353411:
zmodem Feb 12, 2019
e57cf6c
Merging r353431:
zmodem Feb 12, 2019
dfde9d6
Merging r353480:
zmodem Feb 12, 2019
eb0faeb
Merging r353493:
zmodem Feb 12, 2019
a576b44
Merging r353402:
zmodem Feb 12, 2019
ae61627
Merging r351322:
zmodem Feb 12, 2019
33e2530
Merging r353656:
zmodem Feb 12, 2019
ef182d5
[WebAssembly] Backport custom import name changes for lld to 8.0.
zmodem Feb 12, 2019
16b7c08
[WebAssembly] Backport custom import name changes for clang to 8.0.
zmodem Feb 12, 2019
33a2b52
[WebAssembly] Backport custom import name changes for LLVM to 8.0.
zmodem Feb 12, 2019
be8c9e3
Merging r352707, r352714, r352886, r352892, r352895, r352908, r352917…
zmodem Feb 13, 2019
6e3c4d5
Revert r350404
zmodem Feb 13, 2019
c957a99
Merging r353976:
zmodem Feb 14, 2019
1152134
Merging r353968:
zmodem Feb 14, 2019
ff29092
Merging r354074:
zmodem Feb 15, 2019
8015928
Merging r353943:
zmodem Feb 15, 2019
a7da36b
Merging r354035:
zmodem Feb 18, 2019
07a7439
Merging r354147:
zmodem Feb 18, 2019
25c79d9
Merging r354128 and r354131:
zmodem Feb 18, 2019
783fd93
Merging r354144:
zmodem Feb 18, 2019
46fbca3
Merging r353642:
zmodem Feb 18, 2019
096ef4c
Merging r354029:
zmodem Feb 18, 2019
81bd9db
Merging r354122:
zmodem Feb 18, 2019
6051407
Merging r353907:
zmodem Feb 18, 2019
cc3d3f1
Merging r354034 and r354117:
zmodem Feb 18, 2019
e3d91da
[ReleaseNotes] Add note about removal of Nios2 backend. Add some note…
topperc Feb 18, 2019
79a42b6
docs: Remove in-progress warning
zmodem Feb 19, 2019
81717ef
remove another in-progress note
zmodem Feb 19, 2019
6a57428
ReleaseNotes: remove in-progress warning, and minor tweaks
zmodem Feb 19, 2019
363f1d0
ReleaseNotes: remove in-progress warning and doxygen link
zmodem Feb 19, 2019
b1c5e90
ReleaseNotes: remove in-progress warning
zmodem Feb 19, 2019
fbaa8ef
ReleaseNotes: remove in-progress warning
zmodem Feb 19, 2019
5decb13
Merging r354422:
zmodem Feb 20, 2019
d6e87c2
ReleaseNotes: initial ppc support in llvm-exegesis
zmodem Feb 20, 2019
6977a57
ReleaseNotes: mention the new rotation builtins, text by Sanjay
zmodem Feb 20, 2019
e4bde92
ReleaseNotes: AArch64 tiny code model
zmodem Feb 20, 2019
b936e1c
ReleaseNotes: all PowerPC changes
zmodem Feb 20, 2019
83dcd05
Merging r354351:
zmodem Feb 20, 2019
cd76cba
Merging r354402:
zmodem Feb 20, 2019
0157e01
ReleaseNotes: profile-driven cache prefetching. Text by Mircea!
zmodem Feb 21, 2019
96ddd7d
Merging r354497:
zmodem Feb 21, 2019
9d332ff
ReleaseNotes: speculative load hardening; text by Kristof
zmodem Feb 21, 2019
5a681e4
ReleaseNotes: speculative load hardening; text by Kristof
zmodem Feb 21, 2019
6f2b277
Release notes: a few lldb changes, by Raphael Isemann!
zmodem Feb 22, 2019
b821974
ReleaseNotes: -ftrivial-auto-var-init
zmodem Feb 22, 2019
16667e0
ReleaseNotes: drop mention of -ftrivial-auto-var-init=zero
zmodem Feb 25, 2019
bb92074
Release notes for OpenCL
Feb 25, 2019
0777c34
ReleaseNotes: ARM64 SEH, pointed out by David Major
zmodem Feb 26, 2019
ee57e9e
Merging r354764:
zmodem Feb 26, 2019
e745d6d
Merging r354756:
zmodem Feb 26, 2019
319e7df
Merging r354721:
zmodem Feb 26, 2019
35782c5
Merging r354723:
zmodem Feb 26, 2019
e56517b
Merging r354733:
zmodem Feb 26, 2019
8eb2ef1
Add note on libFuzzer for Windows to release notes
zmodem Feb 26, 2019
992552e
Merging r354207:
zmodem Feb 27, 2019
1733050
Re-generate attribute docs
zmodem Feb 27, 2019
6b486a4
Merging r354968:
zmodem Feb 27, 2019
8e077e9
Re-generate AttributeReference.rst again
zmodem Feb 27, 2019
ec4aab6
ReleaseNotes: add Known Issues, clean up, etc.
zmodem Feb 27, 2019
5666083
ReleaseNotes: tidy up
zmodem Feb 27, 2019
b02e236
ReleaseNotes: tidy up (clangd notes are still expected)
zmodem Feb 27, 2019
a4fc388
Merging r353422:
zmodem Feb 27, 2019
c57a1fc
Merging r354505:
zmodem Feb 27, 2019
3043a72
Merging r354505:
zmodem Feb 27, 2019
c6a1d49
Merging r354765:
zmodem Feb 27, 2019
e811d11
Merging r354957:
zmodem Feb 27, 2019
06a9d7d
ReleaseNotes: remove another empty section
zmodem Feb 27, 2019
8c0e32b
ReleaseNotes: tidy up
zmodem Feb 27, 2019
f7be79e
Merging r354777, r354778, r354779, r354786, r354865, and r354992
zmodem Feb 27, 2019
95e1c29
Added release notes for clangd 8
zmodem Feb 27, 2019
e65cd4e
Merging r355116 and r355117:
zmodem Mar 4, 2019
502c655
Merging r352465:
zmodem Mar 4, 2019
d178638
Merging r355136:
zmodem Mar 4, 2019
d39b590
Merging r355227 and r355228:
zmodem Mar 5, 2019
0a0560b
ReleaseNotes: Open Dylan; by Peter Housel
zmodem Mar 7, 2019
7681975
Merging r354937:
zmodem Mar 8, 2019
2cc470a
Merging r355491:
zmodem Mar 8, 2019
2a1c7bd
Merging r352119:
zmodem Mar 8, 2019
60c0551
Merging r355489:
zmodem Mar 8, 2019
25292d1
Merging r355743:
zmodem Mar 12, 2019
a73e76a
ReleaseNotes: SystemZ, by Ulrich Weigand.
zmodem Mar 12, 2019
0712a5f
ReleaseNotes: fix sorting, spotted by Eugene Zelenko
zmodem Mar 13, 2019
2ffb1b0
ReleaseNotes: Changes to the JIT APIs; by Lang Hames
zmodem Mar 13, 2019
d2298e7
Re-generate DiagnosticsReference.rst (PR41080)
zmodem Mar 15, 2019
db4cf6b
Bump version to 8.0.1
tstellar Mar 21, 2019
bf2f5ab
git-llvm: Update for release_80 branch
tstellar Mar 21, 2019
25895ad
Merging r356924:
tstellar Mar 29, 2019
79c29c6
Merging r355854:
tstellar Apr 22, 2019
aaac4e0
Merging r354672:
tstellar Apr 22, 2019
1cef8c2
Merging r356198:
tstellar Apr 22, 2019
257c010
Merging r354808:
tstellar Apr 22, 2019
25b6e82
Merging r354882:
tstellar Apr 22, 2019
047302e
Merging r355825:
tstellar Apr 22, 2019
1ff9bed
Merging r356039:
tstellar Apr 23, 2019
7aa4dc9
Merging r357506:
tstellar Apr 23, 2019
604a417
Merging r358885:
tstellar Apr 25, 2019
68f2f7c
Merging r355607:
tstellar May 3, 2019
9465a4c
Merging r357701:
tstellar May 3, 2019
87c0dbb
Merging r357376 and r359120:
tstellar May 3, 2019
2a5c205
Merging r359834:
tstellar May 3, 2019
0d754fd
Merging r359496:
tstellar May 4, 2019
7c1f15e
Merging r357885:
tstellar May 4, 2019
0203f70
Merging r360512:
tstellar May 15, 2019
74cfa7a
Merging r356982:
tstellar May 15, 2019
d9ccd0d
Merging r359883:
tstellar May 15, 2019
0eebd31
Merging r358547:
tstellar May 15, 2019
3f38b9e
Merging r355621:
tstellar May 15, 2019
2570e4b
Merging r360099:
tstellar May 15, 2019
35349ba
Merging r359569:
tstellar May 15, 2019
9916d8d
Merging r355141:
tstellar May 15, 2019
e58d5a4
Merging r360212:
tstellar May 15, 2019
bc6695c
Merging r354846:
tstellar May 15, 2019
05288f5
Merging r360674:
tstellar May 16, 2019
4b1712f
Merging r352806:
tstellar May 16, 2019
9124fda
Merging r355038:
tstellar May 16, 2019
1a19847
Merging r351523:
tstellar May 23, 2019
11c3a5c
Merging r360825:
tstellar May 23, 2019
c743d72
Merging r354184:
tstellar May 29, 2019
d446349
Merging r353700:
tstellar May 29, 2019
e31804d
Merging r353701:
tstellar May 29, 2019
f0bd598
Merging r359606:
tstellar May 29, 2019
e3dc222
Merging r353865, r353866, and r353874:
tstellar May 30, 2019
5733e36
Merging r359883:
arsenm May 30, 2019
f1cacab
Merging part of r358975:
tstellar May 31, 2019
0489682
Merging r360405:
tstellar May 31, 2019
836f1e2
Merging r359891:
arsenm Jun 5, 2019
b73bafa
Correct test in r362634
arsenm Jun 5, 2019
c8af241
Merging r359898:
arsenm Jun 5, 2019
5b37d89
Merging r359899:
arsenm Jun 5, 2019
d95b14d
Merging r360293:
arsenm Jun 5, 2019
c493057
Merging r360439:
tstellar Jun 6, 2019
0462c73
Merging r360442:
tstellar Jun 6, 2019
4db27e1
Skip globals-fundamental test when Python is disabled
tstellar Jun 6, 2019
897fd6e
Merging r361237:
tstellar Jun 6, 2019
e98c4c8
Merging r355154:
tstellar Jun 6, 2019
0e657d4
Merging r353905:
tstellar Jun 7, 2019
ad5bcd4
Merging r361090:
tstellar Jun 8, 2019
90c370c
Merging r351577:
tstellar Jun 10, 2019
9a2cfae
Merging r358042:
tstellar Jun 10, 2019
213f2ed
Add release note for DIBuilder API changes
tstellar Jun 11, 2019
2fb27a2
Merging r360862:
tstellar Jun 11, 2019
c2be208
Merging r361158:
tstellar Jun 17, 2019
4ebe62d
Merging r359094:
tstellar Jun 24, 2019
464c365
Merging r360861:
tstellar Jun 24, 2019
d375592
Merging r361114:
tstellar Jun 25, 2019
21f32a9
Merging r355033:
tstellar Jun 25, 2019
cf7a59f
Merging r359809:
rnk Jun 26, 2019
180a937
Merging r354633:
tstellar Jun 26, 2019
635f8ff
Revert merge of r360861:
DimitryAndric Jul 9, 2019
19a71f6
Merging r360861, with an additional change to also add the PPC64_OPD1
DimitryAndric Jul 9, 2019
465f4e2
[bindings/go] Add ParseIR
aykevl Aug 18, 2019
89de0d8
Revert r369210 which got committed to the branch by mistake
zmodem Aug 20, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 1 addition & 17 deletions clang-tools-extra/clang-tidy/ClangTidy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -529,24 +529,8 @@ runClangTidy(clang::tidy::ClangTidyContext &Context,
return AdjustedArgs;
};

// Remove plugins arguments.
ArgumentsAdjuster PluginArgumentsRemover =
[](const CommandLineArguments &Args, StringRef Filename) {
CommandLineArguments AdjustedArgs;
for (size_t I = 0, E = Args.size(); I < E; ++I) {
if (I + 4 < Args.size() && Args[I] == "-Xclang" &&
(Args[I + 1] == "-load" || Args[I + 1] == "-add-plugin" ||
StringRef(Args[I + 1]).startswith("-plugin-arg-")) &&
Args[I + 2] == "-Xclang") {
I += 3;
} else
AdjustedArgs.push_back(Args[I]);
}
return AdjustedArgs;
};

Tool.appendArgumentsAdjuster(PerFileExtraArgumentsInserter);
Tool.appendArgumentsAdjuster(PluginArgumentsRemover);
Tool.appendArgumentsAdjuster(getStripPluginsAdjuster());
Context.setEnableProfiling(EnableCheckProfile);
Context.setProfileStoragePrefix(StoreCheckProfile);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ AST_MATCHER(CXXRecordDecl, hasMethods) {
return std::distance(Node.method_begin(), Node.method_end()) != 0;
}

AST_MATCHER(CXXRecordDecl, hasNonStaticMethod) {
return hasMethod(unless(isStaticStorageClass()))
AST_MATCHER(CXXRecordDecl, hasNonStaticNonImplicitMethod) {
return hasMethod(unless(anyOf(isStaticStorageClass(), isImplicit())))
.matches(Node, Finder, Builder);
}

Expand Down Expand Up @@ -67,10 +67,11 @@ void NonPrivateMemberVariablesInClassesCheck::registerMatchers(
IgnorePublicMemberVariables ? isProtected() : unless(isPrivate()));

// We only want the records that not only contain the mutable data (non-static
// member variables), but also have some logic (non-static member functions).
// We may optionally ignore records where all the member variables are public.
// member variables), but also have some logic (non-static, non-implicit
// member functions). We may optionally ignore records where all the member
// variables are public.
Finder->addMatcher(cxxRecordDecl(anyOf(isStruct(), isClass()), hasMethods(),
hasNonStaticMethod(),
hasNonStaticNonImplicitMethod(),
unless(ShouldIgnoreRecord),
forEach(InterestingField.bind("field")))
.bind("record"),
Expand Down
9 changes: 8 additions & 1 deletion clang-tools-extra/clang-tidy/modernize/AvoidCArraysCheck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ AST_MATCHER(clang::RecordDecl, isExternCContext) {
return Node.isExternCContext();
}

AST_MATCHER(clang::ParmVarDecl, isArgvOfMain) {
const clang::DeclContext *DC = Node.getDeclContext();
const auto *FD = llvm::dyn_cast<clang::FunctionDecl>(DC);
return FD ? FD->isMain() : false;
}

} // namespace

namespace clang {
Expand All @@ -44,7 +50,8 @@ void AvoidCArraysCheck::registerMatchers(MatchFinder *Finder) {

Finder->addMatcher(
typeLoc(hasValidBeginLoc(), hasType(arrayType()),
unless(anyOf(hasParent(varDecl(isExternC())),
unless(anyOf(hasParent(parmVarDecl(isArgvOfMain())),
hasParent(varDecl(isExternC())),
hasParent(fieldDecl(
hasParent(recordDecl(isExternCContext())))),
hasAncestor(functionDecl(isExternC())))))
Expand Down
3 changes: 2 additions & 1 deletion clang-tools-extra/clangd/ClangdLSPServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,8 @@ void ClangdLSPServer::onInitialize(const InitializeParams &Params,
if (UseDirBasedCDB)
BaseCDB = llvm::make_unique<DirectoryBasedGlobalCompilationDatabase>(
CompileCommandsDir);
CDB.emplace(BaseCDB.get(), Params.initializationOptions.fallbackFlags);
CDB.emplace(BaseCDB.get(), Params.initializationOptions.fallbackFlags,
ClangdServerOpts.ResourceDir);
Server.emplace(*CDB, FSProvider, static_cast<DiagnosticsConsumer &>(*this),
ClangdServerOpts);
applyConfiguration(Params.initializationOptions.ConfigSettings);
Expand Down
13 changes: 1 addition & 12 deletions clang-tools-extra/clangd/ClangdServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,6 @@ namespace clang {
namespace clangd {
namespace {

std::string getStandardResourceDir() {
static int Dummy; // Just an address in this process.
return CompilerInvocation::GetResourcesPath("clangd", (void *)&Dummy);
}

class RefactoringResultCollector final
: public tooling::RefactoringResultConsumer {
public:
Expand Down Expand Up @@ -108,8 +103,6 @@ ClangdServer::ClangdServer(const GlobalCompilationDatabase &CDB,
DiagnosticsConsumer &DiagConsumer,
const Options &Opts)
: CDB(CDB), FSProvider(FSProvider),
ResourceDir(Opts.ResourceDir ? *Opts.ResourceDir
: getStandardResourceDir()),
DynamicIdx(Opts.BuildDynamicSymbolIndex
? new FileIndex(Opts.HeavyweightDynamicSymbolIndex)
: nullptr),
Expand Down Expand Up @@ -137,7 +130,7 @@ ClangdServer::ClangdServer(const GlobalCompilationDatabase &CDB,
AddIndex(Opts.StaticIndex);
if (Opts.BackgroundIndex) {
BackgroundIdx = llvm::make_unique<BackgroundIndex>(
Context::current().clone(), ResourceDir, FSProvider, CDB,
Context::current().clone(), FSProvider, CDB,
BackgroundIndexStorage::createDiskBackedStorageFactory(),
Opts.BackgroundIndexRebuildPeriodMs);
AddIndex(BackgroundIdx.get());
Expand Down Expand Up @@ -462,10 +455,6 @@ tooling::CompileCommand ClangdServer::getCompileCommand(PathRef File) {
llvm::Optional<tooling::CompileCommand> C = CDB.getCompileCommand(File);
if (!C) // FIXME: Suppress diagnostics? Let the user know?
C = CDB.getFallbackCommand(File);

// Inject the resource dir.
// FIXME: Don't overwrite it if it's already there.
C->CommandLine.push_back("-resource-dir=" + ResourceDir);
return std::move(*C);
}

Expand Down
4 changes: 3 additions & 1 deletion clang-tools-extra/clangd/ExpectedTypes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,10 @@ static llvm::Optional<QualType>
typeOfCompletion(const CodeCompletionResult &R) {
auto *VD = dyn_cast_or_null<ValueDecl>(R.Declaration);
if (!VD)
return None; // We handle only variables and functions below.
return llvm::None; // We handle only variables and functions below.
auto T = VD->getType();
if (T.isNull())
return llvm::None;
if (auto FuncT = T->getAs<FunctionType>()) {
// Functions are a special case. They are completed as 'foo()' and we want
// to match their return type rather than the function type itself.
Expand Down
41 changes: 37 additions & 4 deletions clang-tools-extra/clangd/GlobalCompilationDatabase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,36 @@

#include "GlobalCompilationDatabase.h"
#include "Logger.h"
#include "clang/Frontend/CompilerInvocation.h"
#include "clang/Tooling/ArgumentsAdjusters.h"
#include "clang/Tooling/CompilationDatabase.h"
#include "llvm/ADT/Optional.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"

namespace clang {
namespace clangd {
namespace {

void adjustArguments(tooling::CompileCommand &Cmd,
llvm::StringRef ResourceDir) {
// Strip plugin related command line arguments. Clangd does
// not support plugins currently. Therefore it breaks if
// compiler tries to load plugins.
Cmd.CommandLine =
tooling::getStripPluginsAdjuster()(Cmd.CommandLine, Cmd.Filename);
// Inject the resource dir.
// FIXME: Don't overwrite it if it's already there.
if (!ResourceDir.empty())
Cmd.CommandLine.push_back(("-resource-dir=" + ResourceDir).str());
}

std::string getStandardResourceDir() {
static int Dummy; // Just an address in this process.
return CompilerInvocation::GetResourcesPath("clangd", (void *)&Dummy);
}

} // namespace

static std::string getFallbackClangPath() {
static int Dummy;
Expand Down Expand Up @@ -106,8 +130,11 @@ DirectoryBasedGlobalCompilationDatabase::getCDBForFile(
}

OverlayCDB::OverlayCDB(const GlobalCompilationDatabase *Base,
std::vector<std::string> FallbackFlags)
: Base(Base), FallbackFlags(std::move(FallbackFlags)) {
std::vector<std::string> FallbackFlags,
llvm::Optional<std::string> ResourceDir)
: Base(Base), ResourceDir(ResourceDir ? std::move(*ResourceDir)
: getStandardResourceDir()),
FallbackFlags(std::move(FallbackFlags)) {
if (Base)
BaseChanged = Base->watch([this](const std::vector<std::string> Changes) {
OnCommandChanged.broadcast(Changes);
Expand All @@ -116,16 +143,22 @@ OverlayCDB::OverlayCDB(const GlobalCompilationDatabase *Base,

llvm::Optional<tooling::CompileCommand>
OverlayCDB::getCompileCommand(PathRef File, ProjectInfo *Project) const {
llvm::Optional<tooling::CompileCommand> Cmd;
{
std::lock_guard<std::mutex> Lock(Mutex);
auto It = Commands.find(File);
if (It != Commands.end()) {
if (Project)
Project->SourceRoot = "";
return It->second;
Cmd = It->second;
}
}
return Base ? Base->getCompileCommand(File, Project) : None;
if (!Cmd && Base)
Cmd = Base->getCompileCommand(File, Project);
if (!Cmd)
return llvm::None;
adjustArguments(*Cmd, ResourceDir);
return Cmd;
}

tooling::CompileCommand OverlayCDB::getFallbackCommand(PathRef File) const {
Expand Down
5 changes: 4 additions & 1 deletion clang-tools-extra/clangd/GlobalCompilationDatabase.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

#include "Function.h"
#include "Path.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/StringMap.h"
#include <memory>
#include <mutex>
Expand Down Expand Up @@ -98,7 +99,8 @@ class OverlayCDB : public GlobalCompilationDatabase {
// Base may be null, in which case no entries are inherited.
// FallbackFlags are added to the fallback compile command.
OverlayCDB(const GlobalCompilationDatabase *Base,
std::vector<std::string> FallbackFlags = {});
std::vector<std::string> FallbackFlags = {},
llvm::Optional<std::string> ResourceDir = llvm::None);

llvm::Optional<tooling::CompileCommand>
getCompileCommand(PathRef File, ProjectInfo * = nullptr) const override;
Expand All @@ -113,6 +115,7 @@ class OverlayCDB : public GlobalCompilationDatabase {
mutable std::mutex Mutex;
llvm::StringMap<tooling::CompileCommand> Commands; /* GUARDED_BY(Mut) */
const GlobalCompilationDatabase *Base;
std::string ResourceDir;
std::vector<std::string> FallbackFlags;
CommandChanged::Subscription BaseChanged;
};
Expand Down
15 changes: 15 additions & 0 deletions clang-tools-extra/clangd/Threading.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
#include <thread>
#ifdef __USE_POSIX
#include <pthread.h>
#elif defined(__APPLE__)
#include <sys/resource.h>
#elif defined (_WIN32)
#include <Windows.h>
#endif

namespace clang {
Expand Down Expand Up @@ -121,6 +125,17 @@ void setCurrentThreadPriority(ThreadPriority Priority) {
Priority == ThreadPriority::Low && !AvoidThreadStarvation ? SCHED_IDLE
: SCHED_OTHER,
&priority);
#elif defined(__APPLE__)
// https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getpriority.2.html
setpriority(PRIO_DARWIN_THREAD, 0,
Priority == ThreadPriority::Low && !AvoidThreadStarvation
? PRIO_DARWIN_BG
: 0);
#elif defined(_WIN32)
SetThreadPriority(GetCurrentThread(),
Priority == ThreadPriority::Low && !AvoidThreadStarvation
? THREAD_MODE_BACKGROUND_BEGIN
: THREAD_MODE_BACKGROUND_END);
#endif
}

Expand Down
10 changes: 4 additions & 6 deletions clang-tools-extra/clangd/index/Background.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,13 +127,12 @@ llvm::SmallString<128> getAbsolutePath(const tooling::CompileCommand &Cmd) {
} // namespace

BackgroundIndex::BackgroundIndex(
Context BackgroundContext, llvm::StringRef ResourceDir,
const FileSystemProvider &FSProvider, const GlobalCompilationDatabase &CDB,
Context BackgroundContext, const FileSystemProvider &FSProvider,
const GlobalCompilationDatabase &CDB,
BackgroundIndexStorage::Factory IndexStorageFactory,
size_t BuildIndexPeriodMs, size_t ThreadPoolSize)
: SwapIndex(llvm::make_unique<MemIndex>()), ResourceDir(ResourceDir),
FSProvider(FSProvider), CDB(CDB),
BackgroundContext(std::move(BackgroundContext)),
: SwapIndex(llvm::make_unique<MemIndex>()), FSProvider(FSProvider),
CDB(CDB), BackgroundContext(std::move(BackgroundContext)),
BuildIndexPeriodMs(BuildIndexPeriodMs),
SymbolsUpdatedSinceLastIndex(false),
IndexStorageFactory(std::move(IndexStorageFactory)),
Expand Down Expand Up @@ -230,7 +229,6 @@ void BackgroundIndex::enqueue(tooling::CompileCommand Cmd,
BackgroundIndexStorage *Storage) {
enqueueTask(Bind(
[this, Storage](tooling::CompileCommand Cmd) {
Cmd.CommandLine.push_back("-resource-dir=" + ResourceDir);
// We can't use llvm::StringRef here since we are going to
// move from Cmd during the call below.
const std::string FileName = Cmd.Filename;
Expand Down
16 changes: 7 additions & 9 deletions clang-tools-extra/clangd/index/Background.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class BackgroundIndexStorage {
llvm::unique_function<BackgroundIndexStorage *(llvm::StringRef)>;

// Creates an Index Storage that saves shards into disk. Index storage uses
// CDBDirectory + ".clangd-index/" as the folder to save shards.
// CDBDirectory + ".clangd/index/" as the folder to save shards.
static Factory createDiskBackedStorageFactory();
};

Expand All @@ -68,13 +68,12 @@ class BackgroundIndex : public SwapIndex {
/// If BuildIndexPeriodMs is greater than 0, the symbol index will only be
/// rebuilt periodically (one per \p BuildIndexPeriodMs); otherwise, index is
/// rebuilt for each indexed file.
// FIXME: resource-dir injection should be hoisted somewhere common.
BackgroundIndex(Context BackgroundContext, llvm::StringRef ResourceDir,
const FileSystemProvider &,
const GlobalCompilationDatabase &CDB,
BackgroundIndexStorage::Factory IndexStorageFactory,
size_t BuildIndexPeriodMs = 0,
size_t ThreadPoolSize = llvm::hardware_concurrency());
BackgroundIndex(
Context BackgroundContext, const FileSystemProvider &,
const GlobalCompilationDatabase &CDB,
BackgroundIndexStorage::Factory IndexStorageFactory,
size_t BuildIndexPeriodMs = 0,
size_t ThreadPoolSize = llvm::heavyweight_hardware_concurrency());
~BackgroundIndex(); // Blocks while the current task finishes.

// Enqueue translation units for indexing.
Expand All @@ -99,7 +98,6 @@ class BackgroundIndex : public SwapIndex {
BackgroundIndexStorage *IndexStorage);

// configuration
std::string ResourceDir;
const FileSystemProvider &FSProvider;
const GlobalCompilationDatabase &CDB;
Context BackgroundContext;
Expand Down
8 changes: 4 additions & 4 deletions clang-tools-extra/clangd/index/BackgroundIndexStorage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,19 +64,19 @@ writeAtomically(llvm::StringRef OutPath,
}

// Uses disk as a storage for index shards. Creates a directory called
// ".clangd-index/" under the path provided during construction.
// ".clangd/index/" under the path provided during construction.
class DiskBackedIndexStorage : public BackgroundIndexStorage {
std::string DiskShardRoot;

public:
// Sets DiskShardRoot to (Directory + ".clangd-index/") which is the base
// Sets DiskShardRoot to (Directory + ".clangd/index/") which is the base
// directory for all shard files.
DiskBackedIndexStorage(llvm::StringRef Directory) {
llvm::SmallString<128> CDBDirectory(Directory);
llvm::sys::path::append(CDBDirectory, ".clangd-index/");
llvm::sys::path::append(CDBDirectory, ".clangd", "index");
DiskShardRoot = CDBDirectory.str();
std::error_code OK;
std::error_code EC = llvm::sys::fs::create_directory(DiskShardRoot);
std::error_code EC = llvm::sys::fs::create_directories(DiskShardRoot);
if (EC != OK) {
elog("Failed to create directory {0} for index storage: {1}",
DiskShardRoot, EC.message());
Expand Down
15 changes: 7 additions & 8 deletions clang-tools-extra/docs/README.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
-------------------------------------------------------------
Documentation for the tools of clang-tools-extra repo project
-------------------------------------------------------------
----------------------------------
Documentation in clang-tools-extra
----------------------------------

Sphinx and doxygen documentation is generated by executing make.
To generate documentation in HTML format from files in clang-tools-extra/docs,
build the docs-clang-tools-html target.

Sphinx html files can be generated separately using make html.
To generate documentation from the source code using Doxygen, build the
doxygen-clang-tools target.

Doxygen html files can also be generated using make doxygen.

The generated documentation will be placed in _build/html.
Loading