diff options
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_macosx_x86-64/call.cxx')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_macosx_x86-64/call.cxx | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/bridges/source/cpp_uno/gcc3_macosx_x86-64/call.cxx b/bridges/source/cpp_uno/gcc3_macosx_x86-64/call.cxx index a0654104012d..2c7332a16a2b 100644 --- a/bridges/source/cpp_uno/gcc3_macosx_x86-64/call.cxx +++ b/bridges/source/cpp_uno/gcc3_macosx_x86-64/call.cxx @@ -55,8 +55,9 @@ void privateSnippetExecutor() " call _cpp_vtable_call\n" - " cmp $1, %rax\n" - " je .Lspecial\n" + " testl %eax, %eax\n" + " je .Lfpint\n" + " jg .Lintfp\n" " movq -144(%rbp), %rax # Potential return value (general case)\n" " movq -136(%rbp), %rdx # Potential return value (general case)\n" @@ -64,9 +65,14 @@ void privateSnippetExecutor() " movq -136(%rbp), %xmm1 # Potential return value (general case)\n" " jmp .Lfinish\n" - ".Lspecial:\n" + ".Lfpint:\n" " movq -144(%rbp), %xmm0 # Return value (special fp and integer case)\n" " movq -136(%rbp), %rax # Return value (special fp and integer case)\n" + " jmp .Lfinish\n" + + ".Lintfp:\n" + " movq -144(%rbp), %rax # Return value (special integer and fp case)\n" + " movq -136(%rbp), %xmm0 # Return value (special integer and fp case)\n" ".Lfinish:\n" " addq $160, %rsp\n" |