Commit Graph

307 Commits

Author SHA1 Message Date
Nathan Hawes 0a4204e99f [Driver] Add -driver-filelist-threshold to set the number of inputs beyond which filelists are used
When generating a compiler invocation in driver::createCompilerInvocation()
we end up using filelists if the number of inputs is > 128 (to work around
command line arg limits). We never actually write them out though, and so
fail when parsing the frontend arguments that reference them.

As this function is called frequently by SourceKit and command line limits
aren't a concern here, this patch makes the 128 threshold value configurable
via a new -driver-filelist-threshold option. This is set to its maximum value
in driver::createCompilerInvocation() to ensure filelists aren't used. This
new option makes the existing -driver-use-filelists (that forces filelists to
be used) redundant as it's now equivalent to -driver-filelist-threshold=0.

Resolves rdar://problem/38231888
2018-04-12 05:24:03 -07:00
Rintaro Ishizaki 2cec8dfc99 [Driver] Factor out build-record filename construction
* Retrive filename for read and write at the same time.
* Read LastBuildTime directly from the build record.
2018-04-03 20:39:55 +09:00
Rintaro Ishizaki 18ceef56e3 [Driver] Use separated build record file for '-emit-module' only mode
* In full compilation '-c' with '-emit-module', output duplicated build
  record file for full compilation *and* emit module ('~moduleonly') mode.
* In '-emit-module' only mode, use '~moduleonly' build record.
2018-04-02 21:04:13 +09:00
David Ungar 4fa3001bd1 Harden compiler against -num-threads and -enable-batch-mode. 2018-03-26 17:04:31 -07:00
David Ungar 807dd5864e Renamed swift::types to swift::file_types. 2018-03-22 08:40:06 -07:00
David Ungar e3535ff3d8 Merge pull request #15371 from davidungar/PR-18-11-fileMap-redo
[Batch mode] Write out filemaps for supplementary outputs.
2018-03-21 17:05:36 -07:00
David Ungar 90773d298c Write out filemaps for supplementary outputs.
Add -driver-force-one-batch-repartition and enhance  batch_mode-overlong_argv test.
2018-03-20 09:42:13 -07:00
Pavel Yaskevich fd3610b8c0 Revert "[Batch mode] Write supplementary output file map. rdar://problem/38157859" 2018-03-17 21:01:46 -07:00
David Ungar a0cd1c57bc Merge pull request #15013 from davidungar/PR-18-11-fileMap
[Batch mode] Write supplementary output file map. rdar://problem/38157859
2018-03-16 17:38:53 -07:00
David Ungar 919c224d5a Handle index file path differently. 2018-03-15 22:00:16 -07:00
David Ungar 3a0acdaf0c Fix supplementary output filemap generation to account for CommandOutput. 2018-03-15 21:28:56 -07:00
David Ungar 9dcbaa38f7 Factor out writeOutputFileMap 2018-03-15 13:54:43 -07:00
David Ungar e499aeda9b Redo force repartion flag and add a test. 2018-03-13 17:20:12 -07:00
David Ungar 3570af7476 Fixes 2018-03-12 15:40:08 -07:00
David Ungar 180bdd61be Implement -index-file-path 2018-03-11 11:48:21 -07:00
David Ungar ba1a714dbe Formatting 2018-03-10 16:10:38 -08:00
David Ungar c9db72c1cb Debug macro 2018-03-09 19:58:20 -08:00
David Ungar 65267c6568 WIP 2018-03-09 15:45:38 -08:00
David Ungar adfda9bbc8 Add -driver-force-one-batch-repartition and enhance batch_mode-overlong_argv test. 2018-03-09 13:54:44 -08:00
David Ungar 798dd7b490 Write out filemaps for supplementary outputs. 2018-03-09 13:54:44 -08:00
Graydon Hoare fa830fe5aa [BatchMode] Preserve invariant that shuffled batches are subsequences of inputs. 2018-03-09 10:13:04 -08:00
Sho Ikeda cea6c03eb2 [gardening] Use !empty() over size() > 0 2018-03-08 09:21:09 +09:00
David Ungar 90d2740817 Merge pull request #14961 from davidungar/PR-18-10-HHH
[Batch mode] Restore -### functionality for batch-mode by extending OutputLevel.
2018-03-06 09:54:03 -08:00
Graydon Hoare 6c9029ead8 [BatchMode] Fix rdar://38123690 a little more robustly. 2018-03-05 13:43:30 -08:00
Graydon Hoare eb315e74ed [BatchMode] Temporarily cap max batch size, fixing rdar://38123690 2018-03-05 12:28:48 -08:00
Graydon Hoare 899c1f5b87 [Driver] Handle failure-to-exec somewhat more politely, rdar://37865437. 2018-03-05 12:28:48 -08:00
David Ungar 17a81f6981 Restore -### functionality for batch-mode by extending OutputLevel. 2018-03-05 11:07:20 -08:00
Graydon Hoare 7981714214 [BatchMode] Make driver report exits per-batch, not per-constituent. 2018-03-02 00:32:30 -08:00
Graydon Hoare 263c4c54d5 [BatchMode] Preserve intra-batch order, add a seed mode. 2018-02-20 18:31:41 -08:00
Graydon Hoare 57fe9ee57a [BatchMode] Add driver::PerformJobsState logic for BatchJobs. 2018-02-15 15:38:09 -08:00
Graydon Hoare 3d9ce0afb9 [BatchMode] Store -{enable,disable}-batch-mode as a flag in Compilation. 2018-02-15 15:38:09 -08:00
Graydon Hoare a2c718777d [BatchMode] Pass OutputInfo to Compilation on construction. 2018-02-15 15:38:08 -08:00
Graydon Hoare ef61f721d4 [BatchMode] Change all CommandOutputs to use a shared OutputFileMap. 2018-02-09 14:08:50 -08:00
Graydon Hoare d139ab2968 [BatchMode] Expand lifetime of ToolChain, pass reference to it to Compilation. 2018-01-24 10:31:19 -08:00
Graydon Hoare d74c1a512a [BatchMode] Make InvocationInfo and Job support multiple FilelistInfos, NFC. 2018-01-19 15:15:08 -08:00
Graydon Hoare 22775c87a9 [BatchMode] Add FilelistInfo::WhichFiles::PrimaryInputs, NFC. 2018-01-19 14:16:20 -08:00
Graydon Hoare 0f09a95679 [BatchMode] Change FiellistInfo::WhichFiles to an enum class, NFC. 2018-01-19 14:05:42 -08:00
Graydon Hoare 173e702da2 [Stats] Add a pair of counters to track failed processes. 2017-11-08 19:53:36 -08:00
Jordan Rose 47872d9190 [Driver] Transfer all ownership of Actions to the Compilation.
Previously, Actions were responsible for freeing their inputs...
except for the ones that weren't. Or the ones that were supposed
to, but then they needed to share an input, so they couldn't anymore.
If this sounds ridiculous, you're right; now Actions are just
immediately allocated and owned by the Compilation.

The graph structure of the actions is still useful for some things; in
particular, "top-level" actions get to put their outputs somewhere
permanent rather than TMPDIR. But I expect these things to get cleaned
up in the future too.
2017-08-11 21:09:34 -07:00
Jordan Rose 64df9b1edc [Driver] Actually free Actions instead of just leaking them.
Fixes rdar://problem/32518867, though in a fairly messy way. Next
commit will clean this up again.
2017-08-11 21:09:34 -07:00
Jordan Rose a875d8c7c7 [Driver] Preserve filelists when a subprocess crashes. (#9849)
This should make it easier to rerun crashed jobs that use filelists;
previously you'd have to run the top-level driver command again with
-save-temps. I didn't want to save /all/ temporary files because that
often includes things like .o files, which could fill up your disk
pretty quickly. But we can always tweak this later.
2017-05-22 17:14:20 -07:00
practicalswift 431e5a1440 [gardening] Use consistent end of namespace comments 2017-04-20 13:47:10 +02:00
Graydon Hoare 0245c83c4b [Stats] Add -stats-output-dir, wire UnifiedStatsReporter into place. 2017-04-03 18:08:59 -07:00
Graydon Hoare 1c3a54bfa5 [Driver] Only warn on .swiftdeps load-fail with -driver-show-incremental. 2017-03-01 09:07:21 -08:00
Graydon Hoare ec5d4f3ea1 [Driver] Put new job-lifecycle diagnostic chatter behind another option. 2017-03-01 09:07:21 -08:00
Graydon Hoare 99df2082cd [Driver] Clear deferred commands on each task queue iteration. 2017-03-01 09:07:20 -08:00
Graydon Hoare 4583e910b8 [Driver] Extract dependencyLoadFailed, add optional warning. 2017-02-28 15:17:26 -08:00
Graydon Hoare 423d9fe054 [Driver] Extract reloadAndRemarkDeps from taskFinished. 2017-02-28 15:17:26 -08:00
Graydon Hoare ab5201f60e [Driver] Make PerformJobsState a mostly-private class. 2017-02-28 15:17:26 -08:00
Graydon Hoare 211d09759c [Driver] Move populateInputInfoMap into PerformJobsState. 2017-02-28 15:17:25 -08:00