| author | |
| committer | |
| log | 88724217dd1e1fe4b20fed27c8a662b66df55088 |
| tree | b8f4302f43bfc367736abc8be5820e9e084318fd |
| parent | b9360640cefd1aa30dedf71a0c6b7bddc51a6ae3 |
| parent | 1bc140964fb394819908d267561103b6c7e5036c |
| signature |
Added ReleaseSmall mode.9 files changed, 52 insertions(+), 15 deletions(-)
doc/docgen.zig+19| ... | @@ -749,6 +749,10 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var | ... | @@ -749,6 +749,10 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var |
| 749 | try build_args.append("--release-fast"); | 749 | try build_args.append("--release-fast"); |
| 750 | try out.print(" --release-fast"); | 750 | try out.print(" --release-fast"); |
| 751 | }, | 751 | }, |
| 752 | builtin.Mode.ReleaseSmall => { | ||
| 753 | try build_args.append("--release-small"); | ||
| 754 | try out.print(" --release-small"); | ||
| 755 | }, | ||
| 752 | } | 756 | } |
| 753 | for (code.link_objects) |link_object| { | 757 | for (code.link_objects) |link_object| { |
| 754 | const name_with_ext = try std.fmt.allocPrint(allocator, "{}{}", link_object, obj_ext); | 758 | const name_with_ext = try std.fmt.allocPrint(allocator, "{}{}", link_object, obj_ext); |
| ... | @@ -810,6 +814,10 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var | ... | @@ -810,6 +814,10 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var |
| 810 | try test_args.append("--release-fast"); | 814 | try test_args.append("--release-fast"); |
| 811 | try out.print(" --release-fast"); | 815 | try out.print(" --release-fast"); |
| 812 | }, | 816 | }, |
| 817 | builtin.Mode.ReleaseSmall => { | ||
| 818 | try test_args.append("--release-small"); | ||
| 819 | try out.print(" --release-small"); | ||
| 820 | }, | ||
| 813 | } | 821 | } |
| 814 | if (code.target_windows) { | 822 | if (code.target_windows) { |
| 815 | try test_args.appendSlice([][]const u8{ | 823 | try test_args.appendSlice([][]const u8{ |
| ... | @@ -840,6 +848,10 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var | ... | @@ -840,6 +848,10 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var |
| 840 | try test_args.append("--release-fast"); | 848 | try test_args.append("--release-fast"); |
| 841 | try out.print(" --release-fast"); | 849 | try out.print(" --release-fast"); |
| 842 | }, | 850 | }, |
| 851 | builtin.Mode.ReleaseSmall => { | ||
| 852 | try test_args.append("--release-small"); | ||
| 853 | try out.print(" --release-small"); | ||
| 854 | }, | ||
| 843 | } | 855 | } |
| 844 | const result = try os.ChildProcess.exec(allocator, test_args.toSliceConst(), null, null, max_doc_file_size); | 856 | const result = try os.ChildProcess.exec(allocator, test_args.toSliceConst(), null, null, max_doc_file_size); |
| 845 | switch (result.term) { | 857 | switch (result.term) { |
| ... | @@ -874,6 +886,7 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var | ... | @@ -874,6 +886,7 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var |
| 874 | builtin.Mode.Debug => {}, | 886 | builtin.Mode.Debug => {}, |
| 875 | builtin.Mode.ReleaseSafe => try test_args.append("--release-safe"), | 887 | builtin.Mode.ReleaseSafe => try test_args.append("--release-safe"), |
| 876 | builtin.Mode.ReleaseFast => try test_args.append("--release-fast"), | 888 | builtin.Mode.ReleaseFast => try test_args.append("--release-fast"), |
| 889 | builtin.Mode.ReleaseSmall => try test_args.append("--release-small"), | ||
| 877 | } | 890 | } |
| 878 | 891 | ||
| 879 | const result = try os.ChildProcess.exec(allocator, test_args.toSliceConst(), null, null, max_doc_file_size); | 892 | const result = try os.ChildProcess.exec(allocator, test_args.toSliceConst(), null, null, max_doc_file_size); |
| ... | @@ -927,6 +940,12 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var | ... | @@ -927,6 +940,12 @@ fn genHtml(allocator: &mem.Allocator, tokenizer: &Tokenizer, toc: &Toc, out: var |
| 927 | try out.print(" --release-fast"); | 940 | try out.print(" --release-fast"); |
| 928 | } | 941 | } |
| 929 | }, | 942 | }, |
| 943 | builtin.Mode.ReleaseSmall => { | ||
| 944 | try build_args.append("--release-small"); | ||
| 945 | if (!code.is_inline) { | ||
| 946 | try out.print(" --release-small"); | ||
| 947 | } | ||
| 948 | }, | ||
| 930 | } | 949 | } |
| 931 | 950 | ||
| 932 | if (maybe_error_match) |error_match| { | 951 | if (maybe_error_match) |error_match| { |
src/all_types.hpp+1| ... | @@ -1457,6 +1457,7 @@ enum BuildMode { | ... | @@ -1457,6 +1457,7 @@ enum BuildMode { |
| 1457 | BuildModeDebug, | 1457 | BuildModeDebug, |
| 1458 | BuildModeFastRelease, | 1458 | BuildModeFastRelease, |
| 1459 | BuildModeSafeRelease, | 1459 | BuildModeSafeRelease, |
| 1460 | BuildModeSmallRelease, | ||
| 1460 | }; | 1461 | }; |
| 1461 | 1462 | ||
| 1462 | enum EmitFileType { | 1463 | enum EmitFileType { |
src/codegen.cpp+12-6| ... | @@ -512,7 +512,9 @@ static LLVMValueRef fn_llvm_value(CodeGen *g, FnTableEntry *fn_table_entry) { | ... | @@ -512,7 +512,9 @@ static LLVMValueRef fn_llvm_value(CodeGen *g, FnTableEntry *fn_table_entry) { |
| 512 | } | 512 | } |
| 513 | 513 | ||
| 514 | if (fn_table_entry->body_node != nullptr) { | 514 | if (fn_table_entry->body_node != nullptr) { |
| 515 | bool want_fn_safety = g->build_mode != BuildModeFastRelease && !fn_table_entry->def_scope->safety_off; | 515 | bool want_fn_safety = g->build_mode != BuildModeFastRelease && |
| 516 | g->build_mode != BuildModeSmallRelease && | ||
| 517 | !fn_table_entry->def_scope->safety_off; | ||
| 516 | if (want_fn_safety) { | 518 | if (want_fn_safety) { |
| 517 | if (g->libc_link_lib != nullptr) { | 519 | if (g->libc_link_lib != nullptr) { |
| 518 | addLLVMFnAttr(fn_table_entry->llvm_value, "sspstrong"); | 520 | addLLVMFnAttr(fn_table_entry->llvm_value, "sspstrong"); |
| ... | @@ -817,7 +819,7 @@ static bool ir_want_fast_math(CodeGen *g, IrInstruction *instruction) { | ... | @@ -817,7 +819,7 @@ static bool ir_want_fast_math(CodeGen *g, IrInstruction *instruction) { |
| 817 | } | 819 | } |
| 818 | 820 | ||
| 819 | static bool ir_want_runtime_safety(CodeGen *g, IrInstruction *instruction) { | 821 | static bool ir_want_runtime_safety(CodeGen *g, IrInstruction *instruction) { |
| 820 | if (g->build_mode == BuildModeFastRelease) | 822 | if (g->build_mode == BuildModeFastRelease || g->build_mode == BuildModeSmallRelease) |
| 821 | return false; | 823 | return false; |
| 822 | 824 | ||
| 823 | // TODO memoize | 825 | // TODO memoize |
| ... | @@ -5747,10 +5749,12 @@ static void do_code_gen(CodeGen *g) { | ... | @@ -5747,10 +5749,12 @@ static void do_code_gen(CodeGen *g) { |
| 5747 | os_path_join(g->cache_dir, o_basename, output_path); | 5749 | os_path_join(g->cache_dir, o_basename, output_path); |
| 5748 | ensure_cache_dir(g); | 5750 | ensure_cache_dir(g); |
| 5749 | 5751 | ||
| 5752 | bool is_small = g->build_mode == BuildModeSmallRelease; | ||
| 5753 | |||
| 5750 | switch (g->emit_file_type) { | 5754 | switch (g->emit_file_type) { |
| 5751 | case EmitFileTypeBinary: | 5755 | case EmitFileTypeBinary: |
| 5752 | if (ZigLLVMTargetMachineEmitToFile(g->target_machine, g->module, buf_ptr(output_path), | 5756 | if (ZigLLVMTargetMachineEmitToFile(g->target_machine, g->module, buf_ptr(output_path), |
| 5753 | ZigLLVM_EmitBinary, &err_msg, g->build_mode == BuildModeDebug)) | 5757 | ZigLLVM_EmitBinary, &err_msg, g->build_mode == BuildModeDebug, is_small)) |
| 5754 | { | 5758 | { |
| 5755 | zig_panic("unable to write object file %s: %s", buf_ptr(output_path), err_msg); | 5759 | zig_panic("unable to write object file %s: %s", buf_ptr(output_path), err_msg); |
| 5756 | } | 5760 | } |
| ... | @@ -5760,7 +5764,7 @@ static void do_code_gen(CodeGen *g) { | ... | @@ -5760,7 +5764,7 @@ static void do_code_gen(CodeGen *g) { |
| 5760 | 5764 | ||
| 5761 | case EmitFileTypeAssembly: | 5765 | case EmitFileTypeAssembly: |
| 5762 | if (ZigLLVMTargetMachineEmitToFile(g->target_machine, g->module, buf_ptr(output_path), | 5766 | if (ZigLLVMTargetMachineEmitToFile(g->target_machine, g->module, buf_ptr(output_path), |
| 5763 | ZigLLVM_EmitAssembly, &err_msg, g->build_mode == BuildModeDebug)) | 5767 | ZigLLVM_EmitAssembly, &err_msg, g->build_mode == BuildModeDebug, is_small)) |
| 5764 | { | 5768 | { |
| 5765 | zig_panic("unable to write assembly file %s: %s", buf_ptr(output_path), err_msg); | 5769 | zig_panic("unable to write assembly file %s: %s", buf_ptr(output_path), err_msg); |
| 5766 | } | 5770 | } |
| ... | @@ -5769,7 +5773,7 @@ static void do_code_gen(CodeGen *g) { | ... | @@ -5769,7 +5773,7 @@ static void do_code_gen(CodeGen *g) { |
| 5769 | 5773 | ||
| 5770 | case EmitFileTypeLLVMIr: | 5774 | case EmitFileTypeLLVMIr: |
| 5771 | if (ZigLLVMTargetMachineEmitToFile(g->target_machine, g->module, buf_ptr(output_path), | 5775 | if (ZigLLVMTargetMachineEmitToFile(g->target_machine, g->module, buf_ptr(output_path), |
| 5772 | ZigLLVM_EmitLLVMIr, &err_msg, g->build_mode == BuildModeDebug)) | 5776 | ZigLLVM_EmitLLVMIr, &err_msg, g->build_mode == BuildModeDebug, is_small)) |
| 5773 | { | 5777 | { |
| 5774 | zig_panic("unable to write llvm-ir file %s: %s", buf_ptr(output_path), err_msg); | 5778 | zig_panic("unable to write llvm-ir file %s: %s", buf_ptr(output_path), err_msg); |
| 5775 | } | 5779 | } |
| ... | @@ -6160,6 +6164,7 @@ static const char *build_mode_to_str(BuildMode build_mode) { | ... | @@ -6160,6 +6164,7 @@ static const char *build_mode_to_str(BuildMode build_mode) { |
| 6160 | case BuildModeDebug: return "Mode.Debug"; | 6164 | case BuildModeDebug: return "Mode.Debug"; |
| 6161 | case BuildModeSafeRelease: return "Mode.ReleaseSafe"; | 6165 | case BuildModeSafeRelease: return "Mode.ReleaseSafe"; |
| 6162 | case BuildModeFastRelease: return "Mode.ReleaseFast"; | 6166 | case BuildModeFastRelease: return "Mode.ReleaseFast"; |
| 6167 | case BuildModeSmallRelease: return "Mode.ReleaseSmall"; | ||
| 6163 | } | 6168 | } |
| 6164 | zig_unreachable(); | 6169 | zig_unreachable(); |
| 6165 | } | 6170 | } |
| ... | @@ -6300,6 +6305,7 @@ static void define_builtin_compile_vars(CodeGen *g) { | ... | @@ -6300,6 +6305,7 @@ static void define_builtin_compile_vars(CodeGen *g) { |
| 6300 | " Debug,\n" | 6305 | " Debug,\n" |
| 6301 | " ReleaseSafe,\n" | 6306 | " ReleaseSafe,\n" |
| 6302 | " ReleaseFast,\n" | 6307 | " ReleaseFast,\n" |
| 6308 | " ReleaseSmall,\n" | ||
| 6303 | "};\n\n"); | 6309 | "};\n\n"); |
| 6304 | } | 6310 | } |
| 6305 | { | 6311 | { |
| ... | @@ -6471,7 +6477,7 @@ static void init(CodeGen *g) { | ... | @@ -6471,7 +6477,7 @@ static void init(CodeGen *g) { |
| 6471 | } | 6477 | } |
| 6472 | } | 6478 | } |
| 6473 | 6479 | ||
| 6474 | g->have_err_ret_tracing = g->build_mode != BuildModeFastRelease; | 6480 | g->have_err_ret_tracing = g->build_mode != BuildModeFastRelease && g->build_mode != BuildModeSmallRelease; |
| 6475 | 6481 | ||
| 6476 | define_builtin_fns(g); | 6482 | define_builtin_fns(g); |
| 6477 | define_builtin_compile_vars(g); | 6483 | define_builtin_compile_vars(g); |
src/main.cpp+3| ... | @@ -43,6 +43,7 @@ static int usage(const char *arg0) { | ... | @@ -43,6 +43,7 @@ static int usage(const char *arg0) { |
| 43 | " --pkg-end pop current pkg\n" | 43 | " --pkg-end pop current pkg\n" |
| 44 | " --release-fast build with optimizations on and safety off\n" | 44 | " --release-fast build with optimizations on and safety off\n" |
| 45 | " --release-safe build with optimizations on and safety on\n" | 45 | " --release-safe build with optimizations on and safety on\n" |
| 46 | " --release-small build with size optimizations on and safety off\n" | ||
| 46 | " --static output will be statically linked\n" | 47 | " --static output will be statically linked\n" |
| 47 | " --strip exclude debug symbols\n" | 48 | " --strip exclude debug symbols\n" |
| 48 | " --target-arch [name] specify target architecture\n" | 49 | " --target-arch [name] specify target architecture\n" |
| ... | @@ -482,6 +483,8 @@ int main(int argc, char **argv) { | ... | @@ -482,6 +483,8 @@ int main(int argc, char **argv) { |
| 482 | build_mode = BuildModeFastRelease; | 483 | build_mode = BuildModeFastRelease; |
| 483 | } else if (strcmp(arg, "--release-safe") == 0) { | 484 | } else if (strcmp(arg, "--release-safe") == 0) { |
| 484 | build_mode = BuildModeSafeRelease; | 485 | build_mode = BuildModeSafeRelease; |
| 486 | } else if (strcmp(arg, "--release-small") == 0) { | ||
| 487 | build_mode = BuildModeSmallRelease; | ||
| 485 | } else if (strcmp(arg, "--strip") == 0) { | 488 | } else if (strcmp(arg, "--strip") == 0) { |
| 486 | strip = true; | 489 | strip = true; |
| 487 | } else if (strcmp(arg, "--static") == 0) { | 490 | } else if (strcmp(arg, "--static") == 0) { |
src/zig_llvm.cpp+2-2| ... | @@ -81,7 +81,7 @@ static const bool assertions_on = false; | ... | @@ -81,7 +81,7 @@ static const bool assertions_on = false; |
| 81 | #endif | 81 | #endif |
| 82 | 82 | ||
| 83 | bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref, | 83 | bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref, |
| 84 | const char *filename, ZigLLVM_EmitOutputType output_type, char **error_message, bool is_debug) | 84 | const char *filename, ZigLLVM_EmitOutputType output_type, char **error_message, bool is_debug, bool is_small) |
| 85 | { | 85 | { |
| 86 | std::error_code EC; | 86 | std::error_code EC; |
| 87 | raw_fd_ostream dest(filename, EC, sys::fs::F_None); | 87 | raw_fd_ostream dest(filename, EC, sys::fs::F_None); |
| ... | @@ -100,7 +100,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM | ... | @@ -100,7 +100,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM |
| 100 | return true; | 100 | return true; |
| 101 | } | 101 | } |
| 102 | PMBuilder->OptLevel = target_machine->getOptLevel(); | 102 | PMBuilder->OptLevel = target_machine->getOptLevel(); |
| 103 | PMBuilder->SizeLevel = 0; | 103 | PMBuilder->SizeLevel = is_small ? 2 : 0; |
| 104 | 104 | ||
| 105 | PMBuilder->DisableTailCalls = is_debug; | 105 | PMBuilder->DisableTailCalls = is_debug; |
| 106 | PMBuilder->DisableUnitAtATime = is_debug; | 106 | PMBuilder->DisableUnitAtATime = is_debug; |
src/zig_llvm.h+1-1| ... | @@ -52,7 +52,7 @@ enum ZigLLVM_EmitOutputType { | ... | @@ -52,7 +52,7 @@ enum ZigLLVM_EmitOutputType { |
| 52 | }; | 52 | }; |
| 53 | 53 | ||
| 54 | ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref, | 54 | ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref, |
| 55 | const char *filename, enum ZigLLVM_EmitOutputType output_type, char **error_message, bool is_debug); | 55 | const char *filename, enum ZigLLVM_EmitOutputType output_type, char **error_message, bool is_debug, bool is_small); |
| 56 | 56 | ||
| 57 | ZIG_EXTERN_C LLVMTypeRef ZigLLVMTokenTypeInContext(LLVMContextRef context_ref); | 57 | ZIG_EXTERN_C LLVMTypeRef ZigLLVMTokenTypeInContext(LLVMContextRef context_ref); |
| 58 | 58 |
std/build.zig+10-5| ... | @@ -426,15 +426,18 @@ pub const Builder = struct { | ... | @@ -426,15 +426,18 @@ pub const Builder = struct { |
| 426 | 426 | ||
| 427 | const release_safe = self.option(bool, "release-safe", "optimizations on and safety on") ?? false; | 427 | const release_safe = self.option(bool, "release-safe", "optimizations on and safety on") ?? false; |
| 428 | const release_fast = self.option(bool, "release-fast", "optimizations on and safety off") ?? false; | 428 | const release_fast = self.option(bool, "release-fast", "optimizations on and safety off") ?? false; |
| 429 | const release_small = self.option(bool, "release-small", "size optimizations on and safety off") ?? false; | ||
| 429 | 430 | ||
| 430 | const mode = if (release_safe and !release_fast) | 431 | const mode = if (release_safe and !release_fast and !release_small) |
| 431 | builtin.Mode.ReleaseSafe | 432 | builtin.Mode.ReleaseSafe |
| 432 | else if (release_fast and !release_safe) | 433 | else if (release_fast and !release_safe and !release_small) |
| 433 | builtin.Mode.ReleaseFast | 434 | builtin.Mode.ReleaseFast |
| 434 | else if (!release_fast and !release_safe) | 435 | else if (release_small and !release_fast and !release_safe) |
| 436 | builtin.Mode.ReleaseSmall | ||
| 437 | else if (!release_fast and !release_safe and !release_small) | ||
| 435 | builtin.Mode.Debug | 438 | builtin.Mode.Debug |
| 436 | else x: { | 439 | else x: { |
| 437 | warn("Both -Drelease-safe and -Drelease-fast specified"); | 440 | warn("Multiple release modes (of -Drelease-safe, -Drelease-fast and -Drelease-small)"); |
| 438 | self.markInvalidUserInput(); | 441 | self.markInvalidUserInput(); |
| 439 | break :x builtin.Mode.Debug; | 442 | break :x builtin.Mode.Debug; |
| 440 | }; | 443 | }; |
| ... | @@ -1229,6 +1232,7 @@ pub const LibExeObjStep = struct { | ... | @@ -1229,6 +1232,7 @@ pub const LibExeObjStep = struct { |
| 1229 | builtin.Mode.Debug => {}, | 1232 | builtin.Mode.Debug => {}, |
| 1230 | builtin.Mode.ReleaseSafe => zig_args.append("--release-safe") catch unreachable, | 1233 | builtin.Mode.ReleaseSafe => zig_args.append("--release-safe") catch unreachable, |
| 1231 | builtin.Mode.ReleaseFast => zig_args.append("--release-fast") catch unreachable, | 1234 | builtin.Mode.ReleaseFast => zig_args.append("--release-fast") catch unreachable, |
| 1235 | builtin.Mode.ReleaseSmall => zig_args.append("--release-small") catch unreachable, | ||
| 1232 | } | 1236 | } |
| 1233 | 1237 | ||
| 1234 | zig_args.append("--cache-dir") catch unreachable; | 1238 | zig_args.append("--cache-dir") catch unreachable; |
| ... | @@ -1369,7 +1373,7 @@ pub const LibExeObjStep = struct { | ... | @@ -1369,7 +1373,7 @@ pub const LibExeObjStep = struct { |
| 1369 | args.append("ssp-buffer-size=4") catch unreachable; | 1373 | args.append("ssp-buffer-size=4") catch unreachable; |
| 1370 | } | 1374 | } |
| 1371 | }, | 1375 | }, |
| 1372 | builtin.Mode.ReleaseFast => { | 1376 | builtin.Mode.ReleaseFast, builtin.Mode.ReleaseSmall => { |
| 1373 | args.append("-O2") catch unreachable; | 1377 | args.append("-O2") catch unreachable; |
| 1374 | args.append("-fno-stack-protector") catch unreachable; | 1378 | args.append("-fno-stack-protector") catch unreachable; |
| 1375 | }, | 1379 | }, |
| ... | @@ -1706,6 +1710,7 @@ pub const TestStep = struct { | ... | @@ -1706,6 +1710,7 @@ pub const TestStep = struct { |
| 1706 | builtin.Mode.Debug => {}, | 1710 | builtin.Mode.Debug => {}, |
| 1707 | builtin.Mode.ReleaseSafe => try zig_args.append("--release-safe"), | 1711 | builtin.Mode.ReleaseSafe => try zig_args.append("--release-safe"), |
| 1708 | builtin.Mode.ReleaseFast => try zig_args.append("--release-fast"), | 1712 | builtin.Mode.ReleaseFast => try zig_args.append("--release-fast"), |
| 1713 | builtin.Mode.ReleaseSmall => try zig_args.append("--release-small"), | ||
| 1709 | } | 1714 | } |
| 1710 | 1715 | ||
| 1711 | switch (self.target) { | 1716 | switch (self.target) { |
std/special/builtin.zig+3-1| ... | @@ -54,7 +54,9 @@ export fn memmove(dest: ?&u8, src: ?&const u8, n: usize) ?&u8 { | ... | @@ -54,7 +54,9 @@ export fn memmove(dest: ?&u8, src: ?&const u8, n: usize) ?&u8 { |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | comptime { | 56 | comptime { |
| 57 | if (builtin.mode != builtin.Mode.ReleaseFast and builtin.os != builtin.Os.windows) { | 57 | if (builtin.mode != builtin.Mode.ReleaseFast and |
| 58 | builtin.mode != builtin.Mode.ReleaseSmall and | ||
| 59 | builtin.os != builtin.Os.windows) { | ||
| 58 | @export("__stack_chk_fail", __stack_chk_fail, builtin.GlobalLinkage.Strong); | 60 | @export("__stack_chk_fail", __stack_chk_fail, builtin.GlobalLinkage.Strong); |
| 59 | } | 61 | } |
| 60 | if (builtin.os == builtin.Os.linux and builtin.arch == builtin.Arch.x86_64) { | 62 | if (builtin.os == builtin.Os.linux and builtin.arch == builtin.Arch.x86_64) { |
test/tests.zig+1| ... | @@ -583,6 +583,7 @@ pub const CompileErrorContext = struct { | ... | @@ -583,6 +583,7 @@ pub const CompileErrorContext = struct { |
| 583 | Mode.Debug => {}, | 583 | Mode.Debug => {}, |
| 584 | Mode.ReleaseSafe => zig_args.append("--release-safe") catch unreachable, | 584 | Mode.ReleaseSafe => zig_args.append("--release-safe") catch unreachable, |
| 585 | Mode.ReleaseFast => zig_args.append("--release-fast") catch unreachable, | 585 | Mode.ReleaseFast => zig_args.append("--release-fast") catch unreachable, |
| 586 | Mode.ReleaseSmall => zig_args.append("--release-small") catch unreachable, | ||
| 586 | } | 587 | } |
| 587 | 588 | ||
| 588 | warn("Test {}/{} {}...", self.test_index+1, self.context.test_index, self.name); | 589 | warn("Test {}/{} {}...", self.test_index+1, self.context.test_index, self.name); |