Commit Graph

1132 Commits

Author SHA1 Message Date
Adrian Prantl
bc9cb71c10 Debug info: An Int1 still occupies 8 bits.
Fixes rdar://problem/15474135.

Swift SVN r10903
2013-12-06 02:08:11 +00:00
Joe Groff
0ff977d407 Add a 'WitnessMethod' enumerator to AbstractCC.
We'll use this to represent the slightly-different polymorphic calling convention used for passing Self into protocol witnesses.

Swift SVN r10898
2013-12-06 01:32:35 +00:00
Adrian Prantl
2055386e0c Debug Info: Move the argument ordering logic into IRGenSILFunction and
get rid of the hack that used to be in IRGenDebugInfo.
This commit also adds a bunch of interesting testcases for function args.
Fixes <rdar://problem/15464454> Arguments sometimes go missing.

Swift SVN r10873
2013-12-05 18:51:07 +00:00
Jordan Rose
417b5d3982 Merge TranslationUnit into Module, and eliminate the term "translation unit".
This completes the FileUnit refactoring. A module consists of multiple
FileUnits, which provide decls from various file-like sources. I say
"file-like" because the Builtin module is implemented with a single
BuiltinUnit, and imported Clang modules are just a single FileUnit source
within a module.

Most modules, therefore, contain a single file unit; only the main module
will contain multiple source files (and eventually partial AST files).

The term "translation unit" has been scrubbed from the project. To refer
to the context of declarations outside of any other declarations, use
"top-level" or "module scope". To refer to a .swift file or its DeclContext,
use "source file". To refer to a single unit of compilation, use "module",
since the model is that an entire module will be compiled with a single
driver call. (It will still be possible to compile a single source file
through the direct-to-frontend interface, but only in the context of the
whole module.)

Swift SVN r10837
2013-12-05 01:51:15 +00:00
Jordan Rose
5dda63aa82 Remove LoadedModule, and strip ModuleLoader down to just loading things.
Now that everything is done in terms of FileUnits, we don't need LoadedModule
anymore, and now that FileUnits just use virtual dispatch, we don't need to
indirect through ModuleLoader to distinguish them.

This doesn't quite simplify as much as it could, because the next change is
going to combine TranslationUnit and Module.

Swift SVN r10836
2013-12-05 01:51:12 +00:00
Jordan Rose
8b8cc8ee62 Turn SerializedModule into SerializedASTFile.
Part of the FileUnit restructuring. A serialized module is now represented as
a TranslationUnit containing a single SerializedASTFile.

As part of this change, the FileUnit interface has been made virtual, rather
than switching on the Kind in every accessor. We think the operations
performed on files are sufficiently high-level that this shouldn't affect us.

A nice side effect of all this is that we now properly model the visibility
of modules imported into source files. Previously, we would always consider
the top-level imports of all files within a target, whether re-exported or
not.

We may still end up wanting to distinguish properties of a complete Swift
module file from a partial AST file, but we can do that within
SerializedModuleLoader.

Swift SVN r10832
2013-12-05 01:51:09 +00:00
Adrian Prantl
a5cd7834c7 Remove redundant code
Swift SVN r10792
2013-12-04 21:45:18 +00:00
Adrian Prantl
41e92af7ae Mangler: Add a DWARF-only mangling for type aliases that includes the
decl context of the type alias.
This implements <rdar://problem/15290346> "typealias sugar needs to be
mangled into debug info mangled type names".

Swift SVN r10749
2013-12-03 17:15:18 +00:00
Adrian Prantl
a822eca987 use SmallStrings instead of std::string
Swift SVN r10741
2013-12-03 00:25:57 +00:00
Adrian Prantl
f2e8e4b08f Debug info: Emit L-Values as indirect would be redundant, because they are
already reference types.

Swift SVN r10740
2013-12-03 00:25:55 +00:00
Adrian Prantl
b0276bda79 Debug info: Emit the names of struct members when emitting their types.
I'm somewhat surprised no one complained about this before.

Swift SVN r10666
2013-11-22 22:17:43 +00:00
Adrian Prantl
84b649e92c Cleanup: construct the names of builtin types on the fly.
Swift SVN r10648
2013-11-22 00:23:44 +00:00
Adrian Prantl
d2cc658a26 Debug info: typeargs are always direct values even if they are shadow-copied.
<rdar://problem/15476354> $swift.type arguments emitted as 'deref' in DWARF

Swift SVN r10643
2013-11-21 23:53:20 +00:00
Adrian Prantl
4244463b44 Debug info: don't crash when handling enum-like enums.
<rdar://problem/15418642> Swift compiler crashes when producing debug information

Swift SVN r10601
2013-11-20 18:48:30 +00:00
Adrian Prantl
7fca2d8142 Debug info: Encode the provenance of types imported from Objective-C in
the debug info.
<rdar://problem/15414884> Debug information must indicate location of Objective-C types

Swift SVN r10580
2013-11-20 03:38:21 +00:00
John McCall
f2edd610cb Don't give IRGenDebugInfo privileged access to the TypeConverter.
Now that it's using the public routines for getting a TypeInfo,
make sure it's actually lowering types appropriately.

Swift SVN r10571
2013-11-20 00:14:19 +00:00
John McCall
20e58dcf93 Change the type of function values in SIL to SILFunctionType.
Perform major abstraction remappings in SILGen.  Introduce
thunking functions as necessary to map between abstraction
patterns.

Swift SVN r10562
2013-11-19 22:55:09 +00:00
Adrian Prantl
eb8122ea4d Debug info: Types should not be in the scope of the first variable that is
using them.

Swift SVN r10506
2013-11-15 23:24:48 +00:00
Adrian Prantl
a1c17f2410 Add a pretty name for 1-bit integers.
Swift SVN r10504
2013-11-15 23:24:46 +00:00
Joe Groff
19457c12ea Give Builtin.Word an abstract size.
Instead of hardcoding Builtin.Word to be an alias for Builtin.Int64, make it its own type of abstract pointer width.

- Change BuiltinIntegerType's width representation to accommodate abstract widths.

- In the AST and in SIL, store values of the types as the greatest supported size for the abstract width (64 bits for a pointer).

- Add some type safety to the ([sz]ext|trunc)(OrBitCast)? builtins that they're used appropriately given the upper and lower bounds of the abstract sizes they're working with.

- Now that Builtin.Word is a distinct type, give it its own mangling.

- In IRGen, lower pointer-sized BuiltinIntegerType appropriately for the target, and truncate lowered SIL values if necessary.

Fixes <rdar://problem/15367913>.

Swift SVN r10467
2013-11-14 19:56:26 +00:00
Joe Groff
4f2adbe7ed AST: Include 'static' bit in VarDecls.
And track the 'static' SourceLoc in the PatternBindingDecl. This lets isInstanceMember return the right thing for static vars.

Swift SVN r10369
2013-11-12 06:16:48 +00:00
Adrian Prantl
2abe03fda0 Debug Info: Emit a shadow copy of the type metadata in an alloca at -O0
so we can emit persistent debug info for it.
Fixes <rdar://problem/15428758> dbg.value doesn't make it into the .o file.

Swift SVN r10354
2013-11-12 01:24:12 +00:00
Adrian Prantl
44bdefa040 Debug info for Archetypes: Get rid of the typedef for the type variable
used by the programmer. It's no longer needed, LLDB can get to it from
the AST.

Swift SVN r9885
2013-11-01 23:30:16 +00:00
Adrian Prantl
459db73092 Debug info: Move the logic for emitting type metadata arguments to
GenProto, and emit both the mangled name and the type variable used by the
programmer for archetypes.
Fixes <rdar://problem/15346134> The $swift.type metadata arguments do not show up anymore

Swift SVN r9844
2013-10-31 04:50:33 +00:00
Adrian Prantl
d83c5525f2 Debug info: Simplification.
Swift SVN r9743
2013-10-28 23:14:42 +00:00
Adrian Prantl
5bbe0afb9f Debug info: Properly handle the function prologue in the line table.
Introduces a new flag in SILLocation: InPrologue to mark instructions
that setup the stack and allocate storage for local variables/arguments.

Fixes rdar://problem/15290023: Breakpoint set on prologue - crash ensues.

Swift SVN r9686
2013-10-26 00:12:20 +00:00
Adrian Prantl
29ae59ee1c Debug info: some refactoring to make emitVariableDeclaration more flexible.
Swift SVN r9608
2013-10-23 00:38:57 +00:00
Adrian Prantl
9ea487e4af Debug info: Emit local variables without storage as local variables constant 0.
Fixes rdar://problem/14802771.

Swift SVN r9575
2013-10-22 01:53:14 +00:00
Adrian Prantl
5cf8999985 Debug info: some more refactoring for rdar://problem/14845534.
Swift SVN r9571
2013-10-21 23:38:18 +00:00
Adrian Prantl
4a9909c2d3 Debug info: emit the runtime language of archetypes as DW_lang_swift.
Swift SVN r9569
2013-10-21 23:27:02 +00:00
Adrian Prantl
3fafb6c7e7 Debug info: Make the ret instruction in the function epilogue a cleanup
location rather than a regular location to avoid the linetable jumping
back to the beginning of the function.
Add a large number of testcases that check the sanity of the return
locations in various scenarios involving implicit/explicit returns,
cleanups, and multiple return locations per function.

rdar://problem/14845534

Swift SVN r9511
2013-10-19 00:20:44 +00:00
Adrian Prantl
37a0827386 Debug info: fix a bug with indirect values by using enums for type-safety.
rdar://problem/15248201

Swift SVN r9463
2013-10-17 21:16:42 +00:00
Adrian Prantl
65dc82d530 Debug info: emit Archetypes and their conforming protocols.
Fixes rdar://problem/15209779 and rdar://problem/15211793.

Swift SVN r9422
2013-10-16 22:14:37 +00:00
Adrian Prantl
d8676b7bbe Debug info: Emit something for local variables without storage.
rdar://problem/14802771.

Swift SVN r9335
2013-10-14 23:38:27 +00:00
Adrian Prantl
5dbf111b15 Debug info: The end-of-prologue location of an explicit closure
now has a line number again.
rdar://problem/15204469 again.

Swift SVN r9330
2013-10-14 22:36:31 +00:00
Adrian Prantl
7f688c806b Debug info: attach more appropriate locations to the phi nodes
at the beginning of each basic block.
rdar://15189057

Swift SVN r9327
2013-10-14 21:23:38 +00:00
Dmitri Hrybenko
6be398df2c Don't cast Size type to unsigned, use .getValue()
Swift SVN r9312
2013-10-14 16:06:44 +00:00
Adrian Prantl
c8b16f720b Debug info: Linetable-wise, treat all closure expressions alike and ignore
them.
rdar://problem/15204469

Swift SVN r9230
2013-10-11 22:39:53 +00:00
Adrian Prantl
adc913b73c Debug info: The end of the prologue should point to the opening brace.
Some refactoring the separate the needs of the line table versus decls.
rdar://problem/15204469

Swift SVN r9224
2013-10-11 22:15:10 +00:00
Adrian Prantl
e173d3ca82 remove stale comment
Swift SVN r9188
2013-10-11 01:00:51 +00:00
Adrian Prantl
c0df8ffecf Bring swift up to sync with ToT LLVM. Please *upgrade both*.
Lookup types using a DITypeIdentifierMap.

Swift SVN r9175
2013-10-10 21:42:55 +00:00
Adrian Prantl
84f439735a Make BumpAllocatedString a member of IRGenDebugInfo.
Swift SVN r9159
2013-10-10 18:47:03 +00:00
Adrian Prantl
3500e82f02 Debug info: Implement the correct lookup for the DeclContext of NameAlias types.
Swift SVN r9146
2013-10-10 17:10:26 +00:00
Adrian Prantl
17560ab4a6 Debug info: use the new getOrCreateDesugaredType() function to create aliased
types, too.

Swift SVN r9141
2013-10-10 16:39:47 +00:00
Adrian Prantl
cb62753a37 Debug info: don't fully desugar types when emitting them, just recursively
peel off the outermost layer of icing.

Swift SVN r9119
2013-10-10 00:47:04 +00:00
Adrian Prantl
41c63e2ebf Debug info: Emit swift.type as a name alias $swift.type so the data
formatters can recognize is easily.

Swift SVN r9118
2013-10-10 00:47:00 +00:00
Adrian Prantl
23ca48185a Debug info: Emit an artificial variable to describe type parameters.
Implements rdar://problem/14978875

Swift SVN r9097
2013-10-09 22:23:09 +00:00
John McCall
b880e60100 Remove SILFunctionTypeInfo in favor of SILFunctionType.
We still don't actually use this as a type, however.

Swift SVN r9091
2013-10-09 20:55:55 +00:00
Adrian Prantl
8808d48578 Debug info: emit captured variables in closures. rdar://problem/15035486
Swift SVN r8859
2013-10-02 22:46:03 +00:00
Adrian Prantl
0bd4357b1f Debug info: Emit shadow copies of boxed value's addresses in an alloca at
-O0 so the register allocator will not elide its DBG_VALUE.

Swift SVN r8798
2013-09-30 23:34:15 +00:00