diff --git a/build.zig b/build.zig index 77d40e5294..a9e9884717 100644 --- a/build.zig +++ b/build.zig @@ -489,6 +489,7 @@ pub fn build(b: *std.Build) !void { .skip_single_threaded = true, .skip_non_native = skip_non_native, .skip_libc = true, + .no_builtin = true, })); test_step.dependOn(tests.addModuleTests(b, .{ @@ -501,6 +502,7 @@ pub fn build(b: *std.Build) !void { .skip_single_threaded = true, .skip_non_native = skip_non_native, .skip_libc = true, + .no_builtin = true, })); test_step.dependOn(tests.addCompareOutputTests(b, test_filters, optimization_modes)); diff --git a/lib/std/Build/Step/Compile.zig b/lib/std/Build/Step/Compile.zig index 36856daf5f..d18d8de413 100644 --- a/lib/std/Build/Step/Compile.zig +++ b/lib/std/Build/Step/Compile.zig @@ -211,6 +211,8 @@ is_linking_libc: bool = false, /// Computed during make(). is_linking_libcpp: bool = false, +no_builtin: bool = false, + pub const ExpectedCompileErrors = union(enum) { contains: []const u8, exact: []const []const u8, @@ -1572,6 +1574,10 @@ fn make(step: *Step, prog_node: std.Progress.Node) !void { } } + if (compile.no_builtin) { + try zig_args.append("-fno-builtin"); + } + if (b.sysroot) |sysroot| { try zig_args.appendSlice(&[_][]const u8{ "--sysroot", sysroot }); } diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 0d8fed34ed..3e30a2eedf 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -3115,8 +3115,7 @@ pub const Object = struct { try variable_index.setInitializer(try o.lowerValue(decl_val), &o.builder); variable_index.setLinkage(.internal, &o.builder); - const llvm_miscompiles_const_anon = o.module.getTarget().isDarwin(); - if (!llvm_miscompiles_const_anon) variable_index.setMutability(.constant, &o.builder); + variable_index.setMutability(.constant, &o.builder); variable_index.setUnnamedAddr(.unnamed_addr, &o.builder); variable_index.setAlignment(alignment.toLlvm(), &o.builder); return variable_index; diff --git a/test/tests.zig b/test/tests.zig index c0ef4a536a..dd4d098a0f 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -984,6 +984,7 @@ const ModuleTestOptions = struct { skip_non_native: bool, skip_libc: bool, max_rss: usize = 0, + no_builtin: bool = false, }; pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step { @@ -1070,6 +1071,7 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step { .pic = test_target.pic, .strip = test_target.strip, }); + if (options.no_builtin) these_tests.no_builtin = true; const single_threaded_suffix = if (test_target.single_threaded == true) "-single" else ""; const backend_suffix = if (test_target.use_llvm == true) "-llvm"