mirror of
https://github.com/ziglang/zig.git
synced 2026-01-18 21:35:25 +00:00
backend=auto (now the default if backend is omitted) means to let the compiler pick whatever backend it wants as the default. This is important for platforms where we don't yet have a self-hosted backend, such as loongarch64. Also purge a bunch of redundant target=native.
26 lines
756 B
Zig
26 lines
756 B
Zig
const std = @import("std");
|
|
|
|
pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn {
|
|
_ = stack_trace;
|
|
if (std.mem.eql(u8, message, "incorrect alignment")) {
|
|
std.process.exit(0);
|
|
}
|
|
std.process.exit(1);
|
|
}
|
|
|
|
pub fn main() !void {
|
|
var array align(4) = [_]u32{ 0x11111111, 0x11111111 };
|
|
const bytes = std.mem.sliceAsBytes(array[0..]);
|
|
if (foo(bytes) != 0x11111111) return error.Wrong;
|
|
return error.TestFailed;
|
|
}
|
|
fn foo(bytes: []u8) u32 {
|
|
const slice4 = bytes[1..5];
|
|
const aligned: *align(4) [4]u8 = @alignCast(slice4);
|
|
const int_slice = std.mem.bytesAsSlice(u32, aligned);
|
|
return int_slice[0];
|
|
}
|
|
// run
|
|
// backend=selfhosted,llvm
|
|
// target=x86_64-linux,aarch64-linux
|