Skip to content

Commit 45ffc0f

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

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
@@ -130,6 +130,12 @@ typedef char bool;
130130
#define zig_restrict
131131
#endif
132132

133+
#if zig_has_attribute(no_builtin)
134+
#define zig_no_builtin __attribute__((no_builtin))
135+
#else
136+
#define zig_no_builtin
137+
#endif
138+
133139
#if zig_has_attribute(aligned)
134140
#define zig_under_align(alignment) __attribute__((aligned(alignment)))
135141
#elif _MSC_VER

src/codegen/c.zig

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1790,8 +1790,17 @@ pub const DeclGen = struct {
17901790
else => unreachable,
17911791
}
17921792
}
1793-
if (fn_val.getFunction(zcu)) |func| if (func.analysisUnordered(ip).branch_hint == .cold)
1794-
try w.writeAll("zig_cold ");
1793+
1794+
if (fn_val.getFunction(zcu)) |func| {
1795+
const func_analysis = func.analysisUnordered(ip);
1796+
1797+
if (func_analysis.branch_hint == .cold)
1798+
try w.writeAll("zig_cold ");
1799+
1800+
if (kind == .complete and func_analysis.disable_intrinsics or dg.mod.no_builtin)
1801+
try w.writeAll("zig_no_builtin ");
1802+
}
1803+
17951804
if (fn_info.return_type == .noreturn_type) try w.writeAll("zig_noreturn ");
17961805

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

0 commit comments

Comments
 (0)