Commit Graph

1784 Commits

Author SHA1 Message Date
Ben Langmuir
920a8ff343 Make using the -i flag an error
This flag is now obsoleted by the interactive driver and simply
complicates understanding the command-line parsing. Making it an error
to force users to move also allows us to reuse the flag in the future if
we like.

Swift SVN r20641
2014-07-28 20:19:27 +00:00
Doug Gregor
ff92b5f007 Remove -[no]implicit-objc-with.
Toggling this option causes funny things to happen, and there's no
point in keeping it.

Swift SVN r20565
2014-07-25 22:13:46 +00:00
Ben Langmuir
07a3c7cbd5 Switch to the new swift/swiftc commmand line interface
This makes the command line interface to 'swift' the same as what was
previously in 'swifti', and removes the staging symlink.

For posterity, the command line behaviour for 'swift' is now:
* `swift` -> start the repl
* `swift script.swift` -> run script.swift (the old -i mode)
* Any arguments after the input file are forwarded to the script as
  Process.arguments
* A shebang line is something like #!/usr/bin/xcrun swift

The batch compiler 'swiftc' behaves much like the old 'swift'
executable, but without the interactive bits now in 'swifti'.

<rdar://problem/17710788>

Swift SVN r20540
2014-07-25 13:28:21 +00:00
Jordan Rose
f1fe319119 [Driver] Don't save .o in -g mode anymore (unless asked to).
Now that we invoke dsymutil before cleaning up temporaries, we don't need to
keep them around for later debugging.

<rdar://problem/16877574>

Swift SVN r20530
2014-07-25 01:31:44 +00:00
Jordan Rose
69533b53f7 [Driver] Invoke dsymutil after linking when invoked with -g.
This matches Clang's behavior, though this implementation does not check
that it's actually on a platform that uses dsymutil.

<rdar://problem/16012971>

Swift SVN r20529
2014-07-25 01:31:40 +00:00
Ben Langmuir
d2ef235237 Move the lit tests over to the new swift/swiftc interfaces
Most of the tests just got moved to swiftc, but some of them were
duplicated to apply to both swiftc and swift. A handful still use the
existing 'swift' because they are for the existing '-i' syntax.

Note: this means config.swift_driver now uses the staging symlink
'swifti'. The only thing preventing us from dropping the 'i' and getting
rid of the old interface is that Xcode hasn't moved to swiftc yet
<rdar://problem/17769327>.

Swift SVN r20467
2014-07-24 04:34:10 +00:00
Ben Langmuir
309d00706c Make swiftc default to -emit-executable even with no inputs
Running the repl here doesn't fit with the interactive/batch-compilation
split.

Swift SVN r20453
2014-07-24 01:04:40 +00:00
Ben Langmuir
915657fe3d Introduce NoInteractiveOption and NoBatchOption opt flags
... and use them to start diagnosing unsupported mode flag and
DriverKind combinations (e.g. swifti -c, swiftc -i). Also hide the
unsupported options from -help.

Swift SVN r20452
2014-07-24 01:04:37 +00:00
Ben Langmuir
afd88cab2a Add parsing support for swifti
Parse until the first input, and then collect the remaining arguments
and forward them to the script.

Swift SVN r20437
2014-07-23 22:42:05 +00:00
Jordan Rose
79224874eb [Driver] Switch debug info to use ld's new -add_ast_path option.
Rather than embed AST info directly in binaries, we now include a special
symbol table entry that points to the serialized AST as a separate file.
This requires a very recent version of ld.

We still want to support the __SWIFT,__ast section in a binary because
that's how it's modeled in dSYM, so manually test both modes in
ASTSection_linker.swift.

Part of <rdar://problem/15796201>.

Swift SVN r20421
2014-07-23 18:04:10 +00:00
Dmitri Hrybenko
fe326db2f5 Update for upstream LLVM changes
Swift SVN r20409
2014-07-23 16:15:20 +00:00
Ben Langmuir
a96009c52f Add a 'swifti' symlink to stage in the upcoming driver changes
For now, keep 'swift' the same and put all the interactive driver
changes under 'swifti'. When these are in good shape, I will remove
swifti and make 'swift' the interactive driver as discussed.

Swift SVN r20359
2014-07-23 02:30:39 +00:00
Doug Gregor
076d310132 Remove -import-tighter-objc-types option; we're turning it on by default.
Swift SVN r20191
2014-07-18 23:25:38 +00:00
Connor Wakamo
497eeffa55 [driver] Allow -force-single-frontend-invocation and -emit-objc-header[-path] to be used together.
Added support in Driver which allows -force-single-frontend-invocation and
-emit-objc-header[-path] to be used together in a single invocation.

Added support in tools::Swift to pass -emit-objc-header-path if an Objective-C
header was requested; this is only valid in OutputInfo::Mode::SingleCompile
mode, and an assertion enforces this.

Added a test which ensures that the same header is emitted in with
-force-single-frontend-invocation and without it.

Swift SVN r20185
2014-07-18 22:04:29 +00:00
Argyrios Kyrtzidis
ba557198f3 [Driver] clang::driver::getARMCPUForMArch() moved to llvm::Triple::getARMCPUForArch().
Depends on llvm r212846.

Swift SVN r19865
2014-07-12 00:06:22 +00:00
Doug Gregor
bd9ead4371 Remove -[no-]strict-keyword-arguments.
Swift SVN r19850
2014-07-11 16:58:35 +00:00
Jordan Rose
ce51ad0228 [Driver] Set -target-cpu options for x86 targets as well.
Really we need to just bring in Clang's logic for this, but this should
at least bring SSE back for the 32-bit simulator.

<rdar://problem/17283844>

Swift SVN r19834
2014-07-10 22:50:02 +00:00
Connor Wakamo
04e1110bd1 Fix the ordering of #includes in lib/Driver/Tools.cpp.
This was mistakenly placed in the wrong place when I resolved a local merge conflict earlier.

Swift SVN r19832
2014-07-10 22:05:53 +00:00
Connor Wakamo
0fe539f579 Renamed swift::createDriverOptTable() to swift::createSwiftOptTable().
Swift SVN r19827
2014-07-10 20:51:54 +00:00
Connor Wakamo
2d6c9e9062 Moved Swift's option table from swiftDriver into a new swiftOption library.
This allows swiftFrontend to drop its dependency on swiftDriver, and could
someday allow us to move the integrated frontend's option parsing out of
swiftFrontend (which would allow other tools which use swiftFrontend to
exclude the option table entirely).

Swift SVN r19824
2014-07-10 20:51:50 +00:00
Chris Lattner
5b49d59c57 Remove the @ from @final and @lazy, the last major piece of
rdar://17168115.

Also, reinstate the ARM driver change and testcase that I removed
in my last patch.


Swift SVN r19790
2014-07-10 06:23:27 +00:00
Chris Lattner
fe95f81397 introduce a new 'DeclModifier' flag on attributes, which mark that the
attribute is a "modifier" of a decl, not an "attribute" and thus shouldn't
be spelt with an @ sign.  Teach the parser to parse "@foo" but reject it with
a nice diagnostic and a fixit if "foo" is a decl modifier.

Move 'dynamic' over to this (since it simplifies some code), and switch the
@optional and @required attributes to be declmodifiers (eliminating their @'s).



Swift SVN r19787
2014-07-10 05:49:10 +00:00
Argyrios Kyrtzidis
8dba1a0b7e [Driver] Set the '-target-cpu' for non-64 arm as well.
Depends on clang r212666.
Fixes rdar://17603166

Swift SVN r19774
2014-07-10 01:29:47 +00:00
Jordan Rose
bb6c62d2ca [Driver] Disallow bridging headers with framework targets.
While this appears to work, it causes problems down the line -- it's a
brittle configuration for debugging, and PrintAsObjC currently doesn't
fail gracefully if you reference a bridging-header-only type in your
public interface.

We definitely want something like this to work some day, but don't have
time to fix it now. Filed <rdar://problem/17615898>.

Swift SVN r19762
2014-07-09 23:58:54 +00:00
Ben Langmuir
8b7cc4f619 Make -i compatible with shebangs and forward arguments correctly
The driver option -i now requires an input file as argument, and any
options after the input file will be treated as arguments to the
interpretted file.

This also renames the frontend option to -interpret, since it is parsed
as a flag, unlike -i. We could support -interpret in the driver if we
wanted, which would allow us to use --, but wouldn't work with shebang
scripts. For now, it's frontend-only.

Swift SVN r19718
2014-07-09 02:37:42 +00:00
Pete Cooper
0d0defff9a Update which matches clang r212408, ie, using ErrorOr for file loading
Swift SVN r19607
2014-07-07 14:49:01 +00:00
Anna Zaks
37c3ec4ed1 Rename the -import-tighter-objc-types option and add it to the frontend.
Swift SVN r19535
2014-07-03 21:46:38 +00:00
Adam Nemet
fb3cb3fbd9 Enable TBI for Swift
<rdar://problem/17243596>


Swift SVN r19094
2014-06-23 18:13:47 +00:00
Jordan Rose
76a8ed4b2d [Driver] Eliminate now-unused variable (after r18872).
No functionality change.

Swift SVN r18880
2014-06-13 22:58:43 +00:00
Jordan Rose
9155772014 [Driver] Drop the -arch flag; it does the wrong thing for the iOS simulator.
Clang uses this to produce fat binaries, so we'll probably want to get it
right some day, but for now it's fine to just leave it out.

Swift SVN r18872
2014-06-13 17:27:48 +00:00
Michael Gottesman
9b72aa0e47 Revert "Update to ToT which removed std::error_code"
This reverts commit r18853. This was already fixed by the previous
commit.

Swift SVN r18855
2014-06-13 04:34:18 +00:00
Pete Cooper
676b005839 Update to ToT which removed std::error_code
Swift SVN r18853
2014-06-13 03:50:33 +00:00
Justin Bogner
a0c0dc25be Use std::error_code rather than llvm::error_code
std::error_code is no longer available via the llvm namespace as of
r210835.

Swift SVN r18851
2014-06-13 02:54:07 +00:00
Mark Lacey
dccd703315 Use <system_error> rather than llvm/Support/system_error.h.
Rafael removed the latter in r210803.

Swift SVN r18842
2014-06-12 21:53:16 +00:00
Bob Wilson
9ab1136ba8 Update error_code usage to match llvm trunk.
LLVM's system_error.h has been changed to forward to the standard
version of the same. Update usage for the minor API changes that this
entails.

Based in part on a patch by Justin Bogner.

Swift SVN r18832
2014-06-12 19:48:39 +00:00
Jordan Rose
3f97d035fd [Driver] Allow falling back to / for -i mode if xcrun says to.
After a long discussion with Daniel, the behavior of "xcrun --sdk macosx"
will always pick the best  SDK to use with the Swift found by "xcrun swift".
The only case in which we have a problem is if someone has explicitly
specified the path to a Swift binary, or if someone is on 10.9 but only has
the command line tools installed (in which case they lose anyway).

In order to keep this from polluting the tests, I've changed %swift_driver
to set SDKROOT to an empty path by default. Use -sdk if you need to provide
an SDK in a test, not the SDKROOT environment variable. (This is what
everyone has been doing so far.)

This is still limited to -i and REPL modes; for compilation an explicit SDK
is still required.

<rdar://problem/14395800>

Swift SVN r18770
2014-06-10 01:00:43 +00:00
Jordan Rose
e715940241 [Driver] Teach "swift -i" and "swift -repl" to default to the current OS X SDK.
This only works when swift is packaged with Xcode or installed as a command
line tool, but those are the important cases.

<rdar://problem/14395800>, again.

Swift SVN r18757
2014-06-09 21:29:08 +00:00
Jordan Rose
9e492a508f [Driver] Don't crash when an input file has unknown type.
If we can't determine the type of an input file, we assume it's a linker
input of some sort (like Clang does). However, if we're not actually linking,
this resulted in unused inputs, which the driver choked on.

This commit updates the driver to throw away (and diagnose) inputs that
aren't going to be compiled if they aren't going to be used later on.
It also checks that none of our non-object output types are being treated
as linker inputs, since we do have that information around.

<rdar://problem/16019895>

Swift SVN r18667
2014-05-30 01:44:03 +00:00
Jordan Rose
7cd4341cd6 Force color diagnostics when using the driver from the command line.
Previously, the frontend detected that its output was being piped into the
driver and buffered, and decided that that wasn't a color-friendly output
stream. Now, the driver passes -color-diagnostics to the frontend to force
color output if the driver itself is in a color-output context.

<rdar://problem/16697713>

Swift SVN r18506
2014-05-21 19:45:47 +00:00
Mark Lacey
a052c9d6bb Imported static inline functions should not use AAPCS on 32-bit ARM.
As with ARM64, we need to be specific about the -target-abi or we end up
defaulting to something that is not appropriate for our platforms.

Fixes <rdar://problem/16821282>.

Swift SVN r18163
2014-05-16 02:42:21 +00:00
Jordan Rose
780c6bd87a [Driver] Turn on the LLDB REPL by default!
You can use -integrated-repl to access the previous REPL implementation.

<rdar://problem/16776719>

Swift SVN r18084
2014-05-14 23:23:16 +00:00
Jordan Rose
67f319b747 [Driver] Hook up -emit-dependencies option, but don't do anything with it yet.
Part of <rdar://problem/14899639>

Swift SVN r18044
2014-05-14 00:34:07 +00:00
Jordan Rose
359779d228 [Driver] Fix use-after-free caught by buildbot.
Swift SVN r17990
2014-05-13 02:11:53 +00:00
Jordan Rose
c6c6c6ef0f [Driver] Preserve .o files when compiling with debug info.
Since we don't generate dSYMs yet, this is the only way to create debuggable
binaries.

Thanks, Jim.

Swift SVN r17853
2014-05-10 22:34:35 +00:00
Jordan Rose
087e59eca8 [Driver] Delete temporary files unless -save-temps is passed.
If a temporary file is mentioned in the output map, it is also preserved.
We can make a nicer -save-temps later, but for now this will at least stop
leaving random files in /var/tmp.

<rdar://problem/16874893>

Swift SVN r17850
2014-05-10 21:58:23 +00:00
Jordan Rose
257ee03c5c [driver] Use the target triple's OS version as the linker's min OS version.
This only affects binaries built from the command line. Xcode isn't using
the driver to invoke ld.

Swift SVN r17822
2014-05-10 01:53:35 +00:00
Jordan Rose
3bebef4d29 Pass options to LLDB's REPL.
This is the rest of <rdar://problem/16776705>

Swift SVN r17820
2014-05-10 01:17:39 +00:00
Doug Gregor
d8a27c65df Use AddLastArg properly.
Swift SVN r17797
2014-05-09 20:54:37 +00:00
Jordan Rose
216d8b9521 fixup
Swift SVN r17794
2014-05-09 19:11:10 +00:00
Jordan Rose
737703b325 [Driver] Drop -working-directory option.
This wasn't hooked up correctly anyway. We can add it back if it becomes
important.

Swift SVN r17793
2014-05-09 19:11:10 +00:00