Commit Graph

7332 Commits

Author SHA1 Message Date
LemonBoy
271fc6a247 Catch more errors during the type resolution phase
Returning the uninitialized/stale error condition made the compiler turn
a blind eye to some problems.
2020-01-02 18:53:20 +01:00
LemonBoy
563d9ebfe5 Implement the callconv() annotation 2020-01-02 18:53:16 +01:00
Andrew Kelley
197509e1ec
Merge LemonBoy's translate-c branch for linksection/align
closes #4034
2020-01-02 12:35:19 -05:00
LemonBoy
d908ca4823
Translate align attribute 2020-01-02 12:33:19 -05:00
LemonBoy
8e89bdfe99
Translate linksection attribute 2020-01-02 12:32:51 -05:00
Vexu
0f1595e72c
translate-c use @enumToInt for global enum values 2020-01-02 18:38:20 +02:00
Andrew Kelley
7bd80f2071
translate-c tests: print clang compile errors on nonzero exit code 2020-01-02 11:12:21 -05:00
Vexu
386270425f
translate-c use canonical type in casts 2020-01-02 17:49:14 +02:00
Vexu
3dd067fa2b translate-c fix increment rendering issues 2020-01-02 10:47:14 -05:00
LemonBoy
de894f2bde Prefer simple ptrCast between opaque types
Closes #4031
2020-01-02 10:42:26 -05:00
LemonBoy
1e61e5f404 Don't ptrCast a result-location assignment to _
After #4010 doing `_ = @bitCast(...)` triggered a nonsensical compiler
error.
2020-01-02 10:41:11 -05:00
Vexu
f35a963ac5 translate-c properly handle unused var-args 2020-01-02 10:39:52 -05:00
Andrew Kelley
cb56b26900
fix float ops with respect to vectors
also remove the redundant type parameter
2020-01-01 23:27:43 -05:00
Andrew Kelley
576320e6d5
Merge pull request #4025 from ziglang/Vexu-stage-2-cimport
Use self hosted translate-c for cImport
2020-01-01 22:46:46 -05:00
Andrew Kelley
88c5e2a96e
translate-c: don't export inline functions 2020-01-01 20:54:17 -05:00
Andrew Kelley
5ba143e7e3
avoid trying to translate microsoft's stdio.h inline functions
...for now. See #515
2020-01-01 20:33:07 -05:00
Andrew Kelley
a3f741e9b8
translate-c: avoid producing duplicate macro errors
This input file, for example, would produce duplicate identifiers
in the translated Zig code:

```
  #define bar err(
  #define bar err(
```
2020-01-01 20:29:35 -05:00
Andrew Kelley
365a6124d9
translate-c: fix regression from previous commit
This made macros which had an error being processed emit multiple times,
causing the self-hosted compiler to fail to build.
2020-01-01 19:58:41 -05:00
Andrew Kelley
ec09b9e5f0
translate-c: prevent name clashing of macros declared after locals 2020-01-01 19:23:46 -05:00
Andrew Kelley
9298b9a4aa
translate-c: prevent name clashing of globals declared after locals 2020-01-01 18:53:08 -05:00
Andrew Kelley
dc28526c6c
translate-c: improve support of integer casting
Widening and truncating integer casting to different signedness
works better now. For example `(unsigned long)-1` is now translated
to zig code that compiles correctly.
2020-01-01 18:10:43 -05:00
Andrew Kelley
5575e2a168
std.mem.compare: breaking API changes
* `std.mem.Compare` is now `std.math.Order` and the enum tags
   renamed to follow new style convention.
 * `std.mem.compare` is renamed to `std.mem.order`.
 * new function `std.math.order`
2020-01-01 18:08:40 -05:00
Vexu
1b64a5f5f0 fix segfault in bit shift safety check 2020-01-01 13:11:42 -05:00
Andrew Kelley
7b62d5dfd8
translate-c: propagate scope properly in nested assignment 2019-12-31 21:01:49 -05:00
Andrew Kelley
0fb3e6608c
Merge branch 'lun-4-linux-memfd-create'
Closes #3687
2019-12-31 20:41:30 -05:00
Andrew Kelley
42945a269a
translate-c: better mangling strategy
Block-local identifiers have block-local mangling numbers, and more
consistent mangling is applied within blocks. Parameters, for example,
are treated the same as other block-local variables, and are not mangled
unless they conflict with another name in scope.
2019-12-31 20:39:33 -05:00
Andrew Kelley
0c8ec369f0
std.os.memfd_create: add error.SystemOutdated 2019-12-31 17:57:20 -05:00
Andrew Kelley
5749f706ef
translate-c: non-wrapping operator for pointer arithmetic
According to C11 6.5.6.8, pointer arithmetic may not overflow. In fact,
it may not even go more than 1 past the end of an object, or UB occurs.

This is the same as Zig pointer arithmetic semantics, and so the
`+` and `+=` operators rather than `+%` and `+%=` are appropriate for
C-translated pointer arithmetic.
2019-12-31 17:33:55 -05:00
Andrew Kelley
39ee3bc0ec
Merge branch 'stage-2-cimport' of https://github.com/Vexu/zig into Vexu-stage-2-cimport 2019-12-31 16:55:41 -05:00
Andrew Kelley
c8c65b0168
translate-c: add pub to failed-to-translate macros 2019-12-31 16:54:41 -05:00
Andrew Kelley
8186211404
improvements to memfd_create
* move test from std/io/test.zig to std/os/test.zig
 * do glibc version check, and make direct system call if
   glibc is too old
 * disable test when not linking libc, to avoid not working
   with outdated qemu version on the CI server. see #4019
2019-12-31 16:34:14 -05:00
Luna
a153a972ad
io.test: close memfd at end of test 2019-12-31 15:58:03 -05:00
Luna
13c9faaa2d
c.linux: add memfd_create 2019-12-31 15:58:03 -05:00
Luna
f0cbf63e1a
os: use system for memfd_create
- os: update flags type for memfd_create
2019-12-31 15:58:03 -05:00
Luna
997812e8fb
os: add memfd_create
currently only linux is supported
2019-12-31 15:58:03 -05:00
Andrew Kelley
25051832b3
std.fmt.format: add helpful compile error for non-tuple args 2019-12-31 13:13:13 -05:00
mogud
d972d1c942 generate header in separate folder 2019-12-31 02:25:57 -05:00
Andrew Kelley
86ba8c06bf
Merge branch 'lun-4-net-reuseaddr-opt'
Closes #3820
2019-12-30 19:36:43 -05:00
Andrew Kelley
99f6f8ead9
update setsockopt error set according to POSIX
In the code review I accidentally encouraged Luna to remove some
handling of errors that are possible according to POSIX, but I think how
Luna had it before was better, so I fixed it, and now the branch should
be good to merge.
2019-12-30 19:35:05 -05:00
Luna
22f6297157
std.os: update error set for setsockopt 2019-12-30 19:26:30 -05:00
Luna
0d852effe3
std.net: use mem.toBytes 2019-12-30 19:26:30 -05:00
Luna
50e6a27c29
std.net: fix setsockopt call 2019-12-30 19:26:30 -05:00
Luna
5efc0ea89e
std.os: make setsockopt receive a slice as option 2019-12-30 19:26:30 -05:00
Luna
ea8f496970
std.c: c_uint -> u32 for sockopt functions 2019-12-30 19:26:30 -05:00
Luna
3ccbf3cfc2
move parameters on sockopt functions to c_uint
this makes them consistent with the linux syscalls
2019-12-30 19:26:30 -05:00
Luna
d423bb3808
std.c: add setsockopt 2019-12-30 19:26:30 -05:00
Luna
0e67568bca
net: fix Options
- os: fix typos on setsockopt
2019-12-30 19:26:30 -05:00
Luna
4a4d2c0d80
os: add setsockopt
- net: use os.setsockopt()
2019-12-30 19:26:29 -05:00
Luna
631eb6783d
add StreamServer.Options.reuse_address
this uses a bad direct interface with std.os.linux, this should add
setsockopt to std.os.
2019-12-30 19:26:29 -05:00
Andrew Kelley
73e535e112
Merge pull request #3683 from Vexu/atomic-float
Support floats with some atomic operations
2019-12-30 19:19:05 -05:00