Commit Graph

12816 Commits

Author SHA1 Message Date
Doug Gregor
532dd646dc Use "witness" rather than "value witness" to mean a non-type witness in the AST/type checker.
The term "value witness" has a very specific meaning in IR generation,
causing unnecessary confusion.


Swift SVN r6650
2013-07-26 18:34:06 +00:00
Doug Gregor
d0f60ab755 Introduce some encapsulation into ProtocolConformance.
Swift SVN r6648
2013-07-26 18:12:17 +00:00
Joe Groff
f866e5af25 Revert "IRGen: Pass existentials as generic parameters by unwrapping the container."
This reverts commit r6350. We don't imminently need this and intend to do it right soon.

Swift SVN r6605
2013-07-25 18:38:14 +00:00
Chris Lattner
11f5b48a27 Fix a -Wdocumentation warning, and hack out NoFramePointerElimNonLeaf to
fix the build.  This isn't a proper fix (we should start putting out new attributes
on llvm::Function's, but getting the build working again seems important.


Swift SVN r6584
2013-07-25 03:41:57 +00:00
Adrian Prantl
511ddc46fd Debug Info: Set the debug location for the function prologue to the decl of the function.
rdar://problem/14536357

Swift SVN r6576
2013-07-25 01:03:46 +00:00
Joe Groff
398cbba5be Rename SILConstant to SILDeclRef.
"SILConstant" doesn't really describe its role in SIL anymore, which is to provide a reference to a Swift declaration in a SIL instruction, such as a method or nominal type field.

Swift SVN r6559
2013-07-24 21:21:31 +00:00
Adrian Prantl
2809edcf24 remove obsolete new.
Swift SVN r6546
2013-07-24 17:18:04 +00:00
Adrian Prantl
8a0c1433f1 Fix a misuse of llvm::sys::path::append() and simplify string handling.
Swift SVN r6540
2013-07-24 01:13:22 +00:00
Jordan Rose
611a8bd751 Revert "Debug Info: Add support for enum-style oneof types."
We're redesigning enums, and the current implementation isn't really
handled in the module format (since it uses the presence or absence of
a source location to decide if a oneof element is "enum-like"). We'll
just drop this from the debug info for now.

This reverts r6462 / 9ed7fb3e70ff2cb9f08524699e89643386e8b6e0.

Swift SVN r6529
2013-07-23 23:10:34 +00:00
Jordan Rose
63f12548f6 [debug info] Fix null-terminated string issue with the fallback filename.
Since our modules currently have no source information, we're stuck using
the fallback filename for anything imported, including the standard library.
This makes variables.swift a little weaker, but there's not much we can do
about that. It's better than running off the end of a string, at least.

Swift SVN r6528
2013-07-23 23:10:31 +00:00
Jordan Rose
6547b9790a [serialization] Allow references to Clang-imported values.
This unfortunately duplicates the hack of directly referencing the Clang
module loader if a cross-reference points to the current module; ideally
we'd have some kind of module chain, but I'd settle for a refactoring of
the code to share with NameBinding.

Additionally, Clang nodes are not actually validated to be from the right
module, which could be problematic for extensions or any case of actual
name collision.

Swift SVN r6519
2013-07-23 23:10:05 +00:00
Adrian Prantl
3c9bb55b8d Debug Info: Emit the qualified names for many more ObjC-derived types.
This should get rid of most <null>-types in the DWARF output.

Swift SVN r6512
2013-07-23 21:35:21 +00:00
Adrian Prantl
8117a59e74 Debug Info: Change the default behavior for unhandled types to emit named
types instead of empty types.

Swift SVN r6511
2013-07-23 21:35:20 +00:00
John McCall
e668ff914f Add parsing and IR-gen for weak_retain and weak_release.
Swift SVN r6492
2013-07-23 06:28:51 +00:00
Adrian Prantl
e54f9bc438 Debug Info: Add support for enum-style oneof types.
Swift SVN r6464
2013-07-22 20:21:05 +00:00
Joe Groff
1984cf41e0 SIL: Rename SILFunction::getMangledName to SILFunction::getName.
Swift SVN r6430
2013-07-21 18:39:51 +00:00
Chris Lattner
d528b49fca make getElementType() methods on SIL allocation instructions return a SILType.
This points out that perhaps IRGen's HeapArrayInfo should traffic in SILTypes
instead of CanTypes.  I did the minimal update though.


Swift SVN r6405
2013-07-20 01:25:20 +00:00
Joe Groff
2af2fe2f68 IRGen: Update calling convention for generic witnesses.
Have WitnessBuilder awkwardly ask SIL's TypeConverter to uncurry witness types, so that polymorphic arguments get emitted in the right order consistent with lowered SILFunctions, instead of doing the uncurrying itself directly from the Swift type. This is layer-violating as hell but gets generic witness codegen working. I have a feeling SILGen will want to take over witness thunk emission at some point.

Swift SVN r6401
2013-07-20 00:08:51 +00:00
Joe Groff
10f290a01d AST: Add slot for substitutions for generic witnesses.
If a protocol requirement is satisfied by a generic method, we'll need to save the substitutions necessary to call that method from the witness thunk. This patch adds the spot in the ProtocolConformance::Mapping to save the substitutions; for now, always leave it empty and update the code for the type change.

Swift SVN r6399
2013-07-20 00:08:43 +00:00
Adrian Prantl
400cf8050e Debug Info: Implemented Tuples(!), Builtin*Pointer, BoundGenericClassType.
As a side effect compiling swift.swift with -g now works again.

Swift SVN r6398
2013-07-20 00:05:26 +00:00
Adrian Prantl
23ca4447f0 Remove debug dump.
Swift SVN r6385
2013-07-19 20:19:18 +00:00
Adrian Prantl
7ca6ac6f78 Debug Info: Implement a whole bunch of stubs for types that were not
handled before.
+ Several bug fixes for problems uncovered by the debug info verifier.

Swift SVN r6384
2013-07-19 20:12:47 +00:00
Chris Lattner
47dd7a4cf4 rename SIL internals for AllocVar and DeallocVar to [De]AllocStack.
No syntax change yet.


Swift SVN r6382
2013-07-19 19:38:29 +00:00
Doug Gregor
71e8cf2da0 Fix compilation issue with top-of-tree LLVM
Swift SVN r6379
2013-07-19 16:16:41 +00:00
John McCall
69b64a09ce More canonical type preserving.
Swift SVN r6377
2013-07-19 07:08:38 +00:00
John McCall
4b4e7d0833 Eliminate SIL and IR-gen's TypeVisitor specializations in
favor of a new AST-level one, and exploit it.

Swift SVN r6376
2013-07-19 07:08:34 +00:00
John McCall
170868921b UnboundGenericType is now an UNCHECKED_TYPE.
Change a couple routines which can validly be used on
unchecked decls/types to not generically handle UNCHECKED_TYPE.

Swift SVN r6374
2013-07-19 03:10:15 +00:00
Adrian Prantl
11e5550847 Debug Info: Emit the fully-qualified, mangled name for nominal types.
Swift SVN r6371
2013-07-19 01:48:45 +00:00
Greg Clayton
99220a099a Fix this file to compile on a case sensitive file system.
Swift SVN r6366
2013-07-19 00:15:23 +00:00
John McCall
16063866ed Preserve type canonicality with isa/cast/dyn_cast.
Swift SVN r6362
2013-07-18 23:28:53 +00:00
Joe Groff
e78c0255a6 IRGen: Raise "not implemented" errors for non-fixed-layout ivars.
instead of marching forward off a cliff.

Swift SVN r6356
2013-07-18 22:32:27 +00:00
Dmitri Hrybenko
722cc29cab Factor out DeclContext::getParentModule(). This cleans up a few places where
similar loops were duplicated.

No functionality changes.


Swift SVN r6353
2013-07-18 20:41:58 +00:00
Joe Groff
5fe164df07 IRGen: Pass existentials as generic parameters by unwrapping the container.
When an existential's contained type is used as a generic parameter, unwrap the existential container and save its metadata and witnesses to be used as polymorphic arguments.

Our AST representation can't quite express the distinction between a type parameter being satisfied by the existential type itself from being satisfied by the existential's contained yet. I use a goofy heuristic where I assume a protocol type bound to a type variable with no requirements is satisfied by the protocol type itself; this covers all of the existing <T> (Slice<T>, T) cases that come up in the library, while enabling the <T:Foo> (T) cases. This hopefully addresses <rdar://problem/14470097> well enough to unblock library work until we get a solid AST representation of this difference.

Swift SVN r6352
2013-07-18 19:09:19 +00:00
Joe Groff
8e56e45f22 SIL: Define a switch_oneof instruction.
This instruction encapsulates testing, branching, and destructuring a oneof, as in:

oneof Expr {
  case True
  case False
  case IntLiteral(Int)
  case StringLiteral(String)
}

sil @dispatch_expr : $(Expr) -> () {
entry(%expr : $Expr):
  switch_oneof %expr, \
    case #Expr.True!oneofelt : bb1, \
    case #Expr.False!oneofelt : bb2, \
    case #Expr.IntLiteral!oneofelt : bb3, \
    default bb4
bb1:
  ...
bb2:
  ...
bb3(%int : $Int):
  ...
bb4:
  ...
}

Swift SVN r6329
2013-07-17 16:55:29 +00:00
John McCall
0d0e0d1939 Abstract out sub-interfaces for [unowned] and [weak] TypeInfos.
Swift SVN r6325
2013-07-17 09:20:30 +00:00
John McCall
7b86817b3c Basic value structure for [weak] and [unowned] references.
Add a bunch of new entrypoints and give them terrible
implementations.

Swift SVN r6322
2013-07-17 09:20:20 +00:00
Jordan Rose
b17a23112e Revert "Update for LLVM change to raw_fd_ostream's option flags."
I'm not sure what I was thinking. Thanks for actually fixing this, Sean.

This reverts r6503.

Swift SVN r6307
2013-07-16 23:16:05 +00:00
Jordan Rose
0a6d9df178 Update for LLVM change to raw_fd_ostream's option flags.
Swift SVN r6305
2013-07-16 23:11:03 +00:00
Sean Callanan
213829f946 Adapted to a changed enum in llvm to make the build
work again.


Swift SVN r6300
2013-07-16 23:01:14 +00:00
Adrian Prantl
ca7c9cb95b Debug Info: Represent function parameters as argument variables
instead of local variables.

Swift SVN r6298
2013-07-16 21:07:35 +00:00
Adrian Prantl
39cef650cd Create parameter types with their actual size and alignment parameters
instead of hardcoded values.

Swift SVN r6297
2013-07-16 21:07:33 +00:00
Joe Groff
7f86bd2648 IRGen: Remove catch-all for unimplemented instructions.
Put in stubs for the remaining unimplemented SIL instructions.

Swift SVN r6288
2013-07-16 15:29:14 +00:00
Anna Zaks
f6d1ec48f0 [SIL] Refactor SILLocation not to derive from PointerUnion3 but to include it as a member
As per Chris's suggestion (review of r6152), further refactored SILLocation not to derive from PointerUnion3 but to include it as a member.

In addition, added some template magic to make sure we don't have to chain dyn_casts, which I suspect will be/is happening a lot with SILLocation:
Ex:
-  if (auto E = Func.dyn_cast<Expr*>()) {
-    if (const FuncExpr *FE = dyn_cast<FuncExpr>(E))
-      return SILLocation(FE->getBody())
+  if (const FuncExpr *FE = Func.getAs<FuncExpr>())
+    return SILLocation(FE->getBody());

Swift SVN r6283
2013-07-16 01:50:29 +00:00
John McCall
075539b0f5 Generate runtime functions from an xmacro database.
Swift SVN r6266
2013-07-15 18:33:45 +00:00
Chris Lattner
12872e5190 remove the allocation kind enum from alloc_var/dealloc_var/alloc_ref. There is
only one kind now: stack.  alloc_var is just for stack memory now.


Swift SVN r6256
2013-07-15 16:48:56 +00:00
Chris Lattner
5322275156 remove the 'heap' form of alloc_var. It is not used, and the imagined
possible use cases are far enough away that we shouldn't worry about them
now.


Swift SVN r6253
2013-07-15 16:33:09 +00:00
Chris Lattner
5c1320042c remove the "pseudo" class of alloc_var. It is not used.
Swift SVN r6252
2013-07-15 16:25:19 +00:00
Joe Groff
ee24d47e4b IRGen: Add a missing bitcast for generic tuple alloc_box operations.
Fixes <rdar://problem/14443343>.

Swift SVN r6249
2013-07-15 15:38:40 +00:00
Doug Gregor
d42e385371 Remove UnstructuredUnresolvedType.
Swift SVN r6241
2013-07-13 05:10:38 +00:00
Adrian Prantl
c8cb4d82b7 ... and get rid of a bunch of dashes.
Swift SVN r6226
2013-07-12 23:23:19 +00:00