mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
38 lines
735 B
Plaintext
38 lines
735 B
Plaintext
// #target: macos-x64
|
|
module test;
|
|
import std;
|
|
|
|
fn void main()
|
|
{
|
|
char[8] foo = {255, 0, 0, 0, 0, 0, 0, 0};
|
|
ulong a = to_ulong2(&foo);
|
|
ulong b = to_ulong(&foo);
|
|
}
|
|
|
|
fn ulong to_ulong(char[8]*) @naked @noinline
|
|
{
|
|
asm
|
|
{
|
|
movq [$rsp - 8], $rdi;
|
|
movq $rax, [$rsp - 8];
|
|
movq $rax, [$rax];
|
|
ret;
|
|
}
|
|
unreachable();
|
|
}
|
|
|
|
fn ulong to_ulong2(char[8]* buf)
|
|
{
|
|
return *(ulong*)buf;
|
|
}
|
|
|
|
|
|
/* #expect: test.ll
|
|
|
|
define i64 @test.to_ulong(ptr %0) #1 {
|
|
entry:
|
|
call void asm sideeffect alignstack "movq %rdi, -8(%rsp)\0Amovq -8(%rsp), %rax\0Amovq (%rax), %rax\0Aret \0A", "~{rax},~{flags},~{dirflag},~{fspr}"()
|
|
unreachable
|
|
}
|
|
attributes #1 = { naked noinline nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
|