Robin Voetter
96f095987f
Adapt Type.minInt and maxInt to use setTwosCompLimit
2021-10-04 11:25:29 +02:00
Robin Voetter
692827baa7
big ints: [add|sub]Sat tests
2021-10-04 11:25:29 +02:00
Robin Voetter
52721d3a7e
big ints: [add|sub]Wrap tests
2021-10-04 11:25:29 +02:00
Robin Voetter
bb53f4f15a
big ints: implement normal/wrapping/saturating subtraction in terms of addition
2021-10-04 11:25:29 +02:00
Robin Voetter
16991f920b
big ints: saturating addition
2021-10-04 11:25:29 +02:00
Robin Voetter
f1b3a90ef6
big ints: setTwosCompIntLimit
...
This function can be used to initialize a big integer to either the upper
or lower limit of a 2s-complement integer. Note that the result is still
in sign-magnitude representation, though in order to convert it into twos
complement all one has to do is take the absolute value.
2021-10-04 11:25:29 +02:00
Robin Voetter
dc1f698545
big ints: unify add/sub with their wrapping variants
2021-10-04 11:25:29 +02:00
Robin Voetter
a36ef84deb
big ints: Basic wrapping multiplication
2021-10-04 11:25:29 +02:00
Robin Voetter
69be6ba8ee
Comptime wrapping addition/subtraction
2021-10-04 11:25:29 +02:00
Robin Voetter
fdb37743fa
big ints: addWrap, subWrap + fix Managed.truncate allocation size
2021-10-04 11:25:29 +02:00
Robin Voetter
a733692444
Update Value.intTrunc to use new big int truncate
2021-10-04 11:25:29 +02:00
Robin Voetter
b58cf6dab6
big ints: 2s complement truncate
2021-10-04 11:25:29 +02:00
Robin Voetter
616b23c815
big ints: split lladd/llsub into carry variants
...
lladd is now implemented in terms of lladdcarry, which returns the carry limb.
Similarly, llsub is implemented using llsubcarry, which returns the borrow limb.
2021-10-04 11:25:29 +02:00
Andrew Kelley
c41b989ab8
C backend: improved Decl name lowering
...
Decl names are now rendered fully qualified, so that e.g. "main" in two
different files does not conflict with each other.
Additionally, they are now mangled so as to not generate invalid C
identifier names.
2021-10-03 21:12:52 -07:00
Andrew Kelley
a41f812bdb
C backend: fix lowering of struct types
...
with fields which are function pointers.
Before the name was in the wrong place.
2021-10-03 13:28:51 -07:00
Andrew Kelley
c79bf18044
C backend: fix lowering of struct, float, and slice constants
2021-10-03 12:50:34 -07:00
Andrew Kelley
86c265aec8
stage2: Type: fix eql impl for error unions
...
Also implement renderFullyQualifiedName.
2021-10-03 12:49:57 -07:00
Andrew Kelley
c4df9bf56f
AstGen: fix while and for with unreachable bodies
...
Companion commit to 61a53a587558ff1fe1b0ec98bb424022885edccf.
This commit also moves over a bunch of behavior test cases to the
passing-for-stage2 section.
2021-10-02 20:15:03 -07:00
Andrew Kelley
61a53a5875
AstGen: fix if, orelse, catch, with unreachable bodies
...
Before, the system to replace a result location pointer with a
traditional break instruction did not notice the case when one of the
bodies was unreachable. Now, the emitted ZIR code is improved and
simplified in this case, resulting in a new passing behavior test.
2021-10-02 19:09:54 -07:00
Andrew Kelley
ac52e00564
Merge pull request #9873 from SpexGuy/fix-struct-namespaces
...
Stage 2: A bunch of cleaning up
2021-10-02 16:25:15 -04:00
Martin Wickham
1d2c3af906
Remove address of pointer
2021-10-02 15:21:49 -05:00
Martin Wickham
272bad3f12
Delete Module.Scope, move Block into Sema
2021-10-02 15:21:49 -05:00
Martin Wickham
fd60012c21
Change *Scope to *Scope.Block, use Sema when required
2021-10-02 15:21:49 -05:00
Martin Wickham
01e08c92b3
Revert collateral changes, clarify abortAnonDecl()
2021-10-02 15:21:49 -05:00
Martin Wickham
53a36eacfa
Remove my dumb "namespace decl" hack
2021-10-02 15:21:48 -05:00
Martin Wickham
d1a4bdb1f3
Declare generic fn dependency earlier to keep invariant
2021-10-02 15:21:48 -05:00
Martin Wickham
f7c11acb7f
Resolve struct fields in a separate sema context
2021-10-02 15:21:48 -05:00
Martin Wickham
806eee8e99
Fix abortAnonDecl()
2021-10-02 15:21:48 -05:00
Martin Wickham
8d42500699
Implement hashing and equals for some pointer values
2021-10-02 15:21:48 -05:00
Martin Wickham
0b8ddb4478
Improve debug names of decls
2021-10-02 15:21:48 -05:00
Martin Wickham
993dc2ae77
Fix ownership of array type and elements
2021-10-02 15:21:48 -05:00
Martin Wickham
7ef5938450
Fix decl removal from namespace when destroyed
2021-10-02 15:21:48 -05:00
Martin Wickham
b1e5081826
Fix rendering of type names
2021-10-02 15:21:48 -05:00
Martin Wickham
269e548770
Fix namespace references for deeply nested structs
2021-10-02 15:21:48 -05:00
Nathan Michaels
4916e26be4
Document some functions in std.math.
2021-10-02 16:06:03 -04:00
Andrew Kelley
468ed7ada5
Merge pull request #9875 from g-w1/timestimes
...
stage2: emit Value.repeated for `**` with array len 1
2021-10-02 16:05:12 -04:00
Martin Wickham
05d36fce9c
Add zlib to needed libraries
2021-10-02 14:58:16 -05:00
Andrew Kelley
49f687f7c6
build.zig: omit LLVMTableGen from the llvm lib list
2021-10-02 12:41:08 -07:00
Andrew Kelley
b9ec7c5675
build.zig: update list of LLVM libs
...
companion commit to 0f35a1f37ade9cf25707c41711b352174f1e2789
fixes compiling with a dev kit.
2021-10-02 12:40:40 -07:00
Andrew Kelley
dde0adcb36
Merge branch 'llvm13'
2021-10-02 10:45:56 -07:00
Andrew Kelley
7a2624c3e4
std: disable ArrayBitSet test on aarch64
...
See #9879 . This regressed with the release of LLVM 13.0.0.
2021-10-01 22:32:13 -07:00
Andrew Kelley
c7b32eb99a
ci: windows: update tar command line parameter order
...
you have got to be kidding me
2021-10-01 22:27:16 -07:00
Andrew Kelley
86bb09a0ff
ci: update macos tarballs
...
These bring in a bug fix to libcxx.zig that is currently causing the CI
to fail.
2021-10-01 18:32:19 -07:00
Andrew Kelley
210ef5af8e
ci: windows: adjust tar workaround
...
tar does not properly implement the -k feature, so don't use it.
It incorrectly reports "file exists" when the expected behavior is to
leave the existing file alone.
2021-10-01 18:07:50 -07:00
Andrew Kelley
f317acb2cd
libcxx: pass -faligned-allocation flag when needed
...
libc++ now requires this flag
2021-10-01 18:06:17 -07:00
Andrew Kelley
acb0a87158
ci: windows: workaround for tar symlink behavior
2021-10-01 17:18:32 -07:00
Andrew Kelley
43e3734d3b
ci: macos arm64 script uses release build of zig
...
even for the host. This prevents a dependency on "dump" functions of
LLVM, which are not included in the tarballs used for the CI.
2021-10-01 16:53:42 -07:00
Andrew Kelley
9bf10b1018
ci: update windows tarballs to llvm 13
2021-10-01 16:53:33 -07:00
Andrew Kelley
7350cb2fc7
ci: update tarballs for LLVM 13
...
NetBSD CI is disabled because it is not yet supported in
zig-bootstrap. Once NetBSD has proper zig-bootstrap support, it can be
re-enabled.
Windows is not solved here yet; will be pushing a separate commit for
that.
2021-10-01 16:07:42 -07:00
Jacob G-W
83dcd9f038
stage2: emit Value.repeated for ** where the array size is one
...
This takes advantage of the repeated value.
2021-10-01 16:46:28 -04:00