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...@@ -1130,7 +1130,7 @@ static void resolve_function_proto(CodeGen *g, AstNode *node, FnTableEntry *fn_t
1130 if (!fn_table_entry->is_extern) {1130 if (!fn_table_entry->is_extern) {
1131 LLVMAddFunctionAttr(fn_table_entry->fn_value, LLVMNoUnwindAttribute);1131 LLVMAddFunctionAttr(fn_table_entry->fn_value, LLVMNoUnwindAttribute);
1132 }1132 }
1133 if (!g->is_release_build) {1133 if (!g->is_release_build && !fn_proto->is_inline) {
1134 ZigLLVMAddFunctionAttr(fn_table_entry->fn_value, "no-frame-pointer-elim", "true");1134 ZigLLVMAddFunctionAttr(fn_table_entry->fn_value, "no-frame-pointer-elim", "true");
1135 ZigLLVMAddFunctionAttr(fn_table_entry->fn_value, "no-frame-pointer-elim-non-leaf", nullptr);1135 ZigLLVMAddFunctionAttr(fn_table_entry->fn_value, "no-frame-pointer-elim-non-leaf", nullptr);
1136 }1136 }
std/linux_i386.zig+7-7
...@@ -419,20 +419,20 @@ pub const F_GETOWN_EX = 16;...@@ -419,20 +419,20 @@ pub const F_GETOWN_EX = 16;
419419
420pub const F_GETOWNER_UIDS = 17;420pub const F_GETOWNER_UIDS = 17;
421421
422pub fn syscall0(number: isize) -> isize {422pub inline fn syscall0(number: isize) -> isize {
423 asm volatile ("int $0x80"423 asm volatile ("int $0x80"
424 : [ret] "={eax}" (-> isize)424 : [ret] "={eax}" (-> isize)
425 : [number] "{eax}" (number))425 : [number] "{eax}" (number))
426}426}
427427
428pub fn syscall1(number: isize, arg1: isize) -> isize {428pub inline fn syscall1(number: isize, arg1: isize) -> isize {
429 asm volatile ("int $0x80"429 asm volatile ("int $0x80"
430 : [ret] "={eax}" (-> isize)430 : [ret] "={eax}" (-> isize)
431 : [number] "{eax}" (number),431 : [number] "{eax}" (number),
432 [arg1] "{ebx}" (arg1))432 [arg1] "{ebx}" (arg1))
433}433}
434434
435pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {435pub inline fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
436 asm volatile ("int $0x80"436 asm volatile ("int $0x80"
437 : [ret] "={eax}" (-> isize)437 : [ret] "={eax}" (-> isize)
438 : [number] "{eax}" (number),438 : [number] "{eax}" (number),
...@@ -440,7 +440,7 @@ pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {...@@ -440,7 +440,7 @@ pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
440 [arg2] "{ecx}" (arg2))440 [arg2] "{ecx}" (arg2))
441}441}
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 {
444 asm volatile ("int $0x80"444 asm volatile ("int $0x80"
445 : [ret] "={eax}" (-> isize)445 : [ret] "={eax}" (-> isize)
446 : [number] "{eax}" (number),446 : [number] "{eax}" (number),
...@@ -449,7 +449,7 @@ pub fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {...@@ -449,7 +449,7 @@ pub fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
449 [arg3] "{edx}" (arg3))449 [arg3] "{edx}" (arg3))
450}450}
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 {
453 asm volatile ("int $0x80"453 asm volatile ("int $0x80"
454 : [ret] "={eax}" (-> isize)454 : [ret] "={eax}" (-> isize)
455 : [number] "{eax}" (number),455 : [number] "{eax}" (number),
...@@ -459,7 +459,7 @@ pub fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isiz...@@ -459,7 +459,7 @@ pub fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isiz
459 [arg4] "{esi}" (arg4))459 [arg4] "{esi}" (arg4))
460}460}
461461
462pub fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize,462pub inline fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize,
463 arg4: isize, arg5: isize) -> isize463 arg4: isize, arg5: isize) -> isize
464{464{
465 asm volatile ("int $0x80"465 asm volatile ("int $0x80"
...@@ -472,7 +472,7 @@ pub fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize,...@@ -472,7 +472,7 @@ pub fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize,
472 [arg5] "{edi}" (arg5))472 [arg5] "{edi}" (arg5))
473}473}
474474
475pub fn syscall6(number: isize, arg1: isize, arg2: isize, arg3: isize,475pub inline fn syscall6(number: isize, arg1: isize, arg2: isize, arg3: isize,
476 arg4: isize, arg5: isize, arg6: isize) -> isize476 arg4: isize, arg5: isize, arg6: isize) -> isize
477{477{
478 asm volatile ("int $0x80"478 asm volatile ("int $0x80"
std/linux_x86_64.zig+7-7
...@@ -370,14 +370,14 @@ pub const F_GETOWN_EX = 16;...@@ -370,14 +370,14 @@ pub const F_GETOWN_EX = 16;
370370
371pub const F_GETOWNER_UIDS = 17;371pub const F_GETOWNER_UIDS = 17;
372372
373pub fn syscall0(number: isize) -> isize {373pub inline fn syscall0(number: isize) -> isize {
374 asm volatile ("syscall"374 asm volatile ("syscall"
375 : [ret] "={rax}" (-> isize)375 : [ret] "={rax}" (-> isize)
376 : [number] "{rax}" (number)376 : [number] "{rax}" (number)
377 : "rcx", "r11")377 : "rcx", "r11")
378}378}
379379
380pub fn syscall1(number: isize, arg1: isize) -> isize {380pub inline fn syscall1(number: isize, arg1: isize) -> isize {
381 asm volatile ("syscall"381 asm volatile ("syscall"
382 : [ret] "={rax}" (-> isize)382 : [ret] "={rax}" (-> isize)
383 : [number] "{rax}" (number),383 : [number] "{rax}" (number),
...@@ -385,7 +385,7 @@ pub fn syscall1(number: isize, arg1: isize) -> isize {...@@ -385,7 +385,7 @@ pub fn syscall1(number: isize, arg1: isize) -> isize {
385 : "rcx", "r11")385 : "rcx", "r11")
386}386}
387387
388pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {388pub inline fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
389 asm volatile ("syscall"389 asm volatile ("syscall"
390 : [ret] "={rax}" (-> isize)390 : [ret] "={rax}" (-> isize)
391 : [number] "{rax}" (number),391 : [number] "{rax}" (number),
...@@ -394,7 +394,7 @@ pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {...@@ -394,7 +394,7 @@ pub fn syscall2(number: isize, arg1: isize, arg2: isize) -> isize {
394 : "rcx", "r11")394 : "rcx", "r11")
395}395}
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 {
398 asm volatile ("syscall"398 asm volatile ("syscall"
399 : [ret] "={rax}" (-> isize)399 : [ret] "={rax}" (-> isize)
400 : [number] "{rax}" (number),400 : [number] "{rax}" (number),
...@@ -404,7 +404,7 @@ pub fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {...@@ -404,7 +404,7 @@ pub fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
404 : "rcx", "r11")404 : "rcx", "r11")
405}405}
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 {
408 asm volatile ("syscall"408 asm volatile ("syscall"
409 : [ret] "={rax}" (-> isize)409 : [ret] "={rax}" (-> isize)
410 : [number] "{rax}" (number),410 : [number] "{rax}" (number),
...@@ -415,7 +415,7 @@ pub fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isiz...@@ -415,7 +415,7 @@ pub fn syscall4(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isiz
415 : "rcx", "r11")415 : "rcx", "r11")
416}416}
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 {
419 asm volatile ("syscall"419 asm volatile ("syscall"
420 : [ret] "={rax}" (-> isize)420 : [ret] "={rax}" (-> isize)
421 : [number] "{rax}" (number),421 : [number] "{rax}" (number),
...@@ -427,7 +427,7 @@ pub fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isiz...@@ -427,7 +427,7 @@ pub fn syscall5(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isiz
427 : "rcx", "r11")427 : "rcx", "r11")
428}428}
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,
431 arg5: isize, arg6: isize) -> isize431 arg5: isize, arg6: isize) -> isize
432{432{
433 asm volatile ("syscall"433 asm volatile ("syscall"