authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-05-18 18:30:03-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-05-18 18:30:03-07:00
logb08bc84a36f9661e37340a6b4b3244f4b0f7060a
treeee19bb8c25b45e56ddc21cc5f694b9c8e55f75fb
parent762e686d17b7c3a97358302940c84701650668a0

don't add no-frame-pointer-elim for inline functions

and make syscall functions inline this gets the tests all passing on i386

3 files changed, 15 insertions(+), 15 deletions(-)

src/analyze.cpp+1-1
......@@ -1130,7 +1130,7 @@ static void resolve_function_proto(CodeGen *g, AstNode *node, FnTableEntry *fn_t
11301130 if (!fn_table_entry->is_extern) {
11311131 LLVMAddFunctionAttr(fn_table_entry->fn_value, LLVMNoUnwindAttribute);
11321132 }
1133 if (!g->is_release_build) {
1133 if (!g->is_release_build && !fn_proto->is_inline) {
11341134 ZigLLVMAddFunctionAttr(fn_table_entry->fn_value, "no-frame-pointer-elim", "true");
11351135 ZigLLVMAddFunctionAttr(fn_table_entry->fn_value, "no-frame-pointer-elim-non-leaf", nullptr);
11361136 }
std/linux_i386.zig+7-7
......@@ -419,20 +419,20 @@ pub const F_GETOWN_EX = 16;
419419
420420pub const F_GETOWNER_UIDS = 17;
421421
422pub fn syscall0(number: isize) -> isize {
422pub inline fn syscall0(number: isize) -> isize {
423423 asm volatile ("int $0x80"
424424 : [ret] "={eax}" (-> isize)
425425 : [number] "{eax}" (number))
426426}
427427
428pub fn syscall1(number: isize, arg1: isize) -> isize {
428pub inline fn syscall1(number: isize, arg1: isize) -> isize {
429429 asm volatile ("int $0x80"
430430 : [ret] "={eax}" (-> isize)
431431 : [number] "{eax}" (number),
432432 [arg1] "{ebx}" (arg1))
433433}
434434
435pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
435pub inline fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
436436 asm volatile ("int $0x80"
437437 : [ret] "={eax}" (-> isize)
438438 : [number] "{eax}" (number),
......@@ -440,7 +440,7 @@ pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
440440 [arg2] "{ecx}" (arg2))
441441}
442442
443pub fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
443pub inline fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
444444 asm volatile ("int $0x80"
445445 : [ret] "={eax}" (-> isize)
446446 : [number] "{eax}" (number),
......@@ -449,7 +449,7 @@ pub fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
449449 [arg3] "{edx}" (arg3))
450450}
451451
452pub fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isize) -> isize {
452pub inline fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isize) -> isize {
453453 asm volatile ("int $0x80"
454454 : [ret] "={eax}" (-> isize)
455455 : [number] "{eax}" (number),
......@@ -459,7 +459,7 @@ pub fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isiz
459459 [arg4] "{esi}" (arg4))
460460}
461461
462pub fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize,
462pub inline fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize,
463463 arg4: isize, arg5: isize) -> isize
464464{
465465 asm volatile ("int $0x80"
......@@ -472,7 +472,7 @@ pub fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize,
472472 [arg5] "{edi}" (arg5))
473473}
474474
475pub fn syscall6(number: isize, arg1: isize, arg2: isize, arg3: isize,
475pub inline fn syscall6(number: isize, arg1: isize, arg2: isize, arg3: isize,
476476 arg4: isize, arg5: isize, arg6: isize) -> isize
477477{
478478 asm volatile ("int $0x80"
std/linux_x86_64.zig+7-7
......@@ -370,14 +370,14 @@ pub const F_GETOWN_EX = 16;
370370
371371pub const F_GETOWNER_UIDS = 17;
372372
373pub fn syscall0(number: isize) -> isize {
373pub inline fn syscall0(number: isize) -> isize {
374374 asm volatile ("syscall"
375375 : [ret] "={rax}" (-> isize)
376376 : [number] "{rax}" (number)
377377 : "rcx", "r11")
378378}
379379
380pub fn syscall1(number: isize, arg1: isize) -> isize {
380pub inline fn syscall1(number: isize, arg1: isize) -> isize {
381381 asm volatile ("syscall"
382382 : [ret] "={rax}" (-> isize)
383383 : [number] "{rax}" (number),
......@@ -385,7 +385,7 @@ pub fn syscall1(number: isize, arg1: isize) -> isize {
385385 : "rcx", "r11")
386386}
387387
388pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
388pub inline fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
389389 asm volatile ("syscall"
390390 : [ret] "={rax}" (-> isize)
391391 : [number] "{rax}" (number),
......@@ -394,7 +394,7 @@ pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
394394 : "rcx", "r11")
395395}
396396
397pub fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
397pub inline fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
398398 asm volatile ("syscall"
399399 : [ret] "={rax}" (-> isize)
400400 : [number] "{rax}" (number),
......@@ -404,7 +404,7 @@ pub fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
404404 : "rcx", "r11")
405405}
406406
407pub fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isize) -> isize {
407pub inline fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isize) -> isize {
408408 asm volatile ("syscall"
409409 : [ret] "={rax}" (-> isize)
410410 : [number] "{rax}" (number),
......@@ -415,7 +415,7 @@ pub fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isiz
415415 : "rcx", "r11")
416416}
417417
418pub fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isize, arg5: isize) -> isize {
418pub inline fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isize, arg5: isize) -> isize {
419419 asm volatile ("syscall"
420420 : [ret] "={rax}" (-> isize)
421421 : [number] "{rax}" (number),
......@@ -427,7 +427,7 @@ pub fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isiz
427427 : "rcx", "r11")
428428}
429429
430pub fn syscall6(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isize,
430pub inline fn syscall6(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isize,
431431 arg5: isize, arg6: isize) -> isize
432432{
433433 asm volatile ("syscall"