Skip to content

Commit b9a6861

Browse files
committed
cbe: Implement support for -fno-builtin and @disableIntrinsics().
1 parent ffd741c commit b9a6861

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

lib/zig.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,12 @@
222222
#define zig_restrict
223223
#endif
224224

225+
#if zig_has_attribute(no_builtin)
226+
#define zig_no_builtin __attribute__((no_builtin))
227+
#else
228+
#define zig_no_builtin
229+
#endif
230+
225231
#if zig_has_attribute(aligned) || defined(zig_tinyc)
226232
#define zig_under_align(alignment) __attribute__((aligned(alignment)))
227233
#elif defined(zig_msvc)

src/codegen/c.zig

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1859,8 +1859,17 @@ pub const DeclGen = struct {
18591859
else => unreachable,
18601860
}
18611861
}
1862-
if (fn_val.getFunction(zcu)) |func| if (func.analysisUnordered(ip).branch_hint == .cold)
1863-
try w.writeAll("zig_cold ");
1862+
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+
18641873
if (fn_info.return_type == .noreturn_type) try w.writeAll("zig_noreturn ");
18651874

18661875
var trailing = try renderTypePrefix(dg.pass, &dg.ctype_pool, zcu, w, fn_ctype, .suffix, .{});

0 commit comments

Comments
 (0)