Date: Sun, 6 May 2007 01:32:02 +0400 From: Andrey Chernov <ache@freebsd.org> To: "Sean C. Farley" <sean-freebsd@farley.org> Cc: Daniel Eischen <deischen@freebsd.org>, arch@freebsd.org Subject: Re: HEADS DOWN Message-ID: <20070505213202.GA49925@nagual.pp.ru> In-Reply-To: <20070504174657.D1343@thor.farley.org> References: <20070501135439.B36275@thor.farley.org> <20070502.102822.-957833022.imp@bsdimp.com> <Pine.GSO.4.64.0705021332020.8590@sea.ntplx.net> <20070502183100.P1317@baba.farley.org> <Pine.GSO.4.64.0705022034180.8590@sea.ntplx.net> <20070502230413.Y30614@thor.farley.org> <20070503160351.GA15008@nagual.pp.ru> <20070504085905.J39482@thor.farley.org> <20070504213312.GA33163@nagual.pp.ru> <20070504174657.D1343@thor.farley.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, May 05, 2007 at 03:56:21PM -0500, Sean C. Farley wrote:
> Interestingly, gcc 3.4.6 on -STABLE does not do such a great job even
> with -minline-all-stringops. I do have CPUTYPE?=pentium4 in
> /etc/make.conf. Maybe this is only an issue with i386 similar to what
> you mention below?
Even "cc -O" do that, without any flags, see live example below:
a.c:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
main() {
printf("%d\n", strlen(getenv("HOME")));
}
cc -O -S a.c
cat a.s
.file "a.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "HOME"
.LC1:
.string "%d\n"
.text
.p2align 2,,3
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
pushl %edi
subl $4, %esp
andl $-16, %esp
subl $28, %esp
pushl $.LC0
call getenv
addl $8, %esp
movl %eax, %edi
cld
movl $-1, %ecx
movb $0, %al
repnz
scasb
notl %ecx
decl %ecx
pushl %ecx
pushl $.LC1
call printf
movl -4(%ebp), %edi
leave
ret
.size main, .-main
.ident "GCC: (GNU) 3.4.6 [FreeBSD] 20060825"
--
http://ache.pp.ru/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070505213202.GA49925>
