Commit Graph

1784 Commits

Author SHA1 Message Date
Bob Wilson
c765d5e3a5 Merge remote-tracking branch 'origin/master' into master-next 2017-01-12 15:58:19 -08:00
Simon Evans
ab0dbf8ddf SR-2280: swiftc -static-stdlib option fails on Linux (#5269)
- Link in static version of libicu if available in preference to
  the dynamic library when using the -static-stdlib option.
2017-01-11 19:47:41 -08:00
Sean Callanan
399709ccb8 Optionally separate Tasks` stderr from stdout.
Fixes a serious problem where spurious output from xcrun breaks
swift's discovery of libarclite.

<rdar://problem/28573949>
2017-01-11 11:11:23 -08:00
Bob Wilson
37e7d1c627 Merge remote-tracking branch 'origin/master' into master-next 2017-01-08 17:07:46 -08:00
practicalswift
6d1ae2a39c [gardening] 2016 → 2017 2017-01-06 16:41:22 +01:00
Bob Wilson
78b28243ff Merge remote-tracking branch 'origin/master' into master-next 2017-01-03 14:22:59 -08:00
Jordan Rose
19e09c7b3e [Driver] Don't pass a target triple to the REPL or immediate mode. (#6430)
LLDB will automatically pick the host OS if no target is passed; a
later commit will teach immediate mode to do the same thing. For now,
they default to the same triple the Driver did in the past, which is
x86_64-apple-macosx10.9 on macOS and an arbitrary unversioned triple
compatible with the host elsewhere.

Part of rdar://problem/29433205.
2016-12-21 12:54:56 -08:00
practicalswift
38be6125e5 [gardening] C++ gardening: Terminate namespaces, fix argument names, ...
Changes:
* Terminate all namespaces with the correct closing comment.
* Make sure argument names in comments match the corresponding parameter name.
* Remove redundant get() calls on smart pointers.
* Prefer using "override" or "final" instead of "virtual". Remove "virtual" where appropriate.
2016-12-17 00:32:42 +01:00
Bob Wilson
deddf19aae Merge remote-tracking branch 'origin/master' into master-next 2016-12-13 10:23:03 -08:00
Michael Gottesman
59c6a64f5a [gardening] 0 => nullptr. Fixed with clang-tidy. 2016-12-06 23:14:13 -08:00
Jordan Rose
300d690ce0 [Driver] Remove unused "ToolChains" map from the Driver class. (#6114)
We only ever make one toolchain, and it's passed around explicitly
everywhere it's needed.

No functionality change.
2016-12-06 17:27:52 -08:00
Saleem Abdulrasool
2f21735256 adjust for SVN r286524 and SVN r287369
Groups are required for Timers after SVN r286524.  SVN r287369 requires that
timers have short names and long descriptions.  Adjust the API usage
accordingly.  Reorder some words to make some more sense as a description.
2016-12-04 19:35:30 -08:00
Bob Wilson
13da3fa8b1 Merge remote-tracking branch 'origin/master' into master-next 2016-12-04 18:16:09 -08:00
Hugh Bellamy
6c4273fc06 Fix errors and warnings building libSwiftDriver on Windows using MSVC (#5951) 2016-11-30 13:27:11 -08:00
Simon Evans
f6866e7607 [SR-648] Update -static-stdlib option on Linux with libicu changes
- Create a file of linker arguments instead of a hardcoded
  list in ToolChains.cpp for use by -static-stdlib option
2016-11-29 13:36:19 +00:00
Simon Evans
1daa3ee1f8 [SR-648] Add option to create statically linked binaries
- Add ImageInspectionStatic.cpp to lookup protocol conformance
  and metadata sections in static binaries

- For Linux, build libswiftImageInspectionShared.a and
  libswiftImageInspectionStatic.a for linking with libswiftCore.a.
  This allows static binaries to be built without linking to
  libdl. libswiftImageInspectionShared (ImageInspectionELF.cpp) is
  automatically compiled into libswiftCore.so

- Adds -static-executable option to swiftc to use along with
  -emit-executable that uses linker arguments in
  static-executable-args.lnk. This also requires a libicu
  to be compiled using the --libicu which has configure options
  that dont require libdl for accessing ICU datafiles

- Static binaries only work on Linux at this time
2016-11-29 13:36:19 +00:00
David Farler
6d8514b2a3 Add back the -parse flag, which doesn't typecheck 2016-11-28 10:50:55 -08:00
David Farler
b7d17b25ba Rename -parse flag to -typecheck
A parse-only option is needed for parse performance tracking and the
current option also includes semantic analysis.
2016-11-28 10:50:55 -08:00
Janosch Hildebrand
292e6a99a9 [Driver] Pass target triple to -modulewrap invocations (#5922)
-modulewrap invocations create an object file.
The target should be passed along so that the object file is created for the same target as any other outputs.
2016-11-28 08:36:41 -08:00
practicalswift
797b80765f [gardening] Use the correct base URL (https://swift.org) in references to the Swift website
Remove all references to the old non-TLS enabled base URL (http://swift.org)
2016-11-20 17:36:03 +01:00
Brian Gesiak
fc1c81f500 [Frontend] Preserve .swiftdeps files
The Swift compiler uses files with an extension of ".swiftdeps" to store
information about cross-file dependencies. These files are read in at the
start of compilation to compute a dependency graph, and updated as compilation
proceeds. However, because these files are updated on every build, an
issue with dependency analysis is hard to reproduce—the inputs have been
lost.

Address this by renaming swiftdeps files that are about to be
overwritten, to '.swiftdeps~'. This preserves dependency information
from the most recent compilation (but no further back).
2016-11-16 22:51:05 -05:00
Bob Wilson
f10ae47b9f Merge remote-tracking branch 'origin/master' into master-next 2016-11-15 17:32:28 -08:00
Brian Gesiak
6a2d466e4b Merge pull request #5377 from modocache/sr-2855-malformed
[Driver] Show incremental is off with bad JSON
2016-11-14 15:07:56 -05:00
Brian Gesiak
847278e295 [Driver] Show incremental is off with bitcode, WMO
SR-2855 suggests `-driver-show-incremental` not only print information
about why certain files are included in incremental compilation, but
also print out why incremental compilation may be disabled altogether.

Add a message for two such reasons:

1. When whole module compilation is enabled, since optimizations for
   WMO require a full rebuild.
2. When embedding LLVM IR bitcode, which needs to be re-generated.
2016-11-12 16:54:26 -05:00
Bob Wilson
956c7150d5 Tweak my previous changes for reading and writing times.
As far as I know, the previous code worked OK but this version seems
cleaner.
2016-11-09 10:40:40 -08:00
Brian Gesiak
7a21445083 [Driver] Show incremental is off with bad JSON
SR-2855 suggests `-driver-show-incremental` not only print information
about why certain files are included in incremental compilation, but
also print out why incremental compilation may be disabled altogether.

Add a message for one such reason: when the build record file is
malformed.
2016-11-05 13:28:40 -07:00
Bob Wilson
564fc6f22d Clean up my changes for llvm r284966.
Sorry -- I meant to include this with the previous commit. LLVM is
moving away from llvm::sys:TimeValue in favor of std::chrono. For consistency
with LLVM, I used the new llvm::sys::TimePoint type in most places.
There are a few places, like the SourceKit files modified here, where it
makes more sense to use std::chrono directly.
2016-10-28 13:17:26 -07:00
Bob Wilson
5c4f517824 Checkpoint fixes for llvm r284966 (TimeValue) 2016-10-28 12:09:57 -07:00
Brian Gesiak
0e760b532d Show args mismatch in -driver-show-incremental
SR-2855 suggests `-driver-show-incremental` not only print information
about why certain files are included in incremental compilation, but
also print out why incremental compilation may be disabled
altogether.

Add a message for one such reason: when the arguments passed to the Swift
compiler don't match the ones used previously.
2016-10-19 21:54:39 -04:00
Brian Gesiak
c2002ea485 Show inputs mismatch in -driver-show-incremental
SR-2855 suggests `-driver-show-incremental` not only print information
about why certain files are included in incremental compilation, but
also print out why incremental compilation may be disabled altogether.

Add a message for one such reason: when the inputs passed to the
Swift compiler don't match the ones used previously.
2016-10-19 15:13:25 -04:00
Brian Gesiak
88ac6181bb Show version mismatch in -driver-show-incremental
SR-2855 suggests `-driver-show-incremental` not only print information
about why certain files are included in incremental compilation, but
also print out why incremental compilation may be disabled altogether.

Add a message for one such reason: when the version of the Swift
compiler being used to incrementally compile doesn't match the one used
to compile previously.
2016-10-17 18:56:09 -04:00
Brian Gesiak
685a952675 [Driver] Fix typo "BackenJobAction" (NFC) 2016-09-23 09:09:31 -04:00
practicalswift
b057000640 [gardening] Fix recently introduced typos 2016-09-22 17:16:13 +02:00
Graydon Hoare
8970d44675 Add "-swift-version <n>" that sets LangOpts.EffectiveLanguageVersion.
This flag switches the "effective language version" of the compiler,
at least to any version supported (as of this change: "3" or "3.0").

At the moment nothing uses it except the language version build
configuration statements (#if swift(...)) and various other places
that report, encode, or otherwise check version numbers.

In the future, it's intended as scaffolding for backwards compatibility.

Fixes SR-2582
2016-09-20 15:11:37 -07:00
Doug Gregor
4e214687ca [WIP Name binding] Introduce a basic 'scope map' to model scopes in the AST.
The scope map models all of the name lookup scopes within a source
file. It can be queried by source location to find the innermost scope
that contains that source location. Then, one can follow the parent
pointers in the scope to enumerate the enclosing scopes.

The scope map itself is lazily constructed, only creating scope map
nodes when required implicitly (e.g, when searching for a particular
innermost scope) or forced for debugging purposes.

using a lazily-constructed tree that can be searched by source
location. A search within a particular source location will
2016-09-02 17:13:05 -07:00
Brian Gesiak
d08fe89b46 Merge pull request #4493 from modocache/driver-compilation-record
[Driver] Move some string definitions around (NFC)
2016-09-01 20:04:47 -04:00
Brian Gesiak
2b3647efc4 [Driver] Move .swiftdeps strings (NFC)
Define compilation record (.swiftdeps) top-level keys, as well as string
identifiers used in compilation record files (like "!dirty" and "!private"), in
a single location. NFC.
2016-08-30 12:30:14 -04:00
Vivian Kong
0a7d11ab57 Use gold linker on s390x 2016-08-29 15:02:38 -04:00
karwa
20d9b966f0 [Driver] Added -tools-directory option. (#2912)
Provides a path to look for ld (Darwin), or clang/binutils (Unix).
2016-08-25 12:47:55 -07:00
Brian Gesiak
ba8009bfa3 [SR-1788] Add -driver-time-compilation option (#4367)
Add an option to print the time it takes each driver task to complete.

Here's an example of the output:

```
$ swiftc -driver-time-compilation \
         -emit-library -module-name Crispix \
         Crispix/A.swift Crispix/B.swift Crispix/C.swift
===-------------------------------------------------------------------------===
                           Driver Time Compilation
===-------------------------------------------------------------------------===
  Total Execution Time: 0.0000 seconds (0.0875 wall clock)

   ---Wall Time---  --- Name ---
   0.0245 ( 28.0%)  link /path/to/Crispix/A.swift /path/to/Crispix/B.swift /path/to/Crispix/C.swift
   0.0211 ( 24.1%)  compile /path/to/Crispix/A.swift
   0.0209 ( 23.9%)  compile /path/to/Crispix/B.swift
   0.0176 ( 20.1%)  compile /path/to/Crispix/C.swift
   0.0035 (  4.0%)  swift-autolink-extract /path/to/Crispix/A.swift /path/to/Crispix/B.swift /path/to/Crispix/C.swift
   0.0875 (100.0%)  Total
```
2016-08-23 13:35:48 -07:00
Brian Gesiak
cc32f9376d [SR-2400] Add -continue-building-after-errors (#4437)
Currently the Swift driver stops invoking frontend commands as soon as one of
them reports an error. Add a flag to control this behavior, so that users can
choose whether to see all the errors at once or bail out early.
2016-08-22 08:43:03 -07:00
Michael Gottesman
cae9dedde2 Merge pull request #3439 from danielmartin/swift-format-tool
swift-format tool
2016-08-08 21:54:32 -07:00
Daniel Martín
df15ec4f3b Swift-format driver tool
This driver tool formats Swift files or file ranges using some
parameters like tabs or spaces, tab width, or amount of spaces.
2016-08-08 11:07:15 +02:00
Dmitri Gribenko
0a1bfda1ce Merge pull request #3887 from tinysun212/pr-autolink-cygwin
[Autolink] Autolinking on COFF for Cygwin/MinGW
2016-08-07 12:54:57 -07:00
Han Sangjin
0747503b0f [Autolink] Autolinking on COFF for Cygwin/MinGW
Cygwin and MinGW should use the autolink feature in the sameway of Linux
due to the linker's limit. Now swift-autolink-extract recognizes the
COFF format file for Cygwin/MinGW.
2016-08-07 07:20:50 +09:00
Jordan Rose
c9c0df2e55 [Driver] Address Brian G's feedback on 848b3eb. (#4046)
No functionality change.
2016-08-05 17:26:03 -07:00
Jordan Rose
b8cc2673c3 [Driver] Remove debugging code from 848b3eb.
Thanks, Dmitri.
2016-08-03 11:15:49 -07:00
Jordan Rose
848b3eb6a3 [Driver] Make sure to rebuild dependents when a dirty file fails. (#3935)
Otherwise we get into a situation like this:

1. Change made to the interface of file A.swift that also causes an
   error in A.swift.
2. Fixing the error in A.swift does not affect A.swift's interface.
3. File B.swift that depends on A.swift is not rebuilt, since the most
   recent change to A.swift did not change its interface.

To fix this, mark downstream files as needing to be rebuilt even when
a compilation job fails with errors. Additionally, attempt to be extra
conservative when there's a crash.

rdar://problem/25405605
2016-08-02 19:07:29 -07:00
Vedant Kumar
8887175db8 [Driver] Pass the profiling runtime hook to the linker
We need to force-load a hook symbol from the profiling runtime to
convince the Linux linker to load the rest of the library.

This fixes SR-2109.
2016-07-25 11:16:13 -07:00
Han Sangjin
cccfbf4d3c [swiftc/msvc] Compiling with MSVC (#1516)
Some modifications for the ms-extension option of the clang.exe in the Visual Studio 2015 development environment

This patch is only for swiftc.exe. I used the library set of Visual Studio 2015 Update 1 and recent version of swift-clang as the compiler. If you are using the real MSVC compiler, more patch might be required.
2016-07-08 19:06:10 -07:00