mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 16:54:52 +00:00
cbe: implement function alignment
This commit is contained in:
parent
ec3116f573
commit
6d1292552e
11
lib/zig.h
11
lib/zig.h
@ -65,8 +65,17 @@ typedef char bool;
|
||||
#elif zig_has_attribute(aligned)
|
||||
#define zig_align(alignment) __attribute__((aligned(alignment)))
|
||||
#elif _MSC_VER
|
||||
#define zig_align zig_align_unavailable
|
||||
#else
|
||||
#error the C compiler being used does not support aligning variables
|
||||
#define zig_align zig_align_unavailable
|
||||
#endif
|
||||
|
||||
#if zig_has_attribute(aligned)
|
||||
#define zig_align_fn(alignment) __attribute__((aligned(alignment)))
|
||||
#elif _MSC_VER
|
||||
#define zig_align_fn zig_align_fn_unavailable
|
||||
#else
|
||||
#define zig_align_fn zig_align_fn_unavailable
|
||||
#endif
|
||||
|
||||
#if zig_has_builtin(unreachable)
|
||||
|
||||
@ -1387,6 +1387,7 @@ pub const DeclGen = struct {
|
||||
try dg.renderType(w, Type.void, kind);
|
||||
}
|
||||
try w.writeByte(')');
|
||||
if (fn_info.alignment > 0) try w.print(" zig_align_fn({})", .{fn_info.alignment});
|
||||
}
|
||||
|
||||
fn renderPtrToFnTypedef(dg: *DeclGen, t: Type) error{ OutOfMemory, AnalysisFail }![]const u8 {
|
||||
|
||||
@ -520,7 +520,6 @@ test "align(@alignOf(T)) T does not force resolution of T" {
|
||||
|
||||
test "align(N) on functions" {
|
||||
if (builtin.zig_backend == .stage1) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user