| Age | Commit message (Collapse) | Author |
|
Win32
|
|
infrastructure in place for displaying error sets
|
|
|
|
|
|
|
|
|
|
This commit adds -fdump-analysis which creates
a `$NAME-analysis.json` file with all of the finished
semantic analysis that the stage1 compiler produced.
It contains types, packages, declarations, and files.
This is an initial implementation; some data will be
missing. However it's easy to improve the implementation,
which is in `src/dump_analysis.cpp`.
The next step for #21 will be to create Zig code which parses
this json file and creates user-facing HTML documentation.
This feature has other uses, however; for example, it could
be used for IDE integration features until the self-hosted
compiler is available.
|
|
See #3338 and #3339
|
|
This is what I was going for originally - either we understand that
LLVM's padding is sufficient, or we do the entire padding ourselves.
|
|
Make sure the resulting type is in-sync with the one produced and used
by LLVM.
Fixes #3138
|
|
Initial support for mipsel architecture
|
|
Closes #3316
|
|
|
|
Fixes #3240
|
|
Previously if the type parameter was a pointer, it would assert that the
size of the type was resolved. It used to be that the size of pointers was
always resolved, however with lazy values, pointers gained the
possibility of not having their size resolved.
Now, type_allowed_in_extern triggers the resolution of whether a pointer
is zero bits, and returns a possible error if the resolution fails.
This fixes a compiler assertion when building the
[zootdeck project](https://github.com/donpdonp/zootdeck). I do not have
a test case reduction for the issue.
|
|
it's disabled on aarch64, see #3282
|
|
A few steps towards AArch64 & ARM passing the behavior tests
|
|
|
|
Don't forget to resolve the pointee type
|
|
|
|
* update docs for `@byteSwap`.
* fix hash & eql functions for ZigLLVMFnIdBswap not updated to
include vector len. this was causing incorrect bswap function
being called in unrelated code
* fix `@byteSwap` behavior tests only testing comptime and not
runtime operations
* implement runtime `@byteSwap`
* fix incorrect logic in ir_render_vector_to_array and
ir_render_array_to_vector with regards to whether or not to bitcast
* `@byteSwap` accepts an array operand which it will cast to vector
* simplify `@byteSwap` semantic analysis code and various fixes
|
|
Vectors do not have the same packing as arrays, and just bitcasting
is not the correct way to convert them.
|
|
```
Assertion `!isa<DIType>(Scope) && "shouldn't
make a namespace scope for a type"
```
We've had this problem and solved it before; see #579.
|
|
* Allow comptime_int as explicit enum tag type
Closes #2997
|
|
See #3069
|
|
Fixes #3128
|
|
also add -fstack-report
|
|
Sometimes the frontend and LLVM would disagree on the ABI alignment of a
packed union. Solve the problem by telling LLVM we're gonna manage the
struct layout by ourselves.
Closes #3184
|
|
|
|
|
|
Also reduce the size of ZigVar in memory by making the name
a `const char *` rather than a `Buf`.
|
|
closes #3076
|
|
|
|
closes #3077
|
|
|
|
See #3157
|
|
Packed structs used to skip the zero-sized types and trip some
assertions that expected the type reference not to be null.
Fixes #3143
|
|
- print fn name in pass1
- replace scalar with enum IrPass for clarity
|
|
|
|
See #3117
|
|
|
|
marler8997-fixSegfault
|
|
- pass2 now prints missing instructions in a trailing fashion
- instruction struct name added to print as column 2
|
|
* `await @asyncCall` generates better code. See #3065
* `@asyncCall` works with a real `@Frame(func)` in addition to
a byte slice. Closes #3072
* `@asyncCall` allows passing `{}` (a void value) as the result
pointer, which uses the result location inside the frame.
Closes #3068
* support `await @asyncCall` on a non-async function. This is in
preparation for safe recursion (#1006).
|
|
related: #1627
|
|
which heap allocate their own frames
related: #1006
|
|
|
|
closes #3067
|
|
|
|
|