diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2017-02-09 02:50:03 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2017-02-09 03:09:25 -0500 |
| commit | fc100d7b3b27bd514dca4e02c160e5b96d4da648 (patch) | |
| tree | b365fbdf02c7a35d81d9037a15e1e3917a6e77de /src/ir_print.cpp | |
| parent | 8a859afd580f438f549ee69a3e3487eb5d119fad (diff) | |
| download | zig-fc100d7b3b27bd514dca4e02c160e5b96d4da648.tar.gz zig-fc100d7b3b27bd514dca4e02c160e5b96d4da648.zip | |
lots of miscellaneous things all in one big commit
* add `@compileLog(...)` builtin function
- Helps debug code running at compile time
- See #240
* fix crash when there is an error on the start value of a slice
* add implicit cast from int and float types to int and float
literals if the value is known at compile time
* make array concatenation work with slices in addition to
arrays and c string literals
* fix compile error message for something not having field access
* fix crash when `@setDebugSafety()` was called from a
function being evaluated at compile-time
* fix compile-time evaluation of overflow math builtins.
* avoid debug safety panic handler in builtin.o and compiler_rt.o
since we use no debug safety in these modules anyway
* add compiler_rt functions for division on ARM
- Closes #254
* move default panic handler to std.debug so users can
call it manually
* std.io.printf supports a width in the format specifier
Diffstat (limited to 'src/ir_print.cpp')
| -rw-r--r-- | src/ir_print.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/ir_print.cpp b/src/ir_print.cpp index a378df04b5..3c9e53662e 100644 --- a/src/ir_print.cpp +++ b/src/ir_print.cpp @@ -532,6 +532,17 @@ static void ir_print_compile_err(IrPrint *irp, IrInstructionCompileErr *instruct fprintf(irp->f, ")"); } +static void ir_print_compile_log(IrPrint *irp, IrInstructionCompileLog *instruction) { + fprintf(irp->f, "@compileLog("); + for (size_t i = 0; i < instruction->msg_count; i += 1) { + if (i != 0) + fprintf(irp->f, ","); + IrInstruction *msg = instruction->msg_list[i]; + ir_print_other_instruction(irp, msg); + } + fprintf(irp->f, ")"); +} + static void ir_print_err_name(IrPrint *irp, IrInstructionErrName *instruction) { fprintf(irp->f, "@errorName("); ir_print_other_instruction(irp, instruction->value); @@ -990,6 +1001,9 @@ static void ir_print_instruction(IrPrint *irp, IrInstruction *instruction) { case IrInstructionIdCompileErr: ir_print_compile_err(irp, (IrInstructionCompileErr *)instruction); break; + case IrInstructionIdCompileLog: + ir_print_compile_log(irp, (IrInstructionCompileLog *)instruction); + break; case IrInstructionIdErrName: ir_print_err_name(irp, (IrInstructionErrName *)instruction); break; |
