authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-05 15:24:25+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-02-23 04:08:58+01:00
loge11ac026623f8d0f4895cddd6a9bf3c03a866c6d
tree888c6b88f61d972ef89b898811dcef0b9e83bde4
parent6ba785584a163c5ba5b6f0c6fea65be645e157b4
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

cbe: Implement support for -fno-builtin and @disableIntrinsics().


2 files changed, 17 insertions(+), 2 deletions(-)

lib/zig.h+6
...@@ -223,6 +223,12 @@...@@ -223,6 +223,12 @@
223#define zig_restrict223#define zig_restrict
224#endif224#endif
225225
226#if zig_has_attribute(no_builtin)
227#define zig_no_builtin __attribute__((no_builtin))
228#else
229#define zig_no_builtin
230#endif
231
226#if zig_has_attribute(aligned) || defined(zig_tinyc)232#if zig_has_attribute(aligned) || defined(zig_tinyc)
227#define zig_under_align(alignment) __attribute__((aligned(alignment)))233#define zig_under_align(alignment) __attribute__((aligned(alignment)))
228#elif defined(zig_msvc)234#elif defined(zig_msvc)
src/codegen/c.zig+11-2
...@@ -1859,8 +1859,17 @@ pub const DeclGen = struct {...@@ -1859,8 +1859,17 @@ pub const DeclGen = struct {
1859 else => unreachable,1859 else => unreachable,
1860 }1860 }
1861 }1861 }
1862 if (fn_val.getFunction(zcu)) |func| if (func.analysisUnordered(ip).branch_hint == .cold)1862
1863 try w.writeAll("zig_cold ");1863 if (fn_val.getFunction(zcu)) |func| {
1864 const func_analysis = func.analysisUnordered(ip);
1865
1866 if (func_analysis.branch_hint == .cold)
1867 try w.writeAll("zig_cold ");
1868
1869 if (kind == .complete and func_analysis.disable_intrinsics or dg.mod.no_builtin)
1870 try w.writeAll("zig_no_builtin ");
1871 }
1872
1864 if (fn_info.return_type == .noreturn_type) try w.writeAll("zig_noreturn ");1873 if (fn_info.return_type == .noreturn_type) try w.writeAll("zig_noreturn ");
18651874
1866 var trailing = try renderTypePrefix(dg.pass, &dg.ctype_pool, zcu, w, fn_ctype, .suffix, .{});1875 var trailing = try renderTypePrefix(dg.pass, &dg.ctype_pool, zcu, w, fn_ctype, .suffix, .{});