Commit Graph

1133 Commits

Author SHA1 Message Date
Andrew Kelley
a95dce15ae Merge remote-tracking branch 'origin/master' into llvm10 2020-01-29 23:33:12 -05:00
Benjamin Feng
b7a236d68e Convert a bunch of page_allocator to testing.allocator 2020-01-29 22:22:01 -06:00
LemonBoy
534014f84e translate-c: Handle fn protos wrapped in parenthesis
Closes #4289
2020-01-29 12:06:53 -05:00
Andrew Kelley
9dffc369f1 Merge remote-tracking branch 'origin/master' into layneson-cpus_and_features 2020-01-25 23:25:29 -05:00
Feix Weiglhofer
a4a9330648 translate-c: Don't make const parameters mutable. (#4273)
* translate-c: Remove arg-prefix from const parameters.
* translate-c: Add unittest for const parameters.
2020-01-24 15:32:32 -05:00
Andrew Kelley
72589dbffe zig_clang builds with llvm 10 2020-01-23 17:22:13 -05:00
Andrew Kelley
32dafbdadc zig_clang: update StmtClass to llvm 10 2020-01-23 16:52:40 -05:00
Andrew Kelley
3588f99719 zig_clang: update TypeClass enum 2020-01-23 14:35:12 -05:00
LemonBoy
a284be3f69 Fix unsafe cast in translate_c
Fixes #4250
2020-01-22 17:58:57 -05:00
Andrew Kelley
3227aec848 fix not respecting sub-arch feature 2020-01-22 17:35:57 -05:00
Andrew Kelley
48c7e6c48b std.Target.CpuFeatures is now a struct with both CPU and feature set
Previously it was a tagged union which was one of:
 * baseline
 * a specific CPU
 * a set of features

Now, it's possible to have a CPU but also modify the CPU's feature set
on top of that. This is closer to what LLVM does.

This is more correct because Zig's notion of CPUs (and LLVM's) is not
exact CPU models. For example "skylake" is not one very specific model;
there are several different pieces of hardware that match "skylake" that
have different feature sets enabled.
2020-01-22 17:13:31 -05:00
Andrew Kelley
cbe9a51518 don't trust llvm's GetHostCPUName
comment from this commit reproduced here:

I have observed the CPU name reported by LLVM being incorrect. On
the SourceHut build services, LLVM 9.0 reports the CPU as "athlon-xp",
which is a 32-bit CPU, even though the system is 64-bit and the reported
CPU features include, among other things, +64bit.
So the strategy taken here is that we observe both reported CPU, and the
reported CPU features. The features are trusted more; but if the features
match exactly the features of the reported CPU, then we trust the reported CPU.
2020-01-21 22:02:13 -05:00
Andrew Kelley
830e0ba2d2 enable native CPU feature for windows; disable failing tests
See #508. These can be re-enabled when we upgrade to LLVM 10.
2020-01-21 21:46:06 -05:00
Andrew Kelley
6e6ec3d71d put hack back in to disable windows native cpu features
See #508. This can be removed when we upgrade to LLVM 10.
2020-01-21 21:01:36 -05:00
Andrew Kelley
68b6867e76 lazily compute the full cpu features dependencies 2020-01-21 20:11:36 -05:00
Andrew Kelley
92559cd02c hit a comptime limitation with computing dense sets 2020-01-21 19:40:44 -05:00
Andrew Kelley
91ecce3bc0 fix cache of cpu features 2020-01-21 12:14:43 -05:00
Andrew Kelley
1f7babbc80 properly forward baseline target cpu features to llvm 2020-01-21 03:01:20 -05:00
Andrew Kelley
0abaee79af fix self-hosted compiler regression 2020-01-21 01:51:21 -05:00
Andrew Kelley
5974f95cb7 add cpus and cpu features to zig targets 2020-01-21 01:48:25 -05:00
Andrew Kelley
0c2dde2fda add libc and glibcs to self-hosted zig targets 2020-01-21 01:31:27 -05:00
Andrew Kelley
39759b90fc make zig targets show native cpu name and features 2020-01-21 01:22:37 -05:00
Andrew Kelley
e640d01535 fixups to arch data, support any number of cpu features 2020-01-21 00:34:54 -05:00
Andrew Kelley
f3dd9bbdac improve zig targets 2020-01-20 13:40:25 -05:00
Andrew Kelley
bf82929557 fix std.Target.Arch.parseCpuFeatureSet 2020-01-20 12:41:18 -05:00
Andrew Kelley
8f29d14073 stage1 is building. zig targets now self-hosted 2020-01-20 01:42:31 -05:00
Andrew Kelley
20af858601 some fixes 2020-01-19 21:06:41 -05:00
Andrew Kelley
a313f15384 figure out zig0/stage1 and scanning for native CPU 2020-01-19 20:54:05 -05:00
Andrew Kelley
a867b43366 progress towards merging
see BRANCH_TODO file
2020-01-19 20:54:04 -05:00
Layne Gustafson
430077df1b Allow target details with no LLVM support 2020-01-19 20:53:20 -05:00
Layne Gustafson
35c681b7b1 Fix sentinel mismatch in llvm strings
Previously, buffers were used with toOwnedSlice() to create c strings
for LLVM cpu/feature strings. However, toOwnedSlice() shrinks the
string memory to the buffer's length, which cuts off the null terminator.
Now toSliceConst() is used instead, and the buffer is not deinited
so that the string memory is not freed.
2020-01-19 20:53:20 -05:00
Layne Gustafson
8902f3ca32 Enable 64bit feature for riscv64 2020-01-19 20:53:20 -05:00
Layne Gustafson
a5c9397539 No allocations for n.t. empty strings 2020-01-19 20:53:20 -05:00
Layne Gustafson
40ff359486 Only enable requested features 2020-01-19 20:53:20 -05:00
Layne Gustafson
ebb6f15bba Make sure llvm strings are null-terminated 2020-01-19 20:53:20 -05:00
Layne Gustafson
fd17a9962b Add defaut feature support 2020-01-19 20:53:20 -05:00
Layne Gustafson
03dd376b55 Add builtin.zig support 2020-01-19 20:53:19 -05:00
Layne Gustafson
c61856ebcf Add TargetDetails abstraction 2020-01-19 20:53:19 -05:00
Layne Gustafson
bd6ef21f85 Add cpu/feature specification to cmndline 2020-01-19 20:53:19 -05:00
Layne Gustafson
c131e50ea7 Switch CPU/features to simple format 2020-01-19 20:53:18 -05:00
Layne Gustafson
5bc4690d85 Make targets cmd able to list CPUs and features 2020-01-19 20:53:18 -05:00
Andrew Kelley
b5ac079f88 Merge pull request #4191 from Vexu/non-exhaustive-enums
Implement non-exhaustive enums
2020-01-17 14:26:12 -05:00
LemonBoy
7e5e767ba0 Fix regression in char printing
Closes #4014
2020-01-16 12:17:16 -05:00
Vexu
6450736c5f translate-c default enum tag type to c_int 2020-01-16 12:50:44 +02:00
Vexu
f3d174aa61 require size for non-exhaustive enums 2020-01-15 21:38:11 +02:00
Vexu
b971c7d0ff update tests and translate-c 2020-01-15 20:58:42 +02:00
Andrew Kelley
b9f37ffe19 fix outdated comment 2020-01-13 14:48:43 -05:00
LemonBoy
34ae1d9aa8 Fix unsafe cast in translate_c
* Handle EmptyDecls to clean up the generated code

Closes #4143
2020-01-11 15:51:10 -05:00
LemonBoy
570ffc470e Handle forward-declared functions
Closes #4130
2020-01-10 16:34:40 -05:00
travisstaloch
3f98756f85 Fix translation of signed array indices (#4113)
* cast only if the index is long long or signed
* cast long long to usize rather than c_uint

closes #4075
2020-01-10 00:08:24 -05:00