| author | |
| committer | |
| log | 6d1292552e14a5678f069c1880adf04022951138 |
| tree | e3884a8dafee0b90bf7598e857f98283630ae954 |
| parent | ec3116f57375bac136d07c6c4d9f07cbcc58194c |
3 files changed, 11 insertions(+), 2 deletions(-)
lib/zig.h+10-1| ... | ... | @@ -65,8 +65,17 @@ typedef char bool; |
| 65 | 65 | #elif zig_has_attribute(aligned) |
| 66 | 66 | #define zig_align(alignment) __attribute__((aligned(alignment))) |
| 67 | 67 | #elif _MSC_VER |
| 68 | #define zig_align zig_align_unavailable | |
| 68 | 69 | #else |
| 69 | #error the C compiler being used does not support aligning variables | |
| 70 | #define zig_align zig_align_unavailable | |
| 71 | #endif | |
| 72 | ||
| 73 | #if zig_has_attribute(aligned) | |
| 74 | #define zig_align_fn(alignment) __attribute__((aligned(alignment))) | |
| 75 | #elif _MSC_VER | |
| 76 | #define zig_align_fn zig_align_fn_unavailable | |
| 77 | #else | |
| 78 | #define zig_align_fn zig_align_fn_unavailable | |
| 70 | 79 | #endif |
| 71 | 80 | |
| 72 | 81 | #if zig_has_builtin(unreachable) |
src/codegen/c.zig+1| ... | ... | @@ -1387,6 +1387,7 @@ pub const DeclGen = struct { |
| 1387 | 1387 | try dg.renderType(w, Type.void, kind); |
| 1388 | 1388 | } |
| 1389 | 1389 | try w.writeByte(')'); |
| 1390 | if (fn_info.alignment > 0) try w.print(" zig_align_fn({})", .{fn_info.alignment}); | |
| 1390 | 1391 | } |
| 1391 | 1392 | |
| 1392 | 1393 | fn renderPtrToFnTypedef(dg: *DeclGen, t: Type) error{ OutOfMemory, AnalysisFail }![]const u8 { |
test/behavior/align.zig-1| ... | ... | @@ -520,7 +520,6 @@ test "align(@alignOf(T)) T does not force resolution of T" { |
| 520 | 520 | |
| 521 | 521 | test "align(N) on functions" { |
| 522 | 522 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; |
| 523 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 524 | 523 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 525 | 524 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 526 | 525 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |