Commit Graph

55 Commits

Author SHA1 Message Date
Doug Gregor
793b3326af Implement the new rules for argument label defaults.
The rule changes are as follows:
  * All functions (introduced with the 'func' keyword) have argument
  labels for arguments beyond the first, by default. Methods are no
  longer special in this regard.
  * The presence of a default argument no longer implies an argument
  label.

The actual changes to the parser and printer are fairly simple; the
rest of the noise is updating the standard library, overlays, tests,
etc.

With the standard library, this change is intended to be API neutral:
I've added/removed #'s and _'s as appropriate to keep the user
interface the same. If we want to separately consider using argument
labels for more free functions now that the defaults in the language
have shifted, we can tackle that separately.

Fixes rdar://problem/17218256.

Swift SVN r27704
2015-04-24 19:03:30 +00:00
Luqman Aden
a33c518e98 tests: use substitution to pick the right llvm-link.
Swift SVN r27621
2015-04-23 01:51:47 +00:00
Luqman Aden
ce4bff5645 Frontend: Allow passing .sil as -primary-file along with other .sib as input.
Swift SVN r27612
2015-04-22 22:53:18 +00:00
Manman Ren
63184b250b Fix testing case for rdar://20485995
Swift SVN r27182
2015-04-09 21:57:29 +00:00
Manman Ren
0f7fb29331 [bitcode] use __swift_cmdline instead of __cmdline to differentiate from clang.
Swift SVN r25716
2015-03-03 20:00:19 +00:00
Graham Batty
98be432723 Updating tests and flags for linux
Swift SVN r25714
2015-03-03 18:26:20 +00:00
Manman Ren
9d680564db [Driver] fix support for -embed-bitcode-marker.
Move helper function EmbedBitcode() from frontend_main.cpp to IRGen.cpp so we
can call it from performIRGeneration when the input file is Swift.

Add testing case to make sure that -embed-bitcode-marker option adds an
empty LLVM bitcode section.

rdar://19048891


Swift SVN r25577
2015-02-27 00:37:35 +00:00
Manman Ren
48fa3d2e21 [Driver] actually embed bitcode and command line arguments for -embed-bitcode.
With -embed-bitcode, save a copy of the llvm IR as data in the __LLVM,__bitcode
section and save the command-line options in the __LLVM,__cmdline section.

rdar://19048891


Swift SVN r25560
2015-02-26 20:29:46 +00:00
Manman Ren
d39f8e49a8 [Driver] make Swift accept bitcode input.
Thanks Jordan for reviewing the patches.
rdar://19048891


Swift SVN r25558
2015-02-26 19:31:09 +00:00
Jordan Rose
879ce47526 [test] Fix RUN lines missing their RUN.
Swift SVN r25409
2015-02-20 02:26:50 +00:00
Jordan Rose
8f615f5549 Frontend: don't crash using -emit-reference-dependencies without -primary-file.
For now, just emit a warning. Later on we can actually get this right for
multiple files.

This is important for people manually trying to reduce run lines that come
from Xcode.

rdar://problem/19786899

Swift SVN r25388
2015-02-19 02:28:32 +00:00
Michael Gottesman
a598b46fc1 Add support for -Oplayground and add some sanity tests for it.
Right now this is just like -Onone. We will add further optimizations as
needed.

<rdar://problem/19328293>

Swift SVN r25377
2015-02-18 22:30:26 +00:00
Dmitri Hrybenko
f43843f25c tests: use the new substitution for the mock SDK
This is required to correctly use the mock SDK when the SDK overlay is
built and tested separately.  (Otherwise, the mock SDK might not get
used, because the overlay SDK options would expand from the
%-substitution, appear first on the command line, and shadow the mock
SDK in the search path).

Swift SVN r25185
2015-02-11 18:57:29 +00:00
Graham Batty
83b4384fac Update test flags for linux failures and support.
Also removed the sdk 'feature' in favour of the more specific
objc_interop.

Swift SVN r24856
2015-01-30 21:31:48 +00:00
Jordan Rose
da46727f8f Always emit .d and .swiftdeps files, even if there were errors in the AST.
Yes, they may not be correct, but the stale ones that were there before
won't be correct either (if they were there at all). This should make both
Xcode and the Swift driver less likely to have issues when there's an error
in a newly added file.

Goes with rdar://problem/19640006

Swift SVN r24824
2015-01-29 21:59:23 +00:00
Dmitri Hrybenko
3b04d1b013 tests: reorganize tests so that they actually use the target platform
Most tests were using %swift or similar substitutions, which did not
include the target triple and SDK.  The driver was defaulting to the
host OS.  Thus, we could not run the tests when the standard library was
not built for OS X.

Swift SVN r24504
2015-01-19 06:52:49 +00:00
Jordan Rose
97b3a3da40 Include cross-module dependencies in swiftdeps files.
These are the same dependencies collected for .d files, including
headers and imported swiftmodules. These can also cause a file to be out
of date.

Part of rdar://problem/19270920

Swift SVN r24334
2015-01-10 00:38:09 +00:00
Jordan Rose
7da40344e9 [test] Weaken test for .d file generation.
The SwiftShims module is a private dependency of the standard library,
so it shouldn't really show up in the generated .d file. However, it's
doing any harm by being there in +Asserts builds, so for now just don't
check. See rdar://problem/19318312.

Swift SVN r24096
2014-12-23 01:24:50 +00:00
Dmitri Hrybenko
dab5fe14fe test/Frontend/dependencies.swift fails when the compiler is built
without assertions, XFAIL it.

Swift SVN r24059
2014-12-20 09:42:55 +00:00
David Farler
31a43d893d Disable OptimizationOptions-without-stdlib-checks
Because the bots build a release+asserts compiler and an unchecked stdlib, this
test is not currently applicable. The checked version of this test was disabled
but this test should've been disabled as well.

Original commit message r23074:

Fix the bots by requiring two options on this test that never can co-exist as true.

This is to work around a bug on the unchecked optimized stdlib builder which due
to a problem in the cmake build chain runs the checks enabled version of this
test. This commit makes sure that the test will not run until this is resolved.

Swift SVN r23624
2014-12-03 00:04:40 +00:00
Graham Batty
83f27a8af7 Revert "Mark tests that don't pass on linux as XFAIL."
This reverts commit 2711ca86de7bf6a7885ccea24219a48a590b1e95.

Swift SVN r23577
2014-11-24 17:42:13 +00:00
Graham Batty
198402dcfe Mark tests that don't pass on linux as XFAIL.
Swift SVN r23573
2014-11-24 17:40:37 +00:00
Michael Gottesman
5f32f6b3d8 Fix the bots by requiring two options on this test that never can co-exist as true.
This is to work around a bug on the unchecked optimized stdlib builder which due
to a problem in the cmake build chain runs the checks enabled version of this
test. This commit makes sure that the test will not run until this is resolved.

Swift SVN r23074
2014-11-03 01:41:37 +00:00
Michael Gottesman
38f4ab8caa XFAIL this test so we can get perf numbers. It is due to a configuration issue on the buildbots.
Swift SVN r23045
2014-11-01 00:16:22 +00:00
Michael Gottesman
43707235f2 Really fix this test by creating separate tests one for when the stdlib is compiled with checks and one where it is not.
Swift SVN r23035
2014-10-31 17:57:42 +00:00
Michael Gottesman
9d838980d0 [func-sig-opts] Fixup test.
Swift SVN r23029
2014-10-31 04:40:35 +00:00
Joe Groff
e3f9a2035c SIL: Move SILGen and passes over to use "builtin" instead of "apply (builtin_function_ref)".
Swift SVN r22785
2014-10-15 23:37:22 +00:00
Erik Eckstein
e59c4b6eb7 Add -primary-file options to prevent whole-module-optimizations.
This is needed for tests which define internal functions which should not be eliminated.

So far this was not needed because of a hack which prevented whole-module-optimizations for tests.



Swift SVN r22658
2014-10-10 09:51:48 +00:00
Dave Abrahams
b108945c46 [stdlib] Break up shims.h
More things are going to be declared in shims, in part to reduce the use
of @asmname, and we'll want to keep this organized.

Swift SVN r22574
2014-10-07 21:40:45 +00:00
Jordan Rose
30c65eff7e [ClangImporter] Use Clang's driver to handle options, not its frontend.
This is most important for -Xcc options, which shouldn't be dependent on
the underlying Clang version, but it also affects things like target features
that Clang knows how to compute correctly and Swift, well, doesn't.

rdar://problem/17687572

Swift SVN r22448
2014-10-01 23:55:35 +00:00
Erik Eckstein
92dc4ee237 Don't increment refcounts of inlined SILFunctions for the purpose of debug info generation.
This prevented dead function removal of inlined dead functions. Beside the stdlib it's mostly
an issue of SIL size (and therefore compiletime), because llvm did remove such functions anyway.



Swift SVN r22301
2014-09-26 16:07:26 +00:00
Argyrios Kyrtzidis
da95aadb4b [ClangImporter] Make sure we don't crash if clang emits diagnostics because of the provided clang compiler arguments.
rdar://18068354

Swift SVN r21823
2014-09-10 01:18:32 +00:00
Argyrios Kyrtzidis
628567bfe5 [Frontend] Make it erroneous if no frontend action is specified when invoking the frontend, and update tests.
Swift SVN r21584
2014-08-29 19:17:37 +00:00
Sean Callanan
2c50b0ca48 swift -frontend "" shouldn't enter the REPL by default.
This patch fixes a problem where a CompilerInvocation
with no arguments would set the LangaugeOpts etc. up for
the deprecated-integrated-repl, including setting the
module name etc.  Now this only happens if you explicitly
invoke swift -frontend -repl.

Updated testcases that care, and added a new testcase to
ensure that an error is properly generated.

<rdar://problem/17918172>


Swift SVN r21537
2014-08-28 18:38:13 +00:00
Greg Parker
fd28d2c62b [test] Change the -Xllvm test to use more stable llvm options.
Swift SVN r21467
2014-08-26 23:25:56 +00:00
Dmitri Hrybenko
938e7c2676 stdlib: introduce UnicodeScalarLiteralConvertible protocol
This allows UnicodeScalars to be constructed from an integer, rather
then from a string.  Not only this avoids an unnecessary memory
allocation (!) when creating a UnicodeScalar, this also allows the
compiler to statically check that the string contains a single scalar
value (in the same way the compiler checks that Character contains only
a single extended grapheme cluster).

rdar://17966622

Swift SVN r21198
2014-08-14 16:04:39 +00:00
Jordan Rose
0481b87ba5 Move target configuration setup into CompilerInvocation.
Without this, clients that don't use a CompilerInstance (like LLDB) won't
have target configuration options available.

Also, move minimum OS checking into the driver. This makes sure the check
happens early (and only once), and in general fits the philosophy of
allowing the frontend to use configurations that might be banned for users.

<rdar://problem/17688913>

Swift SVN r20701
2014-07-29 21:48:59 +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
Jordan Rose
b6818046a8 Eliminate optimization levels 0-3 in favor of -Onone/-O/-Ofast.
We were already effectively doing this everywhere /except/ when building
the standard library (which used -O2), so just use the model we want going
forward.

Swift SVN r20455
2014-07-24 01:12:59 +00:00
Jordan Rose
836c9d6eb4 Rename -Ofast to -Ounchecked.
<rdar://problem/17202004>

Swift SVN r20454
2014-07-24 01:12:56 +00:00
Greg Parker
ea87c75c1d [test] Add a test that runs swift -Xllvm.
This catches code that tries to use the llvm::cl interface. Those options 
are used by -Xllvm's processing and must not be interfered with.


Swift SVN r20146
2014-07-18 06:59:35 +00:00
Jordan Rose
fce31decdc Serialize bridging headers into the merged module file.
We do this so that the swiftmodule file contains all info necessary to
reconstruct the AST for debugging purposes. If the swiftmodule file is copied
into a dSYM bundle, it can (in theory) be used to debug a built app months
later. The header is processed with -frewrite-includes so that it includes
any non-modular content; the user will not have to recreate their project
structure and header maps to reload the AST.

There is some extra complexity here: a target with a bridging header
(such as a unit test target) may depend on another target with a bridging
header (such as an app target). This is a rare case, but one we'd like to
still keep working. However, if both bridging headers import some common.h,
we have a problem, because -frewrite-includes will lose the once-ness
of #import. Therefore, we /also/ store the path, size, and mtime of a
bridging header in the swiftmodule, and prefer to use a regular parse from
the original file if it can be located and hasn't been changed.

<rdar://problem/17688408>

Swift SVN r20128
2014-07-18 00:22:53 +00:00
Ted Kremenek
d075f06573 Require a minimum deployment target of iOS 7 or OSX 10.9
Implements <rdar://problem/17532113>

Swift SVN r19451
2014-07-02 06:23:38 +00:00
Arnold Schwaighofer
93f871e5e3 Get rid of some control flow for precondition checks
We can use cond_fail instead of control flow and int_trap. This should help
avoid some control flow in release builds.

Swift SVN r18940
2014-06-16 23:44:30 +00:00
Jordan Rose
770a3dda3b Fix memory-smashing logic error in dependency file generation.
Accessed the wrong array...

Swift SVN r18535
2014-05-21 23:33:51 +00:00
Arnold Schwaighofer
da6d9152b6 Differentiate between user assertion and preconditions and the like
assert() and fatalError()
These functions are meant to be used in user code. They are enabled in debug
mode and disabled in release or fast mode.

_precondition() and _preconditionFailure()
These functions are meant to be used in library code to check preconditions at
the api boundry. They are enabled in debug mode (with a verbose message) and
release mode (trap). In fast mode they are disabled.

_debugPrecondition() and _debugPreconditionFailure()
These functions are meant to be used in library code to check preconditions that
are not neccesarily comprehensive for safety (UnsafePointer can be null or an
invalid pointer but we can't check both). They are enabled only in debug mode.

_sanityCheck() and _fatalError()
These are meant to be used for internal consistency checks. They are only
enabled when the library is build with -DSWIFT_STDLIB_INTERNAL_CHECKS=ON.

I modified the code in the standard library to the best of my judgement.

rdar://16477198

Swift SVN r18212
2014-05-16 20:49:54 +00:00
Jordan Rose
8f67532022 Weaken ordering requirements in test/Frontend/dependencies.swift.
This failed on my ninja build, and it's really not important.

Swift SVN r18056
2014-05-14 01:59:46 +00:00
Jordan Rose
2877bd0854 Add support for dependency file generation with -emit-dependencies.
This performs very conservative dependency generation for each compile task
within a full compilation. Any source file, swiftmodule, or Objective-C
header file that is /touched/ gets added to the dependencies list, which
is written out on a per-input basis at the end of compilation.

This does /not/ handle dependencies for the aggregated swiftmodule, swiftdoc,
generated header, or linked binary. This is just the minimum needed to get
Xcode to recognize what needs to be rebuilt when a header or Swift source
file changes. We can revisit this later.

This finishes <rdar://problem/14899639> for now.

Swift SVN r18045
2014-05-14 00:34:11 +00:00
Ted Kremenek
fad874708e Adjust test cases.
Swift SVN r17964
2014-05-12 22:01:52 +00:00
Arnold Schwaighofer
cfad6454aa Add more support for various safety checks.
_precondition_safety_check

  The check is enabled in debug and release mode. In debug mode it prints a
  useful error message. In release mode it traps. In fast mode this is a noop.

_partial_safety_check

  The check is only enabled in debug mode (-Onone).

_internal_library_check

  The check is only enabled when the standard library is compiled with
  "SWIFT_STDLIB_INTERNAL_CHECKS" set to on/yes. It is a noop if the above option
  is not specified.

rdar://16477198

Swift SVN r17789
2014-05-09 17:58:24 +00:00