Commit Graph

4650 Commits

Author SHA1 Message Date
Joe Groff
e88786b32c runtime: Factor out basic layout from getTupleTypeMetadata.
We'll want to use the same logic to lay out generic struct fields at runtime. While we're here, fix a bug where we weren't aligning field offsets prior to storing them in the tuple metadata.

Swift SVN r9117
2013-10-10 00:42:04 +00:00
John McCall
a79cee2c54 Revert "Reimplement integer arithmetic overflow checking to use special, error on overflow builtins"
This was causing massive failures at run-time.

This reverts commit 80081db973ccb7100741fea19ce8e8c116fc410f.

Conflicts:
	lib/SILPasses/ConstantPropagation.cpp
	test/SILPasses/constant_propagation.swift
	test/SILPasses/constant_propagation2.sil

Swift SVN r9050
2013-10-09 01:20:39 +00:00
Anna Zaks
ccc1dae7fd Reimplement integer arithmetic overflow checking to use special, error on overflow builtins
After talking to John, Joe, and Dave Z, we've decided that it's best to
specialize each arithmetic builtin that could overflow, instead of calling
a separate generic "staticReport" builtin and passing it enough info to
produce the message. The main advantage of this approach is that it
would be possible for the compiler to customize the message and better
link it to the builtin that overflows. For example, the constants that
participated in the computation could be printed. In addition, less code
will be generated and the compiler could, in the future, automatically
emit the overflow diagnostics/trap at runtime.

This patch introduces new versions of op_with_overflow swift builtins.
Which are lowered to llvm.op_with_overflow builtins in IRGen after the
static diagnostics. If the last argument to the builtins evaluates to true,
the overflow is unintentional. CCP uses the builtins to diagnose the overflow
detectable at compile time. FixedPoint is changed to rely on these in
implementation of primitive arithmetic operations.

Swift SVN r9034
2013-10-08 23:07:56 +00:00
Doug Gregor
fdd08a42e4 Remove a pile of typealiases that can be deduced associated type witnesses.
We can't yet remove them all due to <rdar://problem/15168483>.


Swift SVN r8988
2013-10-07 20:51:28 +00:00
Chris Lattner
1e09725368 pass -module-name to the build command for the stdlib. Rearrange to pass -c at the end to make it easier to copy and paste the line for messing with sil.
Swift SVN r8952
2013-10-07 15:20:36 +00:00
Greg Parker
bca82ea688 Add block<->closure shims for most of Foundation's block object API.
Swift SVN r8942
2013-10-05 04:54:26 +00:00
Greg Parker
c4854a037b Add whitespace to @-based control structures in FixedPoint.gyb.
Swift SVN r8914
2013-10-04 05:39:44 +00:00
Greg Parker
98b8b160e7 Use @attribute syntax in FixedPoint.swift.
Swift SVN r8913
2013-10-04 05:34:27 +00:00
Greg Parker
ec31b01246 Remove incorrect optimization of dynamic casts of non-ObjC objects.
Swift SVN r8907
2013-10-04 04:17:26 +00:00
Greg Parker
b2f3b307fa Fix memory leak in NSString->String conversion.
Swift SVN r8872
2013-10-03 04:09:22 +00:00
Greg Parker
1a243380af Stop using swift-mangled names directly.
Swift SVN r8871
2013-10-03 04:08:28 +00:00
Dave Abrahams
b5842cb6b4 [stdlib] Initial implementation of Character
This type can't do much but store an arbitrary very short string right now, but it works

Swift SVN r8850
2013-10-02 18:56:19 +00:00
Doug Gregor
100bcdb9e6 Silence -Wunused warning in Release builds.
Swift SVN r8835
2013-10-02 04:51:48 +00:00
Greg Parker
05cbbf1229 Clean up BridgeNSString.mm. Fix bug in Unicode string conversion.
Swift SVN r8834
2013-10-02 03:18:31 +00:00
Anna Zaks
e136245676 [SIL] Add integer overflow warnings on simple arithmetic to swift.
- Adds transparent attribute to add/mult/sub on integer types.
 - Fix a bug in ConstantPropagation that ensures that the propagation is triggered on StructExtract, when struct is simplified.
 - Slightly improve the error message.

Swift SVN r8825
2013-10-01 23:02:35 +00:00
Greg Parker
720dab7b95 Separate non-String code from BridgeNSString.mm.
Swift SVN r8818
2013-10-01 21:49:03 +00:00
Argyrios Kyrtzidis
f0773bcba1 Rename '__subscript' -> 'subscript'.
Since 'subscript' is a keyword, it cannot conflict with a function name.

Swift SVN r8787
2013-09-30 19:17:29 +00:00
Joe Groff
3d4c1251f1 Rename 'byref' attribute to 'inout'.
Swift SVN r8661
2013-09-25 20:56:52 +00:00
Anna Zaks
b8c4019c2a Make Int's init() 128-bit-Int-proof.
Following Jordan suggestion to r8446, replace the current version of Int's
init() to make it 128 bit-proof.

Swift SVN r8531
2013-09-20 23:24:28 +00:00
Greg Clayton
cbf6e8ab5c Fix the Makefile to use "Enum.cpp" instead of the old "Union.cpp".
Swift SVN r8512
2013-09-20 20:34:17 +00:00
Joe Groff
e109124186 Replace 'union' keyword with 'enum'.
This only touches the compiler and tests. Doc updates to follow.

Swift SVN r8478
2013-09-20 01:33:14 +00:00
Joe Groff
c10340433c IRGen: Forward extra inhabitants through single-payload unions.
If a single-payload union doesn't use up all of its payload's extra inhabitants, it can claim the remaining ones as its own. While we're here, specialize the extra inhabitants implementation for no-payload unions to generously (and more efficiently) give out all integer values within its storage type above the largest discriminator as extra inhabitants, instead of relying entirely on the spare bits mask.

Swift SVN r8470
2013-09-19 23:16:53 +00:00
Greg Parker
f05641d208 Don't #include internal header <os/tsd.h> on platforms that don't need it.
Swift SVN r8468
2013-09-19 23:13:23 +00:00
Anna Zaks
818cd1a1cc Add transparent constructors to integer types.
This time by modifying the FixedPoint.gyb and auto-generating FixedPoint.swift.

(Thanks Dmitry!)

Swift SVN r8448
2013-09-19 16:23:47 +00:00
Joe Groff
8f061188b9 Remove unused, nonexistent header.
Swift SVN r8447
2013-09-19 15:19:21 +00:00
Greg Parker
1a07770bbc Remove x86-specific code that was unused on x86.
Swift SVN r8446
2013-09-19 10:58:32 +00:00
Greg Parker
974f1e4ea9 Clean up -force_load and linkage of libswift_runtime.a. Fixes test Interpreter/Union.swift.
Swift SVN r8398
2013-09-18 06:28:53 +00:00
Doug Gregor
7d774c55d6 Replace "constructor" with "init" in a number of Swift sources.
Swift SVN r8393
2013-09-18 04:37:12 +00:00
Joe Groff
d749169a80 runtime: Fix stride calculation for dynamic single-payload union value witness.
Swift SVN r8366
2013-09-17 23:50:31 +00:00
Joe Groff
35e5a1ffbe Link swift_stdlib_core with -all_load so it links in all .o files from swift_runtime.
Swift SVN r8349
2013-09-17 21:04:43 +00:00
John McCall
d01e725fee Fix Makefile build of unittests.
Swift SVN r8330
2013-09-17 07:22:27 +00:00
Joe Groff
000d8e4953 Runtime: Add functions for dynamic single-payload dispatch.
Add functions to dynamically query the extra inhabitants of a single-payload union's payload metadata, then identify or store bit patterns used to represent empty cases, whether they happen to use extra inhabitants or added tag bits.

Swift SVN r8320
2013-09-17 01:29:35 +00:00
Greg Parker
5dd6b2a12c Reinstate workaround for rdar://14897572 (slow arm64 compilation)
Swift SVN r8318
2013-09-17 01:28:49 +00:00
Greg Parker
6a1df4bb3f Remove Int128 because it is unreliable or incomplete on some architectures.
Swift SVN r8249
2013-09-14 11:07:27 +00:00
Greg Parker
f627c439c9 Remove some Int128 assumptions from FixedPoint generator.
Swift SVN r8247
2013-09-14 07:07:35 +00:00
Greg Parker
db0cf2518a Split Foundation.swift because NSRect is not in Foundation on iOS.
Swift SVN r8246
2013-09-14 06:15:09 +00:00
Greg Parker
d3d00c3456 Use OS names -darwin / -darwin_ios / -darwin_sim to match build_llvm better.
Swift SVN r8245
2013-09-14 06:00:52 +00:00
Greg Parker
8e13188209 Consolidate some build flags for .swift files. Add cross-compilation support.
Swift SVN r8181
2013-09-13 01:51:48 +00:00
Greg Parker
63ecd5c9d1 Add UIKit module.
Swift SVN r8178
2013-09-13 01:39:54 +00:00
Greg Parker
ebebd988b2 Workaround rdar://14883575 muloti missing from libcompiler_rt on arm64.
Swift SVN r8177
2013-09-13 01:25:33 +00:00
Joe Groff
7410a83165 Replace Bool._getBuiltinLogicValue stub with a Swift implementation.
We can switch over unions now.

Swift SVN r8114
2013-09-11 22:00:49 +00:00
Dave Zarzycki
462fe42725 Adopt [transparent] more
Swift SVN r7980
2013-09-06 02:44:37 +00:00
Greg Parker
1200ef4fab Move benchmark machinery out of stdlib.
Swift SVN r7961
2013-09-05 21:18:23 +00:00
Greg Parker
9c0f1fafd1 Update slow versions of FastEntryPoints.
Swift SVN r7938
2013-09-05 02:45:34 +00:00
Joe Groff
33d2122ce9 IRGen/Runtime: Change generic metadata template to use a fill function.
Instead of hardcoding a walk of a list of fill ops, have generic metadata templates carry a pointer to a fill function for swift_getGenericMetadata to invoke to perform the fill operations. For types with dynamic layout, we will need to be able to perform more complex fill operations than a simple transfer of arguments into generic metadata slots.

Swift SVN r7893
2013-09-04 02:13:34 +00:00
Joe Groff
19fb7d6b64 runtime: Allocate refcounted storage for swift_NSStringToString.
Instead of letting swift_NSStringToString leak malloced memory, use swift_allocPOD to allocate storage for the converted String, and stash the heap object into the created string.

Swift SVN r7872
2013-09-03 22:27:40 +00:00
Joe Groff
691ce0e943 runtime: Add swift_allocPOD entry point.
swift_allocPOD allocates a heap object capable of holding POD data of some given size and alignment. This will allow 'alloc_box' and 'alloc_array' to lower specially without instantiating do-nothing heap metadata for POD types, as described in <rdar://problem/13129334>. Update the dynamic swift_allocBox entry point to use swift_allocPOD for POD types. This can also be used by other runtime functions that need to allocate reference-counted scratch memory, such as swift_NSStringToString, as noted in <rdar://problem/14646715>.

Swift SVN r7860
2013-09-03 20:49:02 +00:00
Dave Abrahams
0d34c37048 [stdlib] FixedPoint.gyb/.swift: factor out more of the boilerplate repetition
Swift SVN r7805
2013-08-30 22:07:14 +00:00
Dave Zarzycki
d1e19306c0 Email feedback from DaveA
Swift SVN r7784
2013-08-30 17:07:05 +00:00
Dave Zarzycki
32c305949a '-=' is valid on both signed/unsigned types
Also, make the output easier to review output "tables" of operators.

Swift SVN r7780
2013-08-30 16:28:33 +00:00