Conditionally parse documentation comments in system headers by
passing -fretain-comments-from-system-headers. By default, the compiler no longer parses such documentation comments, as they can result in a noticeable compile time/PCH slowdown. Fixes <rdar://problem/11860820>. llvm-svn: 163778
This commit is contained in:
parent
17674ec8c6
commit
b47e6bc597
|
@ -514,6 +514,8 @@ public:
|
|||
}
|
||||
|
||||
void addComment(const RawComment &RC) {
|
||||
assert(LangOpts.RetainCommentsFromSystemHeaders ||
|
||||
!SourceMgr.isInSystemHeader(RC.getSourceRange().getBegin()));
|
||||
Comments.addComment(RC, BumpAlloc);
|
||||
}
|
||||
|
||||
|
|
|
@ -166,6 +166,8 @@ LANGOPT(ApplePragmaPack, 1, 0, "Apple gcc-compatible #pragma pack handling")
|
|||
BENIGN_LANGOPT(EmitMicrosoftInlineAsm , 1, 0,
|
||||
"Enable emission of MS-style inline assembly.")
|
||||
|
||||
BENIGN_LANGOPT(RetainCommentsFromSystemHeaders, 1, 0, "retain documentation comments from system headers in the AST")
|
||||
|
||||
#undef LANGOPT
|
||||
#undef VALUE_LANGOPT
|
||||
#undef BENIGN_LANGOPT
|
||||
|
|
|
@ -468,6 +468,7 @@ def fmodule_cache_path : Separate<"-fmodule-cache-path">, Group<i_Group>,
|
|||
HelpText<"Specify the module cache path">;
|
||||
def fmodules : Flag <"-fmodules">, Group<f_Group>, Flags<[NoForward,CC1Option]>,
|
||||
HelpText<"Enable the 'modules' language feature">;
|
||||
def fretain_comments_from_system_headers : Flag<"-fretain-comments-from-system-headers">, Group<f_Group>, Flags<[CC1Option]>;
|
||||
|
||||
def fmudflapth : Flag<"-fmudflapth">, Group<f_Group>;
|
||||
def fmudflap : Flag<"-fmudflap">, Group<f_Group>;
|
||||
|
|
|
@ -2785,6 +2785,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
CmdArgs.push_back(Args.MakeArgString(A->getValue(Args)));
|
||||
}
|
||||
|
||||
if (Args.hasArg(options::OPT_fretain_comments_from_system_headers))
|
||||
CmdArgs.push_back("-fretain-comments-from-system-headers");
|
||||
|
||||
// Forward -Xclang arguments to -cc1, and -mllvm arguments to the LLVM option
|
||||
// parser.
|
||||
Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
|
||||
|
|
|
@ -2151,6 +2151,9 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
|
|||
|
||||
Opts.EmitMicrosoftInlineAsm = Args.hasArg(OPT_fenable_experimental_ms_inline_asm);
|
||||
|
||||
Opts.RetainCommentsFromSystemHeaders =
|
||||
Args.hasArg(OPT_fretain_comments_from_system_headers);
|
||||
|
||||
unsigned SSP = Args.getLastArgIntValue(OPT_stack_protector, 0, Diags);
|
||||
switch (SSP) {
|
||||
default:
|
||||
|
|
|
@ -1026,6 +1026,9 @@ LambdaScopeInfo *Sema::getCurLambda() {
|
|||
}
|
||||
|
||||
void Sema::ActOnComment(SourceRange Comment) {
|
||||
if (!LangOpts.RetainCommentsFromSystemHeaders &&
|
||||
SourceMgr.isInSystemHeader(Comment.getBegin()))
|
||||
return;
|
||||
RawComment RC(SourceMgr, Comment);
|
||||
if (RC.isAlmostTrailingComment()) {
|
||||
SourceRange MagicMarkerRange(Comment.getBegin(),
|
||||
|
|
Loading…
Reference in New Issue