Add "interface hash" for improved incremental builds.

Compute the hash of all interface tokens when parsing; write the
interface hash to the swiftdeps file, or if the -dump-interface-hash
option is passed to the frontend. This hash will be used in incremental
mode to determine whether a file's interface has changed, and therefore
whether dependent files need to be rebuilt in response to the change.

Committed on ChrisW's behalf while he gets his setup unborked.

rdar://problem/15352929

Swift SVN r30477
This commit is contained in:
Jordan Rose
2015-07-22 00:13:54 +00:00
parent 50a667b295
commit fbb8d3f9a8
18 changed files with 240 additions and 7 deletions

View File

@@ -168,6 +168,8 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
Action = FrontendOptions::DumpAST;
} else if (Opt.matches(OPT_dump_type_refinement_contexts)) {
Action = FrontendOptions::DumpTypeRefinementContexts;
} else if (Opt.matches(OPT_dump_interface_hash)) {
Action = FrontendOptions::DumpInterfaceHash;
} else if (Opt.matches(OPT_print_ast)) {
Action = FrontendOptions::PrintAST;
} else if (Opt.matches(OPT_repl) ||
@@ -336,6 +338,7 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
case FrontendOptions::Parse:
case FrontendOptions::DumpParse:
case FrontendOptions::DumpInterfaceHash:
case FrontendOptions::DumpAST:
case FrontendOptions::PrintAST:
case FrontendOptions::DumpTypeRefinementContexts:
@@ -524,6 +527,7 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
switch (Opts.RequestedAction) {
case FrontendOptions::NoneAction:
case FrontendOptions::DumpParse:
case FrontendOptions::DumpInterfaceHash:
case FrontendOptions::DumpAST:
case FrontendOptions::PrintAST:
case FrontendOptions::DumpTypeRefinementContexts:
@@ -549,6 +553,7 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
switch (Opts.RequestedAction) {
case FrontendOptions::NoneAction:
case FrontendOptions::DumpParse:
case FrontendOptions::DumpInterfaceHash:
case FrontendOptions::DumpAST:
case FrontendOptions::PrintAST:
case FrontendOptions::DumpTypeRefinementContexts:
@@ -576,6 +581,7 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
case FrontendOptions::NoneAction:
case FrontendOptions::Parse:
case FrontendOptions::DumpParse:
case FrontendOptions::DumpInterfaceHash:
case FrontendOptions::DumpAST:
case FrontendOptions::PrintAST:
case FrontendOptions::DumpTypeRefinementContexts: