Commit Graph

1260 Commits

Author SHA1 Message Date
swift-ci
cdde06ac25 Merge remote-tracking branch 'origin/master' into master-next 2017-04-27 15:56:02 -07:00
David Farler
63776b507b When converting some of the old Migrator automation to the new Migrator,
I had set up the driver to invoke a separate frontend invocation with
the "update code" mode. We sort of did this last release, except we
forked to the swift-update binary instead. This is causing problems with
testing in Xcode.

Instead, let's perform a single compile and add the remap file as an
additional output during normal compiles. The driver, seeing
-update-code, will add -emit-remap-file-path $PATH to the -c frontend
invocation.

rdar://problem/31857580
2017-04-27 01:03:00 -07:00
Huon Wilson
45bda6fe79 [Frontend] Change LOADED_MODULE_TRACE_PATH -> ..._FILE.
Accidentally wrote down the wrong name initially.
2017-04-25 13:19:49 -07:00
Xi Ge
2a2731a797 migrator: add a flag to print incoming usrs to the API diff data store to facilitate testing. NFC (#8969) 2017-04-24 13:53:55 -07:00
swift-ci
2d8df36a08 Merge remote-tracking branch 'origin/master' into master-next 2017-04-21 13:28:31 -07:00
Huon Wilson
d0739294ed Merge pull request #8887 from huonw/emit-loaded-module-trace
[Frontend] -frontend -emit-loaded-module-trace.
2017-04-21 13:25:52 -07:00
Huon Wilson
9c6c7c5105 [Driver] Support the SWIFT_LOADED_MODULE_TRACE_PATH env var.
This overrides -emit-loaded-module-trace (etc.).
2017-04-21 11:14:30 -07:00
Huon Wilson
7e8568d03d [Driver] Main compiler tells frontend to -emit-loaded-module-trace. 2017-04-21 11:14:29 -07:00
Huon Wilson
87aa3e6935 [Frontend] -frontend -emit-loaded-module-trace.
The -frontend jobs can output a JSON file summarizing the
swiftmodules (etc.) they load during compilation.
2017-04-21 11:14:29 -07:00
swift-ci
019d53d07a Merge remote-tracking branch 'origin/master' into master-next 2017-04-20 18:48:30 -07:00
Xi Ge
c55b43efc0 [Migrator] Add the simple transformation from global variables to static member variables. (#8865)
This should also handle global string to string enum migration.
2017-04-20 18:36:33 -07:00
swift-ci
8932679fa1 Merge remote-tracking branch 'origin/master' into master-next 2017-04-20 13:08:31 -07:00
practicalswift
431e5a1440 [gardening] Use consistent end of namespace comments 2017-04-20 13:47:10 +02:00
swift-ci
0a7a14e29c Merge remote-tracking branch 'origin/master' into master-next 2017-04-17 16:28:36 -07:00
David Farler
303a3e5824 Start the Migrator library
The Swift 4 Migrator is invoked through either the driver and frontend
with the -update-code flag.

The basic pipeline in the frontend is:

- Perform some list of syntactic fixes (there are currently none).
- Perform N rounds of sema fix-its on the primary input file, currently
  set to 7 based on prior migrator seasons.  Right now, this is just set
  to take any fix-it suggested by the compiler.
- Emit a replacement map file, a JSON file describing replacements to a
  file that Xcode knows how to understand.

Currently, the Migrator maintains a history of migration states along
the way for debugging purposes.

- Add -emit-remap frontend option
  This will indicate the EmitRemap frontend action.
- Don't fork to a separte swift-update binary.
  This is going to be a mode of the compiler, invoked by the same flags.
- Add -disable-migrator-fixits option
  Useful for debugging, this skips the phase in the Migrator that
  automatically applies fix-its suggested by the compiler.
- Add -emit-migrated-file-path option
  This is used for testing/debugging scenarios. This takes the final
  migration state's output text and writes it to the file specified
  by this option.
- Add -dump-migration-states-dir

  This dumps all of the migration states encountered during a migration
  run for a file to the given directory. For example, the compiler
  fix-it migration pass dumps the input file, the output file, and the
  remap file between the two.

  State output has the following naming convention:
  ${Index}-${MigrationPassName}-${What}.${extension}, such as:
  1-FixitMigrationState-Input.swift

rdar://problem/30926261
2017-04-17 16:25:02 -07:00
Bob Wilson
07019d964d Update Swift master-next after LLVM API change in r300135. 2017-04-13 12:30:04 -07:00
John McCall
b233e872dc Fix the type-checker's recursive value type checking.
Track the types we've seen instead of the type declarations we've
passed through, which eliminates some holes relating to generic types.
Detect infinite expansions by imposing an arbitrary limit.

Fixes rdar://30355804
2017-04-12 15:55:45 -04:00
swift-ci
c39ffda2b8 Merge pull request #8477 from graydon/rdar-30961871-metrics-mark-2 2017-04-03 20:39:16 -07:00
Graydon Hoare
0245c83c4b [Stats] Add -stats-output-dir, wire UnifiedStatsReporter into place. 2017-04-03 18:08:59 -07:00
Doug Gregor
6244abf9f9 [Driver] Surface -warn-swift3-objc-inference to swiftc.
The `-warn-swift3-objc-inference` option turns out to be extremely
useful in vetting code for unintended `@objc` entry points, so make it
available directly on `swiftc`.

But, bury the enable/disable flags under `-frontend` (they were
effectively there anyway because the driver wasn't propagating them).
2017-03-31 21:53:59 -07:00
Huon Wilson
fba2ab49dc Merge pull request #8301 from huonw/symbol-list
Initial TBD push: list of (some) public symbols
2017-03-29 12:48:22 -07:00
Jordan Rose
8d3351c8ce Merge pull request #8404 from jrose-apple/Fsystem-is-not-a-linker-flag
[Driver] Fix passing -Fsystem to the linker.
2017-03-29 09:59:14 -07:00
Jordan Rose
4ad2ea5c0c [Driver] Fix passing -Fsystem to the linker.
-Fsystem is not a linker flag. Pass it as -F to ld on Apple platforms,
and -iframework to Clang on other platforms.
2017-03-29 08:59:57 -07:00
Huon Wilson
4eff6f1374 [FrontendTool] -emit-tbd and -validate-tbd-against-ir flags.
These, respectively, write a list of symbols to a file, and compare what
that list would be against the "true" list (the symbol names in the IR).
2017-03-28 16:31:09 -07:00
Devin Coughlin
b4b59b424d [Driver] Add command-line flags for enforcement of law of exclusivity
Add an -enforce-exclusivity=... flag to control enforcement of the law of
exclusivity. The flag takes one of four options:

"checked": Perform both static (compile-time) and dynamic (run-time) checks.
"unchecked": Perform only static enforcement. This is analogous to -Ounchecked.
"dynamic-only": Perform only dynamic checks. This is for staging purposes.
"none": Perform no checks at all. This is also for staging purposes.

The default, for now, is "none".

The intent is that in the fullness of time, "checked" and "unchecked" will
be the only legal options with "checked" the default. That is, static
enforcement will always be enabled and dynamic enforcement will be enabled
by default.
2017-03-28 10:54:37 -07:00
Matthew Carroll
d12daa736a [Driver] SR-2396: Driver should have a -verify-debug-info option
Add a -verify-debug-info option that invokes dwarfdump --verify as the last step after running dsymutil. dwarfdump is invoked with same options clang 802.0.35 uses to invoke it:

dwarfdump --verify --debug-info --eh-frame --quiet

A warning is produced if -verify-debug-info is set and no debug option is also set.

dwarfdump is failing to validate the debug info in the test verify-debug-info.swift. The failure is:
error: .debug_line[0x0000007d].row[0].file = 1 is not a valid index

https://bugs.swift.org/browse/SR-2396
2017-03-24 16:42:39 -04:00
Hugh Bellamy
d9879522fb Fix top of tree Clang unused lambda capture warnings 2017-03-21 19:15:08 +07:00
swift-ci
099effd29b Merge pull request #8119 from huonw/imported-modules 2017-03-20 17:52:41 -07:00
Huon Wilson
55b2ba2524 [Frontend] Add -emit-imported-modules: listing modules imported by the current one.
This is purely designed to cheaply compute dependency graphs between
modules, and thus only lists the top-level names (i.e. not submodules)
and doesn't do any form of semantic analysis.
2017-03-17 18:44:03 -07:00
swift-ci
31e33efc8d Merge pull request #8134 from akyrtzi/fsystem-preserve-driver-order 2017-03-15 18:45:30 -07:00
Argyrios Kyrtzidis
29d507527d [Driver] Preserve the relative order of '-F' and '-Fsystem' search paths, when creating the frontend invocation
Some projects may be setup in a way where the order of '-F' flags is significant and changing the order, by turning some
of them to '-Fsystem', can break them.
2017-03-15 16:49:03 -07:00
Graydon Hoare
d711c0443f [Bridging PCH] Only emit deps for CompileJobActions rdar://31016087 2017-03-14 17:39:59 -07:00
Erik Eckstein
5e80555c9b demangler: put the demangler into a separate library
Previously it was part of swiftBasic.

The demangler library does not depend on llvm (except some header-only utilities like StringRef). Putting it into its own library makes sure that no llvm stuff will be linked into clients which use the demangler library.

This change also contains other refactoring, like moving demangler code into different files. This makes it easier to remove the old demangler from the runtime library when we switch to the new symbol mangling.

Also in this commit: remove some unused API functions from the demangler Context.

fixes rdar://problem/30503344
2017-03-09 13:42:43 -08:00
Matthew Carroll
69ae6cd588 [Driver] SR-3352: Warn on and ignore -embed-bitcode when not generating object files (#7962)
Commands like -emit-sil and -emit-module (on its own) do not produce object files.
When -embed-bitcode is also set, the driver runs a backend job to generate a module that fails.
This commit emits a warning instead and ignores the -embed-bitcode option.

https://bugs.swift.org/browse/SR-3352
2017-03-07 15:19:08 -08:00
Graydon Hoare
fae468f951 [Bridging PCH] Serialize diagnostics in -emit-pch step. 2017-03-06 15:11:44 -08: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
a381aa1c4e [Driver] Differentiate logging of the special "" provided member. 2017-02-28 15:17:27 -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
Graydon Hoare
9d0e7e0e99 [Driver] Factor out PerformJobsState::checkUnfinishedJobs. 2017-02-28 15:17:25 -08:00
Graydon Hoare
f83ee9fd2f [Driver] Factor out PerformJobsState::runTaskQueueToCompletion. 2017-02-28 15:17:25 -08:00
Graydon Hoare
1b3a4347a8 [Driver] Factor out PerformJobsState::schedule*Jobs. 2017-02-28 15:17:25 -08:00
Graydon Hoare
6d21711d02 [Driver] Move TaskQueue callbacks to PerformJobsState. 2017-02-28 15:17:24 -08:00
Graydon Hoare
f7e9598d08 [Driver] Clean up some comments. 2017-02-28 15:17:24 -08:00
Graydon Hoare
b8c26ef5cd [Driver] Move more temp Job sets to PerformJobsState. 2017-02-28 15:17:24 -08:00
Graydon Hoare
e81d0f4ca1 [Driver] Pass Tracer to markTransitive everywhere. 2017-02-28 15:17:24 -08:00