Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Mar 2007 10:13:12 -0300
From:      Ricardo Nabinger Sanchez <rnsanchez@wait4.org>
To:        Andrey Chernov <ache@freebsd.org>
Cc:        freebsd-bugs@FreeBSD.ORG, freebsd-current@FreeBSD.ORG
Subject:   Re: Bad gcc -O optimization cause core dump. What to do?
Message-ID:  <20070313101312.71d35c32.rnsanchez@wait4.org>
In-Reply-To: <20070313121106.GA96293@nagual.pp.ru>
References:  <20070313121106.GA96293@nagual.pp.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 13 Mar 2007 15:11:07 +0300
Andrey Chernov <ache@freebsd.org> wrote:

> cc -O -S a.c
> 	.file	"a.c"
> 	.text
> 	.p2align 2,,3
> .globl main
> 	.type	main, @function
> main:
> 	pushl	%ebp
> 	movl	%esp, %ebp
> 	subl	$8, %esp
> 	andl	$-16, %esp
> 	subl	$28, %esp
> 	pushl	$0
> 	call	puts
> 	leave
> 	ret
> 	.size	main, .-main
> 	.ident	"GCC: (GNU) 3.4.6 [FreeBSD] 20060825"

Confirmed on FreeBSD-6.1 RELEASE:

        .file   "bla.c"
        .text
        .p2align 2,,3
.globl main
        .type   main, @function
main:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $8, %esp
        andl    $-16, %esp
        subl    $28, %esp
        pushl   $0
        call    puts
        leave
        ret
        .size   main, .-main
        .ident  "GCC: (GNU) 3.4.4 [FreeBSD] 20050518"

> It calls "puts(NULL)" with core dump.
> It means "printf("%s\n", NULL)" is overoptimized.
> BTW, things like "printf("1%s\n", NULL)" are not overoptimized.
> Any ideas? Is it right or needs to be fixed?

Given that this is not what the user asked (replacing printf with puts), I
consider this a bug.  GCC made its assumption, and it was incorrect--it's not
user's fault.

-- 
Ricardo Nabinger Sanchez     <rnsanchez@{gmail.com,wait4.org}>
Powered by FreeBSD

  "Left to themselves, things tend to go from bad to worse."



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070313101312.71d35c32.rnsanchez>