Andrew Kelley
5c4bbd0657
Merge remote-tracking branch 'origin/master' into llvm16
2023-03-17 14:55:22 -07:00
Jacob Young
cfcd6698cd
main: add debug option to dump unoptimized llvm ir
2023-03-17 01:57:14 -04:00
Andrew Kelley
1ed569e0b2
Merge remote-tracking branch 'origin/master' into llvm16
2023-03-16 17:33:24 -07:00
Andrew Kelley
48e72960a4
llvm: fix lowering of @trap
...
It needed an unreachable instruction after it.
2023-03-05 17:23:09 -07:00
Andrew Kelley
2641feb9b9
Merge pull request #14789 from jacobly0/ditype
...
llvm: fix use after free with pointers to optional slices
2023-03-05 16:32:51 -05:00
Jacob Young
2cf27c5718
llvm: fix incorrectly annotated DIType
...
Closes #14715
Closes #14783
2023-03-04 13:52:47 -07:00
r00ster91
65368683ad
add @trap builtin
...
This introduces a new builtin function that compiles down to something that results in an illegal instruction exception/interrupt.
It can be used to exit a program abnormally.
This implements the builtin for all backends.
2023-03-04 12:08:19 +01:00
Andrew Kelley
df4cfc2ecf
Merge remote-tracking branch 'origin/master' into llvm16
2023-03-03 12:08:18 -07:00
Andrew Kelley
d399f8a489
Merge remote-tracking branch 'origin/master' into llvm16
2023-02-27 16:10:48 -07:00
Jacob Young
9e51972701
llvm: fix untagged struct names in debug info for llvm (again)
...
At least lldb misbehaves with all these same-named unions, so just
generate a unique name.
2023-02-27 05:18:47 -05:00
Isaac Freund
05da5b32a8
Sema: implement @fieldParentPtr for unions
2023-02-21 15:57:13 +02:00
Andrew Kelley
b5b634e4e8
Merge remote-tracking branch 'origin/master' into llvm16
2023-02-19 10:20:19 -07:00
Andrew Kelley
aeaef8c0ff
update std lib and compiler sources to new for loop syntax
2023-02-18 19:17:21 -07:00
Andrew Kelley
efdc94c107
Merge remote-tracking branch 'origin/master' into llvm16
2023-02-18 09:33:27 -07:00
Veikka Tuominen
0328c9cbeb
llvm: fix lowerDeclRefValue for extern function aliases
...
Same as 0577069af5 for extern functions.
Closes #14610
2023-02-11 14:36:54 +02:00
Veikka Tuominen
8127a27eb1
zig fmt: do not consider tuples blocks
...
Closes #14056
2023-02-11 14:36:54 +02:00
Andrew Kelley
fab9b7110e
Merge remote-tracking branch 'origin/master' into llvm16
2023-02-03 12:49:40 -07:00
Andrew Kelley
2f5892671e
move compiler's CType logic to std.Target
...
This API only depends on std.Target and is extremely useful in build
scripts when populating configure files.
2023-01-31 15:09:35 -07:00
Andrew Kelley
0ca3582a86
update CPU features to LLVM 16
2023-01-26 16:36:14 -07:00
Veikka Tuominen
aa626deadd
llvm: implement explicit Win64 and SysV calling conventions
2023-01-22 01:04:20 +02:00
Veikka Tuominen
fe6dcdba14
Merge pull request #14357 from kcbanner/llvm_byval_struct
...
llvm: implement Stdcall calling convention
2023-01-20 04:38:49 +02:00
Veikka Tuominen
2b7678bc42
llvm: implement Stdcall return types
2023-01-19 16:13:52 +02:00
kcbanner
5949851074
llvm: pass non-scalars as byref in .Stdcall
...
- add c_abi tests for .Stdcall
- enable (x86|x86_64)-windows-gnu in the c_abi tests
2023-01-19 00:37:56 -05:00
Veikka Tuominen
24646b8b5d
windows x86_64 C ABI: pass byref structs as byref_mut
2023-01-17 20:28:43 +02:00
Veikka Tuominen
6e067dc050
llvm: do not offset packed struct field pointers if they have a host size
...
Closes #14261
2023-01-17 20:28:42 +02:00
Veikka Tuominen
342bae02d8
Sema: automatically optimize order of struct fields
...
This is a simple starting version of the optimization described in #168
where the fields are just sorted by order of descending alignment.
2023-01-16 19:46:41 +02:00
Veikka Tuominen
0013042cbd
llvm: correctly handle C ABI structs with f32/f64 alignment differences
...
Closes #13830
2023-01-14 16:26:50 +02:00
Veikka Tuominen
5572c67e73
add C ABI tests for exotic float types
2023-01-14 16:26:50 +02:00
Felix "xq" Queißner
f7ade7e63b
Fixes bug in AVR codegen for llvm backend
2023-01-10 16:08:05 +02:00
Michael Dusan
e0fb4c29cb
llvm codegen: fix f16,f32,f64 nan bitcasts
...
@bitCast from integer NaN representation to float NaN resulted in
changed bits in float. This only happened with signaled NaN.
- added test for signaled NaN
- added tests for quiet NaN (for completeness)
closes #14198
2023-01-05 02:22:30 -07:00
Maciej 'vesim' Kuliński
2b9478ce12
Sema: implement AVR address spaces
...
Co-authored-by: Veikka Tuominen <git@vexu.eu >
2023-01-04 01:26:50 +02:00
Guillaume Wenzek
a44085dc2a
add -fopt-bisect-limit
2023-01-03 13:05:09 +02:00
Veikka Tuominen
bd711dfd25
llvm: do not pad vector element debug types
2022-12-30 21:24:40 +02:00
Veikka Tuominen
f874b5e1e0
llvm: work around lldb bugs
...
Closes #14122
2022-12-30 17:00:50 +02:00
Veikka Tuominen
4e64373fc0
fix generic function arg debug info referencing wrong parameter
...
Closes #14123
2022-12-30 17:00:50 +02:00
Jacob Young
81318e8704
llvm: add asserts and behavior tests for #14063
...
Closes #14063
2022-12-27 00:12:56 -05:00
Jacob Young
46b49a0a76
llvm: cleanup code no longer needed with opaque pointers
...
When using llvm opaque pointers, typed pointers and pointer bitcasts are
no longer needed. This also avoids needing packed struct layouts that
are nested inside pointers, letting us avoid computing struct layouts
in Sema that could cause unnecessary dependency loops.
2022-12-27 00:12:56 -05:00
Veikka Tuominen
81443fcde8
Sema: add error for recursive inline call
...
Closes #12973
2022-12-26 16:36:30 +02:00
Veikka Tuominen
e1345fd0a0
Merge pull request #14004 from Vexu/packed-struct-vector
...
llvm: handle vectors in packed structs
2022-12-20 23:13:36 +02:00
Veikka Tuominen
2926d95e6a
llvm: handle vectors in packed structs
...
Closes #13201
2022-12-19 12:19:52 +02:00
Jacob Young
0e3feebb04
codegen: fix taking the address of a zero-bit field in a zero-bit struct
...
Normally when we want a pointer to the end of a struct we just add 1 to
the struct pointer. However, when it is a zero-bit struct, the pointer
type being used during lowering is often a dummy pointer type that
actually points to a non-zero-bit type, so we actually want to add 0
instead, since a zero-bit struct begins and ends at the same address.
2022-12-18 22:11:26 -05:00
Jacob Young
52e5c66025
llvm: fix use of invalid alignment
...
* Initialize `big_align` with 1 as 0 is not a valid alignment.
* Add an assert to `alignForwardGeneric` to catch this issue earlier.
* Refactor valid alignment checks to call a more descriptive function.
2022-12-18 22:11:26 -05:00
Jacob Young
18f05664dc
llvm: avoid creating an invalid llvm type
...
Fixes the following assertion:
```
zig: llvm/lib/IR/Type.cpp:729: static llvm::PointerType* llvm::PointerType::get(llvm::Type*, unsigned int): Assertion `isValidElementType(EltTy) && "Invalid type for pointer element!"' failed.
```
2022-12-18 22:11:26 -05:00
Jacob Young
e96f65db77
llvm: fix lowering pointer to final zero-width field of a comptime value
...
* Handle a `null` return from `llvmFieldIndex`.
* Add a behavior test to test this code path.
* Reword this test name, which incorrectly described how pointers to
zero-bit fields behave, and instead describe the actual test.
2022-12-18 22:11:26 -05:00
Veikka Tuominen
9bb1104e37
implement defining C variadic functions
2022-12-17 13:22:09 +02:00
yujiri8
68d2f68ed8
zig fmt: fix extra whitespace with multiline strings
...
Fixes #13937
2022-12-17 00:24:58 +02:00
Travis Staloch
1ebb761244
codegen - lower str_lit to vector
2022-12-16 06:08:10 -05:00
Veikka Tuominen
8a0a6b7387
port packed vector elem ptr logic from stage1
...
Closes #12812
Closes #13925
2022-12-15 21:06:35 -05:00
Veikka Tuominen
9d93b2ccf1
Eliminate BoundFn type from the language
...
Closes #9484
2022-12-09 20:37:18 -07:00
Jakub Konka
bda5180b2c
llvm: resolve all relative paths when creating DIFiles
...
This will make stack traces and debugging experience more consistent
in the sense that the presence of source lines in stack traces will
not be dependent on the current working directory of the running process.
2022-12-09 14:16:44 +01:00