Commit Graph

11833 Commits

Author SHA1 Message Date
Ryan Liptak
104f4053a2 std.mem: Rename splitFull/tokenizeFull to splitSequence/tokenizeSequence
I think this makes the name less ambiguous and more obvious that the suffix applies to the `delimiter`.
2023-05-13 13:45:05 -07:00
Ryan Liptak
2129f28953 Update all std.mem.split calls to their appropriate function
Everywhere that can now use `splitScalar` should get a nice little performance boost.
2023-05-13 13:45:05 -07:00
Ryan Liptak
815e53b147 Update all std.mem.tokenize calls to their appropriate function
Everywhere that can now use `tokenizeScalar` should get a nice little performance boost.
2023-05-13 13:45:04 -07:00
Ryan Liptak
ce9f3ec990 Fix SplitIterator and TokenIterator type instantiation 2023-05-13 13:43:50 -07:00
Simon A. Nielsen Knights
4697b30ba0 add application/tar+gzip unblocking sr.ht packages 2023-05-13 12:11:23 -07:00
Josh Wolfe
018b743c7a std: Rewrite low-level json api to support streaming (#15602) 2023-05-13 14:31:53 -04:00
Veikka Tuominen
68bacad804 Merge pull request #15643 from Vexu/fixes
make `@call` compile errors match regular calls
2023-05-13 12:52:16 +03:00
Andrew Kelley
88d275199c Merge pull request #15240 from Snektron/spirv-basic
spirv: attempting to get the 'basic' behavior tests running
2023-05-12 14:46:20 -07:00
Veikka Tuominen
5aa9628de3 Sema: handle recursive inferred errors better in analyzeIsNonErrComptimeOnly
Closes #15669
2023-05-12 14:59:26 +03:00
shwqf
e46d7a3699 Optimize access of array member in a structure. 2023-05-12 09:04:03 +03:00
mlugg
214f2fc395 Liveness: simplify logic
`branch_deaths` was a relic from before I had a full understanding of
AIR's control flow structure, and so was unnecessary. This change
simplifies Liveness, fixes a bug exposed by #15235, and likely improves
performance (due to cloning hashmaps less often).
2023-05-12 00:01:52 +03:00
Ali Chraghi
d61dc3a5a2 spirv: lower store_safe, trunc and trap 2023-05-11 20:31:52 +02:00
Ali Chraghi
ccc490ef68 setup spirv backend in behavior tests 2023-05-11 20:31:52 +02:00
Robin Voetter
e26d8d0604 spirv: make decl deps a hash map instead of an arraylist
The same declaration can be added to the dependency set multiple
times, and in this case we still need to emit it once. By making
this list a hash map instead, we can do that quite easily.

This commit also introduces some additional debug logging regarding
decls.
2023-05-11 20:31:51 +02:00
Robin Voetter
d961b11cde spirv: lower wrap_optional
This implements the wrap_optional AIR instruction.
2023-05-11 20:31:51 +02:00
Robin Voetter
6c16465d45 spirv: lower air optional_payload
Implements lowering the AIR tag optional_payload.

Also fixes an issue with lowering constant ints.
2023-05-11 20:31:51 +02:00
Robin Voetter
83ab1ba8fd spirv: lower air is_null, is_non_null
Implements AIR lowering for is_null and is_non_null tags.

Additionally this cleans up and centralizes the logic to convert from 'direct'
representation to 'indirect' representation and vice-versa. The related functions,
as well as the functions that use it, are all moved near eachother so that the
conversion logic remains in a central place. Extracting/inserting fields
and loading/storing pointers should go through these functions.
2023-05-11 20:31:51 +02:00
Robin Voetter
435a5660ce spirv: fix invalid code generated by br-with-value
The result-id and result-type-id of the OpPhi used to merge the
break values was not properly emitted, as some of the operands
were not written out. This caused an invalid spir-v module.
2023-05-11 20:31:51 +02:00
Robin Voetter
f62735d98c spirv: lower air wrap_errunion_err 2023-05-11 20:31:51 +02:00
Robin Voetter
78c44d63da spirv: lower air unwrap_error_union_err 2023-05-11 20:31:50 +02:00
Robin Voetter
0bae2caaf3 spirv: lower air try
Implements code generation for the try air tag. This commit also adds
a utility `errorUnionLayout` function that helps keeping the layout
of a spir-v error union consistent.
2023-05-11 20:31:50 +02:00
Robin Voetter
dfecf89d06 spirv: fix OpFunctionCall parameters interleaving with insts
resolve() is now able to emit instructions. If usage of this function is
interleaved with calls to emitRaw() and writeOperand(), then an
instruction may get inserted between operands, causing an invalid module.
The solution here is to just perform a temporary allocation.
2023-05-11 20:31:50 +02:00
Robin Voetter
5d896a6cc6 spirv: fix use-after-realloc in resolveType()
The pointer to a slot in a hash map was fetched before a recursive call.
If the hash map's size changed during the recursive call, this would write
to an invalid pointer.

The solution is to use an index instead of a pointer. Note that care must be
taken that resolved types (from the type_cahce) must not be accessed, as they
might be incomplete during this operation.
2023-05-11 20:31:50 +02:00
Andrew Kelley
7f7bd206dc Merge pull request #15519 from dweiller/issue-15482
Optimize lowering of `s[start..][0..len]`
2023-05-11 08:59:44 -07:00
Loris Cro
5512455974 Merge pull request #15637 from der-teufel-programming/autodoc-layouts
autodoc: Add layout to Struct and Union to handle packed and extern
2023-05-11 17:46:29 +02:00
Andrew Kelley
5569e6b49d Merge pull request #15639 from jacobly0/signed-mod
llvm/cbe: fix signed `@mod`/`@divFloor` computations
2023-05-11 08:36:33 -07:00
Andrew Kelley
c857959372 Merge pull request #15640 from jacobly0/min-max
llvm: fix `@max`/`@min` of unsupported float types
2023-05-11 08:35:08 -07:00
Veikka Tuominen
0958d5d7db Sema: fix crash when generating anon name on invalid code
Closes #15615
2023-05-11 17:23:06 +03:00
Veikka Tuominen
c0102ac1c8 Sema: add error for resolving inferred error set of generic function
Closes #14991
2023-05-11 17:23:06 +03:00
Veikka Tuominen
f0fdaf32d3 fix incorrect use of mutable pointers to temporary values 2023-05-11 17:23:06 +03:00
Veikka Tuominen
67afd2a470 Sema: make @call compile errors match regular calls
Closes #15642
2023-05-11 12:23:57 +03:00
Veikka Tuominen
73f283e3e2 Sema: fix nested call debug info
Closes #15631
2023-05-11 12:23:57 +03:00
Veikka Tuominen
0a7f8c2e01 Sema: return const pointers from ref inits
Closes #12189
2023-05-11 12:23:57 +03:00
John Schmidt
2606498409 module: return null if no candidate src
Closes #15572.
2023-05-11 11:21:44 +03:00
Jacob Young
c5b96c7447 llvm: fix @max/@min of unsupported float types
Closes #15611
2023-05-10 15:16:50 -04:00
Jacob Young
2e6a6d7564 llvm/cbe: fix signed @mod/@divFloor computations
Closes #15636
2023-05-10 15:11:52 -04:00
Jacob Young
31a13ce2e3 cbe: use Assignment in airSplat 2023-05-10 15:11:52 -04:00
Loris Cro
2d2d79a05b autodoc: fix crash when call syntax has complex callee expression 2023-05-10 21:07:40 +02:00
Veikka Tuominen
ae69fb87eb Merge pull request #15508 from r00ster91/semathings
Sema: fixes to error messages
2023-05-10 16:12:46 +03:00
Krzysztof Wolicki
b7ba9aa892 autodoc: Add layout to Struct and Union to properly display packed and extern;
Make rendering of types in exprName more similar to zig fmt
2023-05-10 01:53:00 +02:00
Andrew Kelley
e02a592437 Autodoc: update favicon to latest logo mark
ziglang/logo commit 6446ba8e37a0651da720d8869e1ce9264fa0c0b9
2023-05-09 14:24:21 -07:00
Loris Cro
8e9c9f6fdc Merge pull request #15623 from der-teufel-programming/autodoc-backing-int
Autodoc: backing integer types for packed structs
2023-05-09 20:09:42 +02:00
r00ster91
297b5d1074 fix [x]u65529 and above overflowing
```
$ cat overflow.zig
test {
    var a: [1]u65535 = undefined;
    _ = a;
}
$ zig-out/bin/zig test overflow.zig
thread 290266 panic: integer overflow
zig/src/type.zig:3604:55: 0xada43d in intAbiAlignment (zig)
            std.math.ceilPowerOfTwoPromote(u16, (bits + 7) / 8),
                                                      ^
zig/src/type.zig:3598:42: 0xadd4ea in intAbiSize (zig)
        const alignment = intAbiAlignment(bits, target);
                                         ^
zig/src/type.zig:3500:61: 0x92be91 in abiSizeAdvanced (zig)
                return AbiSizeAdvanced{ .scalar = intAbiSize(bits, target) };
                                                            ^
zig/src/type.zig:3385:62: 0x928933 in abiSizeAdvanced (zig)
                switch (try payload.elem_type.abiSizeAdvanced(target, strat)) {
                                                             ^
zig/src/type.zig:3268:32: 0x92c012 in abiSize (zig)
        return (abiSizeAdvanced(ty, target, .eager) catch unreachable).scalar;
                               ^
```
This is only noticed in a debug build of zig and silently does the wrong
thing and overflows in release builds.

This happened to `[x]u65529` and above because of the ` + 7` on a `u16`.
2023-05-09 11:58:34 +03:00
Krzysztof Wolicki
a714f07022 autodoc: Fix tag type for unions; Fix backing int for packed structs 2023-05-09 10:52:51 +02:00
Krzysztof Wolicki
b488f97e92 autodoc: Analyze and expose backing integer types for packed structs 2023-05-08 22:34:46 +02:00
Jacob Young
1f5aa7747f x86_64: finish optimizing mir tag usage
Final tag count is 95.
2023-05-08 07:36:20 -04:00
Jacob Young
ecb5feaf94 x86_64: continue to optimize mir tag usage
Migrate mnemonic literals to tuples that represent the compressed
storage.  225 tags left in use, many tags left to compress.
2023-05-08 07:36:20 -04:00
Jacob Young
6c14eb2863 x86_64: optimize mir tag usage
This moves all pseudo-instructions to a single `Mir.Inst.Tag` tag and
prepares to start coalescing similar mnemonics. 239 tags left in use.
2023-05-08 07:36:20 -04:00
Jacob Young
6778da4516 x86_64: implement binary operations for f16 and f16 vectors 2023-05-08 07:36:20 -04:00
Jacob Young
f8708e2c4d x86_64: implement @floor, @ceil, and @trunc for float vectors 2023-05-08 07:36:20 -04:00