RIP :(



  • Mein i686-apple-darwin10-gcc-4.2.1 optimiert den Aufruf von x und y weg.



  • Tippgeber schrieb:

    Das liegt wohl an dem fehlenden static in den Funktionsprototypen. So muss der Compiler ja davon ausgehen, dass die Funktion aus anderen Modulen aufgerufen werden könnte.

    wird sie ja auch... aber ich dachte man kann sie trotzdem inlinen, zumindest innerhalb der library 😕



  • Shade Of Mine schrieb:

    Mein i686-apple-darwin10-gcc-4.2.1 optimiert den Aufruf von x und y weg.

    auch mit -fPIC 😕 das wär ja end geil 👍



  • also ich hab grad den am start... gcc (Debian 4.4.5-8) 4.4.5



  • oO schrieb:

    Tippgeber schrieb:

    Das liegt wohl an dem fehlenden static in den Funktionsprototypen. So muss der Compiler ja davon ausgehen, dass die Funktion aus anderen Modulen aufgerufen werden könnte.

    wird sie ja auch... aber ich dachte man kann sie trotzdem inlinen, zumindest innerhalb der library 😕

    sry. meinte compile unit, library sollte eig. erst ab gcc 4.5 mögl. sein - so der plan... 😞

    aber wenn das mit -fPIC nicht geht, kann ichs eh vergessen ausser ich mach wieder wie früher ein riesenbaby 🕶



  • auch mit -fPIC 😕 das wär ja end geil

    und was hat das mit inlining zu tun?



  • piepic schrieb:

    auch mit -fPIC 😕 das wär ja end geil

    und was hat das mit inlining zu tun?

    sind hier nur noch deppen 😕



  • oO schrieb:

    Shade Of Mine schrieb:

    Mein i686-apple-darwin10-gcc-4.2.1 optimiert den Aufruf von x und y weg.

    auch mit -fPIC 😕 das wär ja end geil 👍

    Ja.
    sowohol bei

    gcc -fPIC -O3 -c test.c -S
    

    als auch

    gcc -fpic -O3 -c test.c -S
    

    kommt das als Ergebnis:

    _main:
    LFB5:
    	pushq	%rbp
    LCFI4:
    	movq	%rsp, %rbp
    LCFI5:
    	movl	$3, %esi
    	leaq	LC0(%rip), %rdi
    	xorl	%eax, %eax
    	call	_printf
    	xorl	%eax, %eax
    	leave
    	ret
    
    $ gcc --version
    i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
    Copyright (C) 2007 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    


  • gut zu wissen, dann wirds auf nem mac signifikant schneller laufen als unter linux 👍

    was mich aber ein bischen wundert, weil es die augenscheinlich neuere version unter linux nicht gebacken bekommt... oder geht es bei anderen und nur bei mir nicht 😕



  • also bei mir geht es einfach nicht... 😞

    main:
    .LFB13:
    	.cfi_startproc
    	subq	$8, %rsp
    	.cfi_def_cfa_offset 16
    	xorl	%eax, %eax
    	call	y@PLT
    	leaq	.LC0(%rip), %rdi
    	movq	%rax, %rsi
    	xorl	%eax, %eax
    	call	printf@PLT
    	xorl	%eax, %eax
    	addq	$8, %rsp
    	ret
    

    wenn die funktion static ist, dann schon:

    main:
    .LFB13:
    	.cfi_startproc
    	leaq	.LC0(%rip), %rdi
    	subq	$8, %rsp
    	.cfi_def_cfa_offset 16
    	movl	$3, %esi
    	xorl	%eax, %eax
    	call	printf@PLT
    	xorl	%eax, %eax
    	addq	$8, %rsp
    	ret
    	.cfi_endproc
    

    aber wie gesagt, das bringt mich nicht weiter, weil dann kann ich gleich den ganzen library käse weglassen 🙄


Anmelden zum Antworten