Commit Graph

3016 Commits

Author SHA1 Message Date
Argyrios Kyrtzidis
de6cb0bcfe [Frontend] Handle '-module-source-list' in CompilerInvocation::parseArgs.
Swift SVN r10327
2013-11-10 23:49:35 +00:00
Argyrios Kyrtzidis
5a673d2e77 [Frontend] Handle '-serialize-diagnostics' in CompilerInvocation::parseArgs.
Swift SVN r10326
2013-11-10 23:49:34 +00:00
Dmitri Hrybenko
21d1b2f4b8 @objc: produce diagnostics if a variable is explicitly marked @objc but can not
be represented in Objective-C


Swift SVN r10073
2013-11-09 05:30:03 +00:00
Dmitri Hrybenko
d19d82e876 Parser: fix a crash on extra closing brace in parse-as-library mode
rdar://15359129


Swift SVN r10071
2013-11-09 02:44:56 +00:00
Dmitri Hrybenko
d6012459c3 Eliminate IsTopLevel parameter from Parser::parseBraceItems() -- its value can
be computed from other parameter.


Swift SVN r10069
2013-11-09 02:06:39 +00:00
John McCall
abebe416c3 Allow substitution to walk into reference storage types.
For now, don't allow transforms to work on SILFunctionTypes.

Swift SVN r10066
2013-11-09 01:41:12 +00:00
John McCall
555b57ca00 The constant types on ASTContexts are all canonical.
Swift SVN r10065
2013-11-09 01:41:11 +00:00
Joe Groff
554abf2d7a IRGen/Runtime: Expose extra inhabitants of class types.
Start using null-page values as extra inhabitants when laying out single-payload enums that contain class pointers as their payload type. Don't use inhabitants that set the lowest bit, to avoid trampling potential ObjC tagged pointer representations. This means that 'T?' for class type T now has a null pointer representation. Enums with multiple empty cases, as well as nested enums like 'T??', should now have optimal representations for class type T as well.

Note that we don't yet expose extra inhabitants for aggregates that contain heap object references, such as structs with class fields, Swift function types, or class-bounded existentials (even when the existential has no witness tables).

Swift SVN r10061
2013-11-09 00:43:40 +00:00
John McCall
2ed33e4ffa Make convenient accessors for getting a lowered SILType for
a struct/class field or a tuple element.

Make DefiniteInitialization traffic in SILTypes more.

Swift SVN r10055
2013-11-08 22:04:04 +00:00
Chris Lattner
3d7208c724 comment typo
Swift SVN r10054
2013-11-08 21:59:41 +00:00
John McCall
d715c2c7de Provide a simple IntRange class as well as an 'indices'
function for getting the indices of a vector or array.

Swift SVN r10049
2013-11-08 20:51:05 +00:00
Connor Wakamo
2b3a922aa5 Move SerializedDiagnosticConsumer into swiftFrontend.
This matches where Clang implements its equivalent, and this makes it available to both swift and the new driver.

Swift SVN r10047
2013-11-08 19:26:13 +00:00
Argyrios Kyrtzidis
ac8d86d2d6 [Frontend] In CompilerInvocation::parseArgs() parse the output filename argument.
Swift SVN r10043
2013-11-08 18:29:39 +00:00
Argyrios Kyrtzidis
6fb1dce5c1 [Frontend] When setting up the buffers for a CompilerInstance, allow a memory buffer to
provide the contents of a filename, based on its buffer identifier.

Swift SVN r10042
2013-11-08 18:29:38 +00:00
Joe Groff
9c0e07fe35 SIL: Capture generic parameters through nested closures.
We were failing to capture generic parameters from closure contexts that themselves capture generic parameters from context. This fixes <rdar://problem/15417783>. While we're here, eliminate some unnecessary splitting of 'ClosureExpr' and 'AutoClosureExpr' in the SILDeclRef::Loc PointerUnion; we can just use their base class AbstractClosureExpr in the PointerUnion.

Swift SVN r10031
2013-11-07 23:39:37 +00:00
Sonny Falk
2ba1d6cec9 [IDE] Remove IBAction / IBOutlet specific SyntaxStructureKind values, and pass through the DeclAttributes instead.
Swift SVN r10028
2013-11-07 19:35:30 +00:00
Joe Groff
774db24a8a Enable importing of NS_ENUMs as Swift enums.
A problem with name lookup from Clang module contexts <rdar://problem/15410928> means I have to disable a ~= overload in the ObjectiveC overlay. Other than that, NS_ENUM import should be ready to go.

Swift SVN r10018
2013-11-07 03:49:37 +00:00
Argyrios Kyrtzidis
44d46de7c9 Use swift::SourceManager's addNewSourceBuffer() instead of llvm::SourceMgr's AddNewSourceBuffer().
Also remove the SourceLoc parameter from addNewSourceBuffer(). In llvm::SourceMgr
it is used to indicate textual inclusion, which we don't have in swift.

Swift SVN r10014
2013-11-07 00:51:56 +00:00
Sonny Falk
7594f89ac6 [IDE] Annotate IBAction/IBOutlet with their own SyntaxStructureKind.
Swift SVN r10009
2013-11-06 23:30:23 +00:00
Anna Zaks
d3495ec5d4 Use ASCII quotes in the diagnostic message.
Swift SVN r10001
2013-11-06 20:02:23 +00:00
Anna Zaks
f8a79a56fb Address the reviews for r9982
Swift SVN r9999
2013-11-06 19:46:20 +00:00
Doug Gregor
eb7ce396db Use VarDecl::get[GS]etterType() and SubscriptDecl::get[GS]etterType() in SILGen
Eliminate SILGen's own computation of getter/setter types in favor of
the AST methods to compute the same.


Swift SVN r9992
2013-11-06 06:53:13 +00:00
Greg Parker
49e1856c13 Add Builtin.[trunc|zext|sext]OrBitCast() instead of hijacking the true casts.
Swift SVN r9985
2013-11-06 03:15:04 +00:00
Anna Zaks
c8ed1954f2 Issue a warning when returned expression is on the next line after the return keyword.
We still want to allow line wrapping, so only issue the warning when the indentation of the expression and the return keyword is the same.

radar://11945406

Swift SVN r9984
2013-11-06 02:00:13 +00:00
John McCall
00dad2e89f Thread an isSILType bit through the validateType APIs.
Has no effect... yet.

Swift SVN r9983
2013-11-06 01:56:40 +00:00
John McCall
dfd3c165a0 Switch resolveType over to a visitor.
Incidentally make a few syntactic checks proceed by looking
at the TypeRepr instead of the Type.

Swift SVN r9982
2013-11-06 01:56:39 +00:00
Jordan Rose
93295737f0 [serialization] Initial -multi-file-output support.
If given a SourceFile, only decls within that SourceFile will be serialized.
Decls within other SourceFiles are emitted using cross-references that refer
to the current module.

Known issues:
- External definitions won't be serialized by any source file. They probably
  have to be serialized into /all/ of them.
- Nothing can actually /read/ a serialized partial-module yet. We need a
  notion of a TranslationUnit that can contain both source and serialized
  files, and we probably need loading to be more lazy.

Swift SVN r9978
2013-11-06 00:11:00 +00:00
Dmitri Hrybenko
61c067fe5f Implement a check in Sema to find self-assignment
rdar://14151649 suggests that it should be a warning, but I don’t see a reason
why it should not be an error.  We have no legacy code that relies on this.


Swift SVN r9976
2013-11-05 23:43:54 +00:00
Doug Gregor
d79b1758c1 Add getter/setter type computations to VarDecl and SubscriptDecl.
Use the getter type computation for dynamic subscript references so
that we can handle optional subscripts in protocols properly.


Swift SVN r9975
2013-11-05 23:31:13 +00:00
Doug Gregor
84a4c08f1d Factor the computation of the 'self' type into an easier-to-use place.
Swift SVN r9973
2013-11-05 22:51:17 +00:00
Anna Zaks
54524e622a Replace ExprStmtOrDecl with ASTNode and make it a struct.
Previously, the Parser and BranchStmt typedef-ed ExprStmtOrDecl as a pointer union. Using typedef made the objects compatible, but did not allow us to extend the type with helper methods, such as getSourceRange(), which is something you can get on all of the AST objects. This patch introduces ASTNode that subclasses from PointerUnion and is used by both parser and BranchStmt.

Swift SVN r9971
2013-11-05 21:46:59 +00:00
Mark Lacey
0ec7617a2c Simplify enum and Int1 integer_literal instructions.
In cases like the one below, replace the integer_literal instructions
with the condition branching to the block that the instruction is in.

    cond_br %10, bb1, bb3

  bb1:
    %13 = integer_literal $Builtin.Int1, -1
    br bb2(%13 : $Builtin.Int1)

  bb3:
    %18 = integer_literal $Builtin.Int1, 0
    br bb2(%18 : $Builtin.Int1)

Similarly, for
    switch_enum %0 : $Bool, case #Bool.true!enumelt: bb1
  bb1:
    %1 = enum $Bool, #Bool.true!enumelt

  we'll replace the enum with %0.

Use this functionality from within the CFG simplification pass to
simplify basic block args in an attempt to expose opportunities for
further CFG simplification.

Swift SVN r9968
2013-11-05 19:11:45 +00:00
Doug Gregor
6145fc3fa9 Restrict @optional to members of an @objc protocol.
Optional protocol methods are almost trivially implementable for
Objective-C protocols, so start with this over-zealous restriction. We
intend to lift this restriction later.


Swift SVN r9961
2013-11-05 16:13:38 +00:00
Doug Gregor
e5ca2c90d0 Parse @optional attribute on protocol members.
Swift SVN r9959
2013-11-05 15:58:19 +00:00
Dmitri Hrybenko
2e53423e33 ASTContext: add "the one true way" to get the stdlib module
Swift SVN r9952
2013-11-05 01:40:24 +00:00
Joe Groff
16c5d69e17 ClangImporter: Recognize NS_ENUM declarations and import as Swift enums.
When we see an enum declaration in the Clang importer, look at its source location to see if it was produced as part of an NS_ENUM macro expansion. If so, take the 'Enum' route through the Clang importer and import it as a Swift enum. This will break things until we have end-to-end support for Clang-imported enums, so hide it behind an -import-ns-enum switch for now.

Swift SVN r9951
2013-11-05 01:38:00 +00:00
Dmitri Hrybenko
24f090c36e Factor out a table of builtin Clang types <-> Swift CTypes
Swift SVN r9950
2013-11-05 01:21:51 +00:00
Anna Zaks
16774496fd [SILGen] Emit warnings when SILGen fails to emit unreachable code.
Previously, we just did not emit SIL for unreachable code from these examples.

Swift SVN r9949
2013-11-05 01:17:14 +00:00
Anna Zaks
a48d832bb2 Improve error message
Swift SVN r9948
2013-11-05 01:17:13 +00:00
Jordan Rose
b43dd09107 All SourceFiles should always remember their buffer IDs, not just imports.
Swift SVN r9946
2013-11-04 23:50:48 +00:00
Doug Gregor
f7e285d9b3 Revert r9937; getInnermostDeclContext() doesn't do what we need
Swift SVN r9942
2013-11-04 23:44:27 +00:00
Doug Gregor
25b604fe82 getInnermostDeclContext() is already better than getPotentialGenericDeclContext().
Swift SVN r9939
2013-11-04 23:17:43 +00:00
Joe Groff
1616276923 SILGen: Remove 'SILGenLValuePeepholes' flag.
r9931 fixes the crashes this exposes, so we can enable it by default now.

Swift SVN r9935
2013-11-04 22:54:54 +00:00
Chris Lattner
f6d339526d fix typo
Swift SVN r9934
2013-11-04 22:43:52 +00:00
Jordan Rose
553983f584 Fix misuse of alignof, which returns alignment as 2^N instead of N.
If we constexpr'd some of the functions in MathExtras we could use
log2(alignof(T)), but for now just hardcode a literal "3".

Swift SVN r9928
2013-11-04 18:22:25 +00:00
Doug Gregor
ce104ed48b Introduce ValueDecl::getPotentialGenericDeclContext()
This little "find the context where the generic parameters could be"
idiom was copy-pasted in a few places, which is ugly. And if we get
generic subscripts (or some other generic value decl), we'll be sorry.


Swift SVN r9927
2013-11-04 18:21:16 +00:00
Chris Lattner
db86f4dad1 Bump SILValue up to allow 2 bits of result number, enabling instructions to produce up to 4 results.
Swift SVN r9924
2013-11-04 18:02:08 +00:00
Chris Lattner
82567f9ffb SILValue is just a wrapper around its ValueAndResultNumber. Derive
the number of low bits available in it from the #bits in ValueAndResultNumber,
instead of computing it independently.


Swift SVN r9922
2013-11-04 17:54:42 +00:00
Chris Lattner
2909a0e129 teach simplifycfg to constant fold switch_enum instructions, now that
all the tuple stuff is out of the way.  This kicks in 600 times in the
stdlib and ends up shrinking the stdlib by 2500 lines (down to 53209).


Swift SVN r9903
2013-11-03 16:52:50 +00:00
Chris Lattner
68af974227 Remove 'axle' related code and build machinery. It turns out that we
will not be pursuing this project in the immediate future.



Swift SVN r9901
2013-11-03 16:04:27 +00:00