Matthew Knight
c5198bd76f
added scoped typedef to translate-c
2020-05-02 20:22:43 -07:00
Andrew Kelley
92f3e9c92a
remove last use of share_with_child_process
2020-05-02 01:54:36 -04:00
Andrew Kelley
b70e6da914
back to stage2 tests passing
2020-05-01 06:47:56 -04:00
Andrew Kelley
8766821157
rework std.math.big.Int
...
Now there are 3 types:
* std.math.big.int.Const
- the memory is immutable, only stores limbs and is_positive
- all methods operating on constant data go here
* std.math.big.int.Mutable
- the memory is mutable, stores capacity in addition to limbs and
is_positive
- methods here have some Mutable parameters and some Const
parameters. These methods expect callers to pre-calculate the
amount of resources required, and asserts that the resources are
available.
* std.math.big.int.Managed
- the memory is mutable and additionally stores an allocator.
- methods here perform the resource calculations for the programmer.
- this is the high level abstraction from before
Each of these 3 types can be converted to the other ones.
You can see the use case for this in the self-hosted compiler, where we
only store limbs, and construct the big ints as needed.
This gets rid of the hack where the allocator was optional and the
notion of "fixed" versions of the struct. Such things are now modeled
with the `big.int.Const` type.
2020-05-01 06:47:56 -04:00
Andrew Kelley
1d202008d8
add ZIR transform test case
2020-05-01 06:47:20 -04:00
Andrew Kelley
751903ba8f
zir: add breakpoint() instruction and object file ability
2020-05-01 06:47:20 -04:00
Andrew Kelley
f89dbe6c4e
link: introduce the concept of output mode and link mode
2020-05-01 06:47:20 -04:00
Andrew Kelley
28729efe29
ZIR: implement return instruction
2020-05-01 06:47:20 -04:00
Andrew Kelley
6b0f7de247
ZIR: add cmp and condbr instructions
2020-05-01 06:47:20 -04:00
Andrew Kelley
fb67a7260d
link: recognize that Windows does not have POSIX fs modes
2020-05-01 06:47:20 -04:00
Andrew Kelley
2bae942800
add ZIR compare output test case to test suite
2020-05-01 06:47:20 -04:00
Ian Simonson
a2c3ebb756
Use transCreateNodeInfixOp instead of maybeSuppressResult
2020-04-30 19:10:10 +10:00
Ian Simonson
e6fa0beb33
Translate-C convert bools to int in complex expressions
...
Pre-requisite for having a test case for #5062
In complex C statements which are outside of macros,
it is valid C to perform e.g. a bitor between an
integer and a boolean `5 | (8 == 9)`
Currently this results in a zig error after translating
as `c_int | bool` is invalid Zig.
Detects if a sub-expression of a numeric operator is
boolean and if so converts it to int
2020-04-30 12:48:27 +10:00
Andrew Kelley
03dd1fca94
Merge pull request #5195 from tadeokondrak/opaquetype-to-type-opaque
...
@OpaqueType -> `@Type(.Opaque)
2020-04-28 16:21:07 -04:00
Tadeo Kondrak
83d2d7ab8a
Mangle field names with a local counter in records
...
See https://github.com/ifreund/river/issues/17 for an issue that occurs
because the field names are mangled globally. When using the generated
bindings, you have no choice but to use the unstable names or redeclare
the entire struct. This commit changes the behaviour to use a local
counter per record declaration, so the names are predictable each time.
2020-04-28 08:45:51 -06:00
Tadeo Kondrak
17e41f6cd3
@OpaqueType -> @Type(.Opaque)
2020-04-28 00:02:13 -06:00
Andrew Kelley
41e17106cd
zig fmt: still print the relative path
...
The previous commit made zig fmt print absolute paths; this commit keeps
the absolute path resolution but still prints the relative paths to
stdout.
2020-04-27 13:38:19 -04:00
Ryan Liptak
fdff381a56
fmt: Fix relative paths with . and .. on Windows
...
This is a band-aid fix due to NtCreateFile failing on paths with . or .. in them.
2020-04-27 13:35:59 -04:00
Andrew Kelley
c22b54c9d8
stage2 zir: remove dead code
...
this was part of the live coding stream and I forgot to delete it before
committing
2020-04-26 17:37:04 -04:00
Andrew Kelley
d44c9bdbd9
ir: elemptr and add instructions
2020-04-26 01:20:58 -04:00
Andrew Kelley
9ebf25d145
link: change default executable mode to 0o777
...
Jonathan S writes:
On common systems with a 022 umask, this will still result in a
file created with 755 permissions, but it works appropriately if the
system is configured more leniently. (As another data point, C's fopen
seems to open files with the 666 mode.)
2020-04-24 15:36:08 -04:00
Andrew Kelley
058937e44d
bug fixes to make it work
2020-04-24 02:09:30 -04:00
Andrew Kelley
229e99ca37
codegen: write the updated code size to PT_LOAD section header
2020-04-23 23:53:52 -04:00
Andrew Kelley
2d35f71fa9
codegen rdx set immediate
2020-04-23 20:30:20 -04:00
Andrew Kelley
757d13d784
codegen supports embedded-in-code constants
...
also coerce no longer requires a bitcast
2020-04-23 20:23:16 -04:00
Andrew Kelley
0ac502f372
codegen for setting rax and rdi registers
2020-04-23 19:40:17 -04:00
Andrew Kelley
63b54bcf51
codegen for inline assembly
2020-04-23 18:58:47 -04:00
Andrew Kelley
99ec614b71
codegen for const ints and string literals
2020-04-23 17:46:01 -04:00
Andrew Kelley
24a01eed90
basics of writing ELF and machine code generation
2020-04-23 16:41:20 -04:00
Andrew Kelley
a3dfe36ca1
zir-to-elf skeleton
2020-04-22 23:42:58 -04:00
Andrew Kelley
e8545db9d4
Merge pull request #5130 from ziglang/stage2-ir
...
beginnings of non-LLVM self-hosted backend
2020-04-22 14:42:46 -04:00
Andrew Kelley
1eda2ada9a
std.math.big.Int: don't rely on the allocator when printing
2020-04-22 03:49:50 -04:00
Andrew Kelley
d58233b361
ir: improve ZIR emission enough to emit hello world
2020-04-22 03:08:50 -04:00
Andrew Kelley
b1a86040dd
ir: emit zir for fntype
2020-04-22 00:26:37 -04:00
Andrew Kelley
993e654554
emit zir skeleton
2020-04-22 00:04:52 -04:00
Andrew Kelley
2e6ccec100
ir: analyze asm instruction
2020-04-21 22:19:32 -04:00
Andrew Kelley
8d3e4147d5
ir: analyze deref instruction
2020-04-21 21:33:55 -04:00
Andrew Kelley
2c11acf807
ir: analyze fieldptr instruction
2020-04-21 21:14:56 -04:00
Andrew Kelley
c12bc8652e
ir: analyze ptrtoint
2020-04-21 20:34:40 -04:00
Andrew Kelley
2cdbb5f472
ir: analyze int casting
2020-04-21 19:48:59 -04:00
Haze Booth
78e2a203e3
Remove std.lazyInit
2020-04-21 18:04:37 -04:00
Andrew Kelley
0746028a2a
ir: analyze int instruction
2020-04-21 17:54:00 -04:00
Andrew Kelley
69878207e7
ir: analyze `as` instruction
2020-04-21 17:33:41 -04:00
Andrew Kelley
25679b63eb
ir: analyze primitive instruction
2020-04-21 17:11:42 -04:00
Andrew Kelley
8671e8d6d4
ir: analyze fntype instruction
2020-04-21 17:06:09 -04:00
Andrew Kelley
22e7ca5613
ir: analysis of fn instruction
2020-04-21 16:06:15 -04:00
Andrew Kelley
9a2ea5ca42
ir: comptime coerceArrayPtrToSlice
2020-04-21 13:50:04 -04:00
Andrew Kelley
fb63ba2577
ir: type coercion skeleton
2020-04-21 13:24:25 -04:00
Andrew Kelley
8e0bcaca9b
ir: analyze str instruction
2020-04-21 01:20:01 -04:00
Andrew Kelley
4c7507cceb
ir: semantic analysis skeleton
2020-04-21 00:56:30 -04:00
Andrew Kelley
cc1c2bd568
simplify ZIR spec; separate parsing/rendering from analysis
2020-04-20 19:21:03 -04:00
Andrew Kelley
af4ccf34c1
ir: render keyword parameters
2020-04-19 23:59:00 -04:00
Andrew Kelley
f7786d0ca8
ir: render function body
2020-04-19 23:39:34 -04:00
Andrew Kelley
e74c5a7c24
ir: nice rendering of string literal constants
2020-04-19 20:44:18 -04:00
Andrew Kelley
ded6e0326d
ir: rendering skeleton
2020-04-19 20:04:11 -04:00
Andrew Kelley
1f3eeb5443
ir: parse type noreturn
2020-04-19 19:31:50 -04:00
Andrew Kelley
104ae419e4
ir: parse export instruction
2020-04-19 19:31:50 -04:00
Andrew Kelley
f020999ca3
ir: parse asm instructions
2020-04-19 19:31:50 -04:00
Andrew Kelley
82e294cf09
ir: parse deref instruction
2020-04-19 19:31:50 -04:00
Andrew Kelley
730dd887e4
ir: parse string literals as parameters
2020-04-19 19:31:50 -04:00
Andrew Kelley
bd37c8d8ed
ir: parse ptrtoint
2020-04-19 19:31:50 -04:00
Andrew Kelley
49e2f3ca36
ir: more foolproof way to organize instruction parsing
2020-04-19 19:31:50 -04:00
Andrew Kelley
4cb203db92
ir: parsing integer literals
2020-04-19 19:31:50 -04:00
Andrew Kelley
7127c07f68
ir: parse types
2020-04-19 19:31:50 -04:00
Andrew Kelley
59154a1c51
ir: parse fn body
2020-04-19 19:31:50 -04:00
Andrew Kelley
018daa028e
rework types and values data layout
2020-04-19 19:31:50 -04:00
Andrew Kelley
f92ccf365b
generic ir parsing framework
2020-04-19 19:31:50 -04:00
Andrew Kelley
bd4280decf
beginnings of zig ir parser
2020-04-19 19:31:50 -04:00
joachimschmidt557
3fd38429e4
Enable formatting in std.big.Int.format
2020-04-15 12:51:43 -04:00
Vexu
ca3bf6e6ad
translate-c cleanup and zig fmt
2020-04-15 15:15:32 +03:00
Vexu
a016fb8c62
translate-c: correct invalid shortcut
2020-04-15 15:14:10 +03:00
Lachlan Easton
0122f2cff6
Translate C: Redo Add comment containing c source location for failed decls.
2020-04-14 22:13:43 +10:00
xackus
dbc00e2424
ArrayList: remove old (before span) API
2020-04-11 20:40:34 -04:00
Andrew Kelley
3c34c313cf
revert Translate C: Add comment containing c source location for failed decls
...
This reverts 0db108101a
.
Unfortunately this caused a regression. Closes #5007 .
2020-04-11 17:56:48 -04:00
emekoi
de08d283da
fix compilation under mingw
2020-04-11 15:18:54 -05:00
Andrew Kelley
a6e288d5fe
Merge pull request #4711 from leroycep/feature-file-locks
...
Add lock option to File.OpenFlags and File.CreateFlags
2020-04-10 15:00:45 -04:00
Auguste Rame
df14578c9d
Merge branch 'master' into nameless-fields
2020-04-10 11:49:50 -04:00
Lachlan Easton
d7902707bc
Translate C: Allow casting literal ints to pointers
2020-04-08 14:11:01 -04:00
Vexu
7b5fb79b5b
Translate C: Put an alignCast in c style pointer casts to allow opaque types to cast properly in C macros
...
Translate C: add test case for aligning opaque types in pointer casts
2020-04-08 14:11:01 -04:00
SuperAuguste
882aa86843
more fixes
2020-04-07 15:08:46 -04:00
Vexu
adaf7ad672
Merge pull request #4684 from LakeByTheWoods/comment_failed_decls
...
Translate C: Add comment containing c source location for failed decls
2020-04-07 21:47:32 +03:00
SuperAuguste
f21ac0220a
msvc fix
2020-04-07 14:39:24 -04:00
SuperAuguste
9298d38cee
remove debug statement
2020-04-07 13:33:01 -04:00
SuperAuguste
94841d0292
Nameless struct field consistency
2020-04-07 13:26:17 -04:00
LeRoyce Pearson
798207ec80
Merge branch 'master' into feature-file-locks
2020-04-06 21:51:57 -06:00
Andrew Kelley
e4eb817f79
libc_installation.zig: don't special-case based on C ABI
...
Whether the C ABI is mingw-w64 or msvc, detection of native libc paths
should be the same. In the future we may want to allow passing a C ABI
parameter to detectNativeCPaths() but for now we have the same behavior
regardless.
2020-04-06 13:33:32 -04:00
Vexu
c5ced0d74a
Merge pull request #4939 from SuperAuguste/master
...
translate-c: Properly translate C multicharacter literals
2020-04-06 10:31:17 +03:00
SuperAuguste
6106cf4419
fixes
2020-04-05 19:06:43 -04:00
Vexu
6ef15fc8d0
Merge pull request #4901 from phase/feature/translate-c-remassign
...
translate-c: RemAssign and DivAssign
2020-04-05 21:05:18 +03:00
Jadon Fowler
ae376e0758
translate-c: remove unneeded semicolon
...
Signed-off-by: Jadon Fowler <j@jadon.io>
2020-04-05 10:44:42 -04:00
SuperAuguste
027e2a1673
fix multichar literals in translate_c
2020-04-04 17:56:25 -04:00
xackus
cd20e0cc67
rename mem.separate to mem.split
2020-04-04 17:37:51 -04:00
Andrew Kelley
e5d479b06e
detect an endless loop when trying to detect native libc installation
...
closes #4810
2020-04-04 15:03:22 -04:00
Andrew Kelley
52db13738b
zig cc looks for native include directories unless -nostdinc
...
closes #4938
2020-04-04 14:58:24 -04:00
Jadon Fowler
391ee996a5
translate-c: account for signedness when translating div & mod
...
Signed-off-by: Jadon Fowler <j@jadon.io>
2020-04-04 02:16:30 -04:00
Andrew Kelley
e89c42655c
Merge pull request #4868 from xackus/new-arraylist-api
...
new ArrayList API
2020-04-03 22:31:15 -04:00
LeRoyce Pearson
733f1c25bd
Fix compile errors in stage2
2020-04-02 23:39:25 -06:00
LeRoyce Pearson
f757f0ea59
Merge branch 'master' into feature-file-locks
2020-04-02 21:47:41 -06:00
LeRoyce Pearson
35c462caf0
Merge branch 'master' into feature-file-locks
2020-04-02 21:46:48 -06:00
Andrew Kelley
f8cc6a1917
zig cc: fix ambiguity with -MT
...
In an MSVC context, `-MT` means
"Use static run-time"
and it is a flag with no parameter.
On POSIX it means
"Specify name of main file output in depfile"
and it is "joined or separate".
The former was interfering with the latter. Now, the MT flag is required
to be specified with a `/` to disambiguate: `/MT`.
2020-04-02 21:15:36 -04:00
Andrew Kelley
c4b3c84b3f
zig cc: support -F and -framework
2020-04-02 15:59:48 -04:00
Andrew Kelley
e4edc6d118
zig cc: respect -MF -MV -MD options
...
Zig disables its caching and forwards these args when any are provided.
see #4784
2020-04-02 15:47:27 -04:00
xackus
7a28c644aa
new ArrayList API: fix everything else
2020-04-02 16:12:08 +02:00
Andrew Kelley
4848b28ec8
zig cc: detect -mcpu, -march, -mtune
...
However these are all treated like zig's -mcpu parameter.
See #4784
2020-04-01 18:06:04 -04:00
Rejean Loyer
2b6dfdd3d4
zig cc: add support for -L linker arguments
2020-04-01 17:21:11 -04:00
Andrew Kelley
783f73c7e3
zig cc properly handles -S flag and .ll, .bc extensions
2020-04-01 16:01:06 -04:00
Andrew Kelley
c211b8f91d
fix regressions from previous commit
2020-04-01 15:02:31 -04:00
Jadon Fowler
a255b0f842
translate-c: translate DivAssign & RemAssign
...
Closes #4790
Signed-off-by: Jadon Fowler <j@jadon.io>
2020-04-01 14:23:26 -04:00
Andrew Kelley
2e806682f4
(breaking) std.Buffer => std.ArrayListSentineled(u8, 0)
...
This new name (and the fact that it is a function returning a type) will
make it more clear which use cases are better suited for ArrayList and
which are better suited for ArrayListSentineled.
Also for consistency with ArrayList,
* `append` => `appendSlice`
* `appendByte` => `append`
Thanks daurnimator for pointing out the confusion of std.Buffer.
2020-04-01 13:30:07 -04:00
Andrew Kelley
553f0e0546
fixups and revert a few things
2020-04-01 11:56:39 -04:00
daurnimator
7eb938c909
Use length field as passed in stage2 libc_installation instead of relying on zero termination
2020-04-01 10:36:38 -04:00
daurnimator
e535057364
std: use std.ArrayList(u8).OutStream instead of std.Buffer.OutStream
2020-04-01 10:36:38 -04:00
daurnimator
3fb030e78a
std: use std.ArrayList(u8) instead of std.Buffer in src-self-hosted/translate_c.zig
2020-04-01 10:36:38 -04:00
daurnimator
3cf302a71d
Tidy up some mem.spanZ use-sites now that null is accepted
2020-04-01 01:50:34 +11:00
Andrew Kelley
839d85e440
fixes to 32-bit handling, to support 32-bit arm
2020-03-31 10:10:31 -04:00
Andrew Kelley
cfedd3aca2
revert detection of rtti and exceptions
...
This caused link errors in c++ code because it was not correct to pass
these flags to child codegens. And that was the only reason to detect
these flags. Otherwise we can safely rely on non-explicitly-detected
flag forwarding.
2020-03-30 17:42:30 -04:00
Andrew Kelley
9e7ae06249
std lib API deprecations for the upcoming 0.6.0 release
...
See #3811
2020-03-30 14:23:22 -04:00
Layne Gustafson
2a05ca1c94
Conv macro string concat to ++
2020-03-28 20:40:13 -04:00
LeRoyce Pearson
457f557c37
Merge branch 'master' into feature-file-locks
2020-03-28 17:24:19 -06:00
Ryan Liptak
cc7c670851
Sync clang_options_data.zig with update_clang_options
...
Some of the recent c++ related options were added to update_clang_options but didn't make it into clang_options_data.zig
2020-03-28 00:39:33 -07:00
Ryan Liptak
874b4618ca
zig cc: Add support for -z
...
This is only the first step; it makes zig cc recognize -z and append it to the linker args, but the linker arg parsing doesn't support -z yet so it will just give the warning 'unsupported linker arg: -z'
2020-03-28 00:35:54 -07:00
Ryan Liptak
b0b29b8a2f
zig cc: Add support for -Xlinker, --for-linker, --for-linker=
2020-03-27 23:32:01 -07:00
Andrew Kelley
107b5196f6
Merge pull request #4827 from ziglang/zig-cpp
...
support compiling and linking c++ code
2020-03-27 22:35:13 -04:00
Andrew Kelley
a258741084
initial support of response files
...
See #4833
It doesn't support comments or quotes yet.
2020-03-27 22:24:40 -04:00
Michael Dusan
33819ecfbc
windows: don't hard-code forward-slash paths
...
`zig targets` -> unable to list targets: BadPathName
2020-03-27 21:28:52 -04:00
LeRoyce Pearson
c7f4e68464
Merge branch 'master' into feature-file-locks
2020-03-27 11:32:33 -06:00
Andrew Kelley
f407109070
zig c++: get it working with musl and mingw-w64
2020-03-27 12:38:52 -04:00
Andrew Kelley
db17c0d88c
ability to compile c++ hello world with `zig c++`
...
closes #4786
2020-03-26 22:48:37 -04:00
Andrew Kelley
fae6cf0961
improved handling of native system directories
...
* `-isystem` instead of `-I` for system include directories
fixes a problem with native system directories interfering with zig's
bundled libc.
* separate Stage2Target.is_native into Stage2Target.is_native_os and
Stage2Target.is_native_cpu.
2020-03-25 20:34:15 -04:00
Michael Dusan
dd66fbb96a
Merge pull request #4811 from mikdusan/fix4634
...
self-hosted: use fs.selfExePathAlloc
2020-03-25 19:49:52 -04:00
Andrew Kelley
e3fec6cce9
zig cc: add detection for `-###`
...
it turns on --verbose-cc and --verbose-link
2020-03-25 19:32:12 -04:00
Michael Dusan
d554070de1
self-hosted: use fs.selfExePathAlloc
...
- add fs.selfExePathAlloc
- use fs.selfExePathAlloc instead of fs.selfExeDirPathAlloc
- remove redundant code from fs.selfExeDirPath
closes #4634
2020-03-25 18:40:28 -04:00
Andrew Kelley
6cbe589b51
zig cc: support -T linker script option
2020-03-25 12:05:48 -04:00
Andrew Kelley
93c7fa105f
Merge remote-tracking branch 'origin/llvm10'
...
LLVM 10 was released today
2020-03-24 09:57:09 -04:00
LeRoyce Pearson
113b217593
Merge branch 'master' into feature-file-locks
2020-03-23 21:39:16 -06:00
Andrew Kelley
13d04f9963
Merge pull request #4741 from momumi/master
...
allow `_` separators in number literals (stage 1)
2020-03-23 00:54:54 -04:00
Andrew Kelley
94f7c56001
riscv: add -mrelax arg for C to work around upstream issue
...
See #4485
2020-03-22 21:47:19 -04:00
Andrew Kelley
e5e5196d8e
Merge remote-tracking branch 'origin/master' into llvm10
2020-03-22 20:48:21 -04:00
momumi
2d18178c27
minor fixes and more tests for _ separators
...
* Make the tokenizer spit out an Invalid token on the first invalid
character found in the number literal.
* More parsing and tokenizer tests for number literals
* fix invalid switch statement in ir.zig
2020-03-23 09:21:34 +10:00
Andrew Kelley
23c263776c
Merge remote-tracking branch 'origin/master' into llvm10
2020-03-22 15:09:29 -04:00
momumi
8de45e5143
update parsing of int literals in self-hosted
...
* update std.math.big.Int.setString() to ignore underscores and make it
case insensitive
* fix issue in ir.zig with leading zeroes in integer literals
2020-03-22 13:59:14 +10:00
Andrew Kelley
2b65dc1032
zig cc: detect optimization and debug flags
2020-03-21 22:30:46 -04:00
Andrew Kelley
4b0ddb817b
zig cc: better support for the preprocessor option (-E)
2020-03-21 20:32:48 -04:00
Michael Dusan
28ad78cb7f
rename "passthrough" → "driver_punt"
...
- punt when `-E` is supplied
- punt when `-S` is supplied
2020-03-21 16:53:59 -04:00
Andrew Kelley
0eee98edc1
zig cc improvements
...
* The generated options data file is sorted now in a way that
makes sure longer prefixes are first. This prevents collisions
with some parameters.
* Add support for `-fPIC`, `-fno-PIC`, `-nostdlib`, `-shared`,
`-rdynamic`, `-Wl,-soname`, `-Wl,-rpath`
* Better support for `-o`.
* Disable generating h files
* Shared library support.
* Better positional argument support.
2020-03-21 15:40:49 -04:00
Andrew Kelley
a4eaeee720
ability to use `zig cc` as a drop-in C compiler
...
The basics are working
2020-03-21 15:39:39 -04:00
Andrew Kelley
7438d0fc31
glibc: include ld symbols and proper soname for ld
2020-03-20 14:39:05 -04:00
Andrew Kelley
53b5aa812b
Merge remote-tracking branch 'origin/master' into llvm10
2020-03-19 22:19:24 -04:00
Andrew Kelley
8ea0a00f40
improve std lib code for the new semantics
2020-03-19 09:53:54 -04:00
Andrew Kelley
0707be8de8
fixes in semantic analysis needed to support this feature
2020-03-19 09:53:54 -04:00