mirror of
https://github.com/ziglang/zig.git
synced 2025-12-25 15:43:06 +00:00
* use the real start code for LLVM backend with x86_64-linux
- there is still a check for zig_backend after initializing the TLS
area to skip some stuff.
* introduce new AIR instructions and implement them for the LLVM
backend. They are the same as `call` except with a modifier.
- call_always_tail
- call_never_tail
- call_never_inline
* LLVM backend calls hasRuntimeBitsIgnoringComptime in more places to
avoid unnecessarily depending on comptimeOnly being resolved for some
types.
* LLVM backend: remove duplicate code for setting linkage and value
name. The canonical place for this is in `updateDeclExports`.
* LLVM backend: do some assembly template massaging to make `%%`
rendered as `%`. More hacks will be needed to make inline assembly
catch up with stage1.
26 lines
876 B
Zig
26 lines
876 B
Zig
const builtin = @import("builtin");
|
|
const nrfx_uart_t = extern struct {
|
|
p_reg: [*c]u32,
|
|
drv_inst_idx: u8,
|
|
};
|
|
|
|
pub fn nrfx_uart_rx(p_instance: [*c]const nrfx_uart_t) void {
|
|
_ = p_instance;
|
|
}
|
|
|
|
threadlocal var g_uart0 = nrfx_uart_t{
|
|
.p_reg = 0,
|
|
.drv_inst_idx = 0,
|
|
};
|
|
|
|
test "reference a global threadlocal variable" {
|
|
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
|
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
|
if (builtin.zig_backend == .stage2_x86_64) 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_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO
|
|
|
|
_ = nrfx_uart_rx(&g_uart0);
|
|
}
|