Commit Graph

29 Commits

Author SHA1 Message Date
Andrew Kelley 133da8692e stage2: rework Type Payload layout
Add `Type.castTag` and note that it is preferable to call than
`Type.cast`. This matches other abstractions in the codebase.

Added a convenience function `Type.Tag.create` which really cleans up
the callsites of creating `Type` objects.

`Type` payloads can now share types. This is in preparation for another
improvement that I want to do.
2020-12-30 21:41:02 -08:00
Andrew Kelley d18b6785bb stage2: C backend improvements
* Module: improve doc comments
 * C backend: improve const-correctness
 * C backend: introduce renderTypeAndName
 * C backend: put `static` on functions when appropriate
 * C backend: fix not handling errors in genBinOp
 * C backend: handle more IR instructions
   - alloc, store, boolean comparisons, ret_ptr
 * C backend: call instruction properly stores its result
 * test harness: ensure execution tests have empty stderr
2020-12-29 17:56:30 -07:00
Andrew Kelley 87c6341b61 stage2: add extern functions
and improve the C backend enough to support Hello World (almost)
2020-12-28 17:15:29 -07:00
Andrew Kelley f75d4cbe56 Revert "stage2: add compile log statement (#7191)"
The addition of `addDeclErr` introduced a memory leak at every call
site, and I also would like to push back on having more than 1
compilation error per `Decl`.

This reverts commit 1634d45f1d.
2020-12-28 11:24:53 -07:00
Veikka Tuominen 641bf4c46e Merge pull request #7552 from Vexu/stage2-continue
stage2 continue
2020-12-26 12:26:16 +02:00
g-w1 1634d45f1d stage2: add compile log statement (#7191) 2020-12-26 02:40:49 +02:00
Veikka Tuominen a50759325c stage2: add error for unused labels 2020-12-26 02:36:12 +02:00
Veikka Tuominen 40aad4f47e stage2: break and continue out of loops 2020-12-26 02:26:53 +02:00
Andrew Kelley 2ed1ed9b32 stage2: introduce Module.failed_root_source_file
Use case:

zig build-exe non_existent_file.zig

Previous behavior:

error.FileNotFound, followed by an error return trace

Behavior after this commit:

error: unable to read non_existent_file.zig: FileNotFound
(end of stderr, exit code 1)

This turns AllErrors.Message into a tagged union which now has the
capability to represent both "plain" errors as well as source-based
errors (with file, line, column, byte offset). The "no entry point found"
error has moved to be a plain error message.
2020-12-04 17:21:55 -07:00
Tadeo Kondrak 25ec2dbc1e Add builtin.Signedness, use it instead of is_signed 2020-11-19 18:59:21 +02:00
Vexu 769d5a9c43 stage2: switch comptime execution 2020-10-30 15:58:13 +02:00
Vexu 7db17a2d89 stage2: redesign switchbr
Switchbr now only  handles single item prongs.
Ranges and multi item prongs are checked with
condbrs after the switchbr.
2020-10-30 15:58:12 +02:00
Vexu 95467f3249 stage2: dump generated zir with --verbose-ir 2020-10-30 15:58:12 +02:00
Vexu 2020ca640e stage2: switch emit zir 2020-10-30 15:58:12 +02:00
Vexu a1d7f0053d stage2: support imports inside packages 2020-10-30 15:58:11 +02:00
Vexu 8421b8a898 stage2: detect import outside file path 2020-10-30 15:58:11 +02:00
Andrew Kelley 245d98d32d Merge pull request #6291 from pixelherodev/cbe_arithmetic
CBE: addition and subtraction
2020-10-17 01:00:38 -04:00
Jakub Konka b5b25d38a8 Fix improper reuse of global symbols in MachO
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-10-07 20:34:40 +02:00
Noam Preil 7d69e1d84e Rename variables in resolvePeerTypes for clarity 2020-10-07 02:36:04 -04:00
Noam Preil de093879cc Fix peer type resolution 2020-10-07 02:31:47 -04:00
Noam Preil a2e1639d6d Peer type resolution: comptime_int decay to other int 2020-10-06 15:09:57 -04:00
Noam Preil 9979719a9d Stage2 peer type resolution: comptime_int + other_int_type 2020-10-06 15:09:56 -04:00
Vexu 6d3858dc8a stage2: use directory handles for imports 2020-09-30 18:03:10 +03:00
Vexu e246fe0f5b stage2: detect changes in imported files 2020-09-30 17:00:55 +03:00
Vexu 7d910b024b stage2: very basic imports 2020-09-30 16:59:08 +03:00
Vexu 20ae15917c stage2: add import builtin stub 2020-09-30 16:56:45 +03:00
Andrew Kelley 412a2f966e store stage1 flags in a trailing byte in the hash id symlink
When we get a cache hit for a stage1 compilation, we need to know about
some of the flags such as have_winmain or have_dllmain to know which
subsystem to infer during linking.

To do this, we append a hex-encoded byte into the intentionally-dangling
symlink which contains the cache hash digest rather than a filename. The
hex-encoded byte contains the flags we need to infer the subsystem
during linking.
2020-09-28 15:42:09 -07:00
Andrew Kelley 91a73a177b stage2: building mingw-w64 and COFF LDD linking
still TODO is the task of creating import .lib files for DLLs on the fly
both for -lfoo and for e.g. `extern "kernel32"`
2020-09-28 00:06:06 -07:00
Andrew Kelley 528832bd3a rename src-self-hosted/ to src/ 2020-09-21 18:38:55 -07:00