LemonBoy
0ccac79c8e
Implement Thiscall CC
2020-01-02 18:57:08 +01:00
LemonBoy
08a26fea09
translate-c tests
2020-01-02 18:57:07 +01:00
LemonBoy
0ec64d4c0c
Integrate callconv into translate-c-2
2020-01-02 18:53:21 +01:00
LemonBoy
563d9ebfe5
Implement the callconv() annotation
2020-01-02 18:53:16 +01: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
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
Vexu
f35a963ac5
translate-c properly handle unused var-args
2020-01-02 10:39:52 -05:00
Andrew Kelley
88c5e2a96e
translate-c: don't export inline functions
2020-01-01 20:54:17 -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
7b62d5dfd8
translate-c: propagate scope properly in nested assignment
2019-12-31 21:01:49 -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
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
Vexu
950eb81304
translate-c-2 macro comparision ops
2019-12-29 20:19:30 +02:00
frmdstryr
fcc82a219a
Add macro ops
2019-12-29 19:50:45 +02:00
Vexu
55348c9b93
translate-c-2 bug fixes
...
- fix use of undefined value
- fix parenexprclass result not being suppressed
- add an error and a TODO for access of an anonymous field
2019-12-29 19:23:36 +02:00
Vexu
621629e20d
translate-c-2 fix assertion failure rendering do while
2019-12-29 17:09:31 +02:00
Vexu
f5e7d2d00c
translate-c fix bugs
...
Thanks @daurnimator
2019-12-29 14:01:59 +02:00
Vexu
59cc7072e2
translate-c-2 use `intCast` in most places
2019-12-29 11:04:59 +02:00
Vexu
3f7bab7373
fix translate-c taking ages
2019-12-29 11:04:58 +02:00
Vexu
1e52b7d690
translate-c-2 improve macro errors
2019-12-28 23:38:07 +02:00
Vexu
aea46dcd7e
translate-c-2 macro conditional operator
2019-12-28 22:32:18 +02:00
LemonBoy
6070ffc28e
Fix crash with forward-declared enums
...
Closes #3754
2019-12-28 00:57:37 +01:00
LemonBoy
a38704d012
Fix crash in translate-c w/ parameterless fn
2019-12-28 00:50:17 +01:00
Vexu
9d31b65b34
translate-c-2 various fixes
...
- make non-namespaced enums ints
- fix .used compound assignments not being grouped
- fix macro calls with casts producing invalid Zig
2019-12-22 14:38:06 +02:00
Vexu
40f607d195
translate-c-2 fix macro regression
2019-12-20 22:48:40 +02:00
Vexu
949f2369c1
translate-c-2 fix bugs found translating SDL
2019-12-20 20:22:22 +02:00
Vexu
9437d99ae2
translate-c-2 final small fixes
2019-12-20 18:51:44 +02:00
Vexu
daeb939210
translate-c-2 fix switch range
2019-12-20 11:35:21 +02:00
Vexu
d172a7335c
translate-c-2 copy parametrs to stack
2019-12-20 00:12:08 +02:00
Vexu
b7f18164f9
translate-c-2 add missing casts
2019-12-19 21:30:51 +02:00
Vexu
61482be153
translate-c-2 improve macro fn ptr caller
2019-12-19 20:58:48 +02:00
Vexu
f837c7c9cd
translate-c-2 compound assign
2019-12-19 16:13:28 +02:00
Vexu
6cd402f1b4
translate-c-2 increments worst-case
2019-12-19 10:48:32 +02:00
Vexu
809deb6ec0
translate-c-2 unary operators common case
2019-12-19 09:56:00 +02:00
Vexu
e4c47e80b4
translate-c-2 unaryexprortypetrait + fixes
2019-12-19 08:28:36 +02:00
Vexu
122a9bad39
translate-c-2 fix some casts
2019-12-19 01:38:42 +02:00
Vexu
d54c288bd3
translate-c-2 function calls
2019-12-18 23:56:39 +02:00
Vexu
c2666c48a4
translate-c-2 array access
2019-12-18 22:57:53 +02:00
Vexu
cf7a5b7a4a
translate-c-2 member access
2019-12-18 22:29:42 +02:00
Vexu
e65b9e8f7b
translate-c-2 stmt expr
2019-12-18 21:20:38 +02:00
Vexu
62bfff5e87
translate-c-2 fix expression grouping bugs
2019-12-18 13:32:19 +02:00
Vexu
f54e7d6c99
translate-c-2 update @kavika13's work to removal of TransResult
2019-12-18 12:47:35 +02:00
Vexu
90eed4172d
Merge remote-tracking branch 'kavika13/master' into translate-c-2
2019-12-18 09:51:40 +02:00
Vexu
21bc3353b8
translate-c-2 character literals and more test fixes
2019-12-18 01:04:01 +02:00
Vexu
6d7025d0c5
translate-c-2 various fixes to get more tests passing
2019-12-17 23:28:13 +02:00
Vexu
a6960b89ed
translate-c-2 fix container type resolution
2019-12-17 22:05:07 +02:00
Vexu
65531c73a9
translate-c-2 switch
2019-12-17 17:19:28 +02:00
Vexu
0283ab8a1a
translate-c-2 conditional operator
2019-12-17 12:06:28 +02:00
Vexu
daa22d42b0
translate-c-2 floats
2019-12-17 11:28:56 +02:00
Vexu
9cda93a24e
translate-c-2 don't shadow primitive types
2019-12-17 10:20:02 +02:00
Vexu
ab6fe57462
translate-c-2 for loops
2019-12-17 01:40:06 +02:00
Vexu
d54bcb2b62
translate-c-2 break and continue
2019-12-16 23:54:16 +02:00
Vexu
6a3d48353b
translate-c-2 while loops
2019-12-16 22:10:17 +02:00
Vexu
e3f1bfe483
translate-c-2 if statements
2019-12-16 18:19:37 +02:00
Vexu
626562555e
translate-c-2 wors-case assign
2019-12-16 18:19:37 +02:00
Vexu
d9527edfe0
translate-c-2 comma operator
2019-12-16 18:19:24 +02:00
Andrew Kelley
0f09ff4923
Merge pull request #3916 from Vexu/translate-c-2
...
Translate-c-2 macros
2019-12-16 10:55:32 -05:00
Vexu
04dc0bd0e4
translate-c-2 variable aliasing
2019-12-16 12:45:00 +02:00
Merlyn Morgan-Graham
0c03fe48b3
Fix compile errors after rebasing on master (missing switch->else)
2019-12-16 01:37:53 -08:00
Merlyn Morgan-Graham
89ef635b35
Add boolean and, boolean or binary ops in translate-c-2
2019-12-16 01:34:05 -08:00
Merlyn Morgan-Graham
acff2d407b
Add bit shift binary ops in translate-c-2
2019-12-16 01:34:04 -08:00
Merlyn Morgan-Graham
c8c89648b0
Add comparison and bitwise binary ops in translate-c-2
2019-12-16 01:34:04 -08:00
Vexu
a37caaa528
translate-c-2 parameter name aliasing
2019-12-16 10:39:31 +02:00
Vexu
0f38410ea6
improve extern enum
2019-12-15 19:28:53 -05:00
Vexu
ab60c8e28f
c tokenizer escape sequences
2019-12-16 00:55:50 +02:00
Vexu
9f0e83a571
translate-c-2 macro functions
2019-12-15 23:46:35 +02:00
Vexu
ed2a19dcec
translate-c-2 macro cast
2019-12-15 21:32:30 +02:00
Vexu
57170f9eb6
translate-c-2 macro inline fn
2019-12-15 19:28:34 +02:00
Vexu
75218d4765
translate-c-2 macros
2019-12-15 14:44:11 +02:00
Vexu
e57e3602e7
translate-c-2 implement enums
2019-12-14 23:24:47 +02:00
Vexu
1a967db083
add default initializers to all ast.Node base values
2019-12-14 20:40:56 +02:00
Vexu
1f84586836
translate-c-2 avoid collisions with zig keywords
2019-12-14 17:00:10 +02:00
Vexu
4dae70e702
translate-c-2 container aliases
2019-12-14 13:40:33 +02:00
Vexu
a4ac6d15c4
translate-c-2 array initializer expr
2019-12-14 10:49:25 +02:00
Vexu
e4ca1f441b
translate-c-2 record type
2019-12-14 02:00:01 +02:00
Vexu
41a67126a5
translate-c-2 typedef
2019-12-13 17:40:37 +02:00
Vexu
eb057ef41c
translate-c-2 dont eval init expr
2019-12-13 15:07:10 +02:00
Vexu
0795f17db2
translate-c-2 incompleteArray
2019-12-12 21:39:04 +02:00
Vexu
48ac84db1b
translate-c-2 translate apvalue
2019-12-12 20:35:40 +02:00
Vexu
3bca025091
update tests
2019-12-12 18:18:43 +02:00
Vexu
ef361161e2
translate-c-2 add var decl
2019-12-12 16:12:19 +02:00
Vexu
69dee57d95
remove concept of translate mode
2019-12-12 14:26:24 +02:00
Merlyn Morgan-Graham
12171dba92
Add function parameters to self-hosted translate-C
2019-12-10 23:52:40 -08:00
Merlyn Morgan-Graham
fe415dae04
Add paren expression statements to self-hosted translate-C
2019-12-10 23:52:40 -08:00
Merlyn Morgan-Graham
3e4f5de33c
Add rem binary operator to self-hosted translate-C
2019-12-10 23:52:40 -08:00
Merlyn Morgan-Graham
79fe7e6515
Add mul and div binary operators to self-hosted translate-C
2019-12-10 23:52:40 -08:00
Robin Voetter
4b4fbe3887
Replace @typeOf with @TypeOf in all zig source
...
This change was mostly made with `zig fmt` and this also modified some whitespace. Note that in some files, `zig fmt` produced incorrect code, so the change was made manually.
2019-12-10 11:09:41 -05:00
Andrew Kelley
8b2622cdd5
std.fmt.format: tuple parameter instead of var args
2019-12-08 22:53:51 -05:00
Andrew Kelley
15d415e10b
make std.mem.toSlice use null terminated pointers
...
and fix the fallout
2019-11-24 21:21:05 -05:00
Andrew Kelley
34b1ebefaa
Merge remote-tracking branch 'origin/master' into null-terminated-pointers
2019-11-24 20:28:46 -05:00
Andrew Kelley
00878a15d7
zig fmt: support sentinel-terminated pointer syntax
2019-11-23 22:21:25 -05:00
Vexu
d40f204ec0
self hosted compiler: small miscellaneous fixes
2019-11-23 21:57:24 +02:00
Vexu
03cc81665b
Merge branch 'master' into modernize-stage2
2019-11-23 19:13:48 +02:00
Andrew Kelley
fd6020c4e2
update tests, better error messages, update self-hosted tokenizer
2019-11-21 20:43:41 -05:00
Andrew Kelley
21f344b3b9
add null terminated pointers and arrays to self-hosted
...
as well as `@typeInfo` and `@Type`
2019-11-21 20:43:41 -05:00
Vexu
b92f42d1f4
implemented container doc comments in stage 2
2019-11-14 16:25:06 +02:00
Andrew Kelley
3cf5c2c62b
fix regressed tests and update docs to use "type coercion"
2019-11-08 15:57:25 -05:00
Andrew Kelley
aa0daea541
update more of the std lib to use `@as`
2019-11-08 15:57:25 -05:00
Vexu
c6076a1360
self hosted compiler: use enum literals
2019-11-07 10:30:56 +02:00
Andrew Kelley
845be4ea3e
fix regression in translate-c
2019-10-28 15:29:50 -04:00
Andrew Kelley
4b80e376e3
std.net.getAddressList
2019-10-28 15:29:50 -04:00
Andrew Kelley
79cb383f7d
fix 32-bit build of translate_c.zig
2019-10-24 19:46:11 -04:00
Vexu
2151f84d59
implement new async syntax in self-hosted compiler
2019-08-16 06:17:28 -07:00
hryx
247e567422
Don't return a slice pointing to a deceased stack address
2019-06-28 18:01:41 -07:00
hryx
102bf5200c
Fix string literal: not null-terminated (thanks @mikdusan)
2019-06-28 17:40:20 -07:00
hryx
cc74bf5136
Translate IntegralCast; add stage2 test coverage
2019-06-27 23:12:33 -07:00
hryx
646268875e
Use new width format option
2019-06-27 22:16:31 -07:00
hryx
3e0ff32bd8
Separate with space instead of LF to prevent rendering excessive indentation
2019-06-27 21:17:27 -07:00
hryx
b4bd52cc51
Create and render big.Int from IntegerLiteral; group BinaryOperator
2019-06-27 21:02:48 -07:00
hryx
8435351581
Escape C string literals
2019-06-24 22:37:19 -07:00
hryx
f845994839
transBinaryOperator: Add, Sub
2019-06-23 17:17:21 -07:00
hryx
69b90e0681
transStringLiteral
2019-06-23 15:06:16 -07:00
hryx
b2e06c3bf4
Observe translate mode in stage2
2019-06-23 14:32:45 -07:00
hryx
1c86a191da
Fix order of tokens; omit 'pub' for fn types
2019-06-23 01:03:28 -07:00
hryx
4c8b460fec
Fix recursive self-referential block
2019-06-22 22:30:15 -07:00
hryx
4ae95d7ffc
Translate assignment BinaryOperator statements
2019-06-22 17:29:36 -07:00
hryx
6325ffc3f1
Assign undefined literal (instead of null) when no init value
2019-06-22 17:29:10 -07:00
hryx
0f545e5a2b
transReturnStmt
2019-06-10 23:06:54 -07:00
hryx
84e479d94f
(broken) local var decls, integer literals (part)
2019-06-09 23:35:48 -07:00
hryx
ad0f0562d8
Merge branch 'master' into translate-c-userland
2019-06-08 16:23:27 -07:00
hryx
ed5b8335b5
(broken) translate Paren type
2019-06-08 16:09:25 -07:00
hryx
1692a76d28
transImplictCastExpr: LValueToRValue
2019-06-08 15:57:43 -07:00
hryx
1f82c7ba22
transCStyleCastExpr
2019-06-08 15:54:15 -07:00
Andrew Kelley
bfc86776d5
run zig fmt to update `use` to `usingnamespace`
2019-05-29 19:09:58 -04:00
hryx
3e14f86f9e
Implement missing clang functions from last commit
2019-05-29 15:33:44 -07:00
hryx
e632c2ade3
(broken) port a bunch of stuff from stage1 translate-c
2019-05-27 23:55:48 -07:00
hryx
b558d0996a
expr: DeclRefExpr
2019-05-27 19:20:23 -07:00
hryx
e07888e54c
expr: FunctionToPointerDecay & ArrayToPointerDecay for ImplicitCastExpr
2019-05-27 18:18:27 -07:00
hryx
22299869ba
Prevent infinite recursion
2019-05-27 17:54:40 -07:00
hryx
e1f3eec9cc
Merge branch 'master' into translate-c-userland
2019-05-27 17:24:21 -07:00
Andrew Kelley
3fccc07479
self-hosted translate-c: fix bad memory arena references
2019-05-27 20:22:15 -04:00
hryx
2aa1c5da5d
Remove unused local struct type
2019-05-27 15:58:21 -07:00
hryx
3bbee1ba2e
expr: BitCast for ImplicitCastExpr
2019-05-27 14:38:09 -07:00
hryx
9c437f9032
var decl: ImplicitCastExpr
2019-05-26 19:14:50 -07:00
hryx
1a8f8c6262
var decl: init node
2019-05-26 17:36:47 -07:00
hryx
c79b8aeaef
var decl: threadlocal
2019-05-26 17:05:49 -07:00
hryx
99f0b28d39
var decl: mut_token, create child scope
2019-05-26 16:51:25 -07:00
hryx
fceedada5c
WIP translate var decl
2019-05-26 15:43:13 -07:00
Andrew Kelley
5a57610039
clean up code now that #769 is implemented
2019-05-14 19:23:31 -04:00
Andrew Kelley
10e9d47b49
stage2 translate-c: implement functions with no prototype
...
stage1 translate-c actually has this wrong. When exporting a function,
it's ok to use empty parameters. But for prototypes, "no prototype"
means that it has to be emitted as a function that accepts anything,
e.g. extern fn foo(...) void;
See #1964
2019-05-11 12:09:11 -04:00