public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Andrew Haley <aph@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>, "H. Peter Anvin" <hpa@zytor.com>,
	        LKML <linux-kernel@vger.kernel.org>,
	        Andrew Morton <akpm@linux-foundation.org>,
	        Heiko Carstens <heiko.carstens@de.ibm.com>,
	feng.tang@intel.com,
	        Fr??d??ric Weisbecker <fweisbec@gmail.com>,
	        Steven Rostedt <rostedt@goodmis.org>,
	        Peter Zijlstra <peterz@infradead.org>,
	jakub@redhat.com,         gcc@gcc.gnu.org
Subject: Re: BUG: GCC-4.4.x changes the function frame on some functions
Date: Thu, 19 Nov 2009 16:45:00 -0000	[thread overview]
Message-ID: <alpine.LFD.2.00.0911191720030.24119@localhost.localdomain> (raw)
In-Reply-To: <4B056FAD.2080500@redhat.com>

On Thu, 19 Nov 2009, Andrew Haley wrote:

> Thomas Gleixner wrote:
> > On Thu, 19 Nov 2009, Andrew Haley wrote:
> >> Thomas Gleixner wrote:
> >>> There is no real obvious reason why the edi magic needs to be done
> >>> _before_ 
> >>>
> >>> 	push   %ebp
> >>> 	mov    %esp,%ebp
> >> Sure there is: unless you do the adjustment first %ebp won't be 16-aligned.
> > 
> > And why is this not done in 99% of the functions in the kernel, just
> > in this one and some random others ?
> 
> If I could see the function I might be able to tell you.  It's either a
> performance enhancement, something to do with SSE, or it's a bug.

kernel/time/timer_stats.c timer_stats_update_stats()

Here is the disassembly:

8107ad50 <timer_stats_update_stats>:
8107ad50:	57                   	push   %edi
8107ad51:	8d 7c 24 08          	lea    0x8(%esp),%edi
8107ad55:	83 e4 f0             	and    $0xfffffff0,%esp
8107ad58:	ff 77 fc             	pushl  -0x4(%edi)
8107ad5b:	55                   	push   %ebp
8107ad5c:	89 e5                	mov    %esp,%ebp
8107ad5e:	57                   	push   %edi
8107ad5f:	56                   	push   %esi
8107ad60:	53                   	push   %ebx
8107ad61:	83 ec 6c             	sub    $0x6c,%esp
8107ad64:	e8 47 92 f8 ff       	call   81003fb0 <mcount>
8107ad69:	8b 77 04             	mov    0x4(%edi),%esi
8107ad6c:	89 75 a4             	mov    %esi,-0x5c(%ebp)
8107ad6f:	65 8b 35 14 00 00 00 	mov    %gs:0x14,%esi
8107ad76:	89 75 e4             	mov    %esi,-0x1c(%ebp)
8107ad79:	31 f6                	xor    %esi,%esi
8107ad7b:	8b 35 60 5a cd 81    	mov    0x81cd5a60,%esi
8107ad81:	8b 1f                	mov    (%edi),%ebx
8107ad83:	85 f6                	test   %esi,%esi
8107ad85:	8b 7f 08             	mov    0x8(%edi),%edi
8107ad88:	75 18                	jne    8107ada2 <timer_stats_update_stats+0x52>
8107ad8a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
8107ad8d:	65 33 05 14 00 00 00 	xor    %gs:0x14,%eax
8107ad94:	75 53                	jne    8107ade9 <timer_stats_update_stats+0x99>
8107ad96:	83 c4 6c             	add    $0x6c,%esp
8107ad99:	5b                   	pop    %ebx
8107ad9a:	5e                   	pop    %esi
8107ad9b:	5f                   	pop    %edi
8107ad9c:	5d                   	pop    %ebp
8107ad9d:	8d 67 f8             	lea    -0x8(%edi),%esp
8107ada0:	5f                   	pop    %edi
8107ada1:	c3                   	ret    
8107ada2:	be 00 7a d6 81       	mov    $0x81d67a00,%esi
8107ada7:	89 45 ac             	mov    %eax,-0x54(%ebp)
8107adaa:	89 75 a0             	mov    %esi,-0x60(%ebp)
8107adad:	89 5d b4             	mov    %ebx,-0x4c(%ebp)
8107adb0:	64 8b 35 78 6a d6 81 	mov    %fs:0x81d66a78,%esi
8107adb7:	8b 34 b5 20 50 cd 81 	mov    -0x7e32afe0(,%esi,4),%esi
8107adbe:	89 4d b0             	mov    %ecx,-0x50(%ebp)
8107adc1:	01 75 a0             	add    %esi,-0x60(%ebp)
8107adc4:	89 55 b8             	mov    %edx,-0x48(%ebp)
8107adc7:	8b 45 a0             	mov    -0x60(%ebp),%eax
8107adca:	89 7d c0             	mov    %edi,-0x40(%ebp)
8107adcd:	e8 de f7 76 00       	call   817ea5b0 <_spin_lock_irqsave>
8107add2:	83 3d 60 5a cd 81 00 	cmpl   $0x0,0x81cd5a60
8107add9:	89 c3                	mov    %eax,%ebx
8107addb:	75 11                	jne    8107adee <timer_stats_update_stats+0x9e>
8107addd:	89 da                	mov    %ebx,%edx
8107addf:	8b 45 a0             	mov    -0x60(%ebp),%eax
8107ade2:	e8 79 fc 76 00       	call   817eaa60 <_spin_unlock_irqrestore>
8107ade7:	eb a1                	jmp    8107ad8a <timer_stats_update_stats+0x3a>
8107ade9:	e8 52 e4 fc ff       	call   81049240 <__stack_chk_fail>
8107adee:	8d 45 a8             	lea    -0x58(%ebp),%eax
8107adf1:	8b 55 a4             	mov    -0x5c(%ebp),%edx
8107adf4:	e8 f7 fd ff ff       	call   8107abf0 <tstat_lookup>
8107adf9:	85 c0                	test   %eax,%eax
8107adfb:	74 05                	je     8107ae02 <timer_stats_update_stats+0xb2>
8107adfd:	ff 40 14             	incl   0x14(%eax)
8107ae00:	eb db                	jmp    8107addd <timer_stats_update_stats+0x8d>
8107ae02:	f0 ff 05 00 67 fd 81 	lock incl 0x81fd6700
8107ae09:	eb d2                	jmp    8107addd <timer_stats_update_stats+0x8d>
8107ae0b:	90                   	nop
8107ae0c:	90                   	nop
8107ae0d:	90                   	nop
8107ae0e:	90                   	nop
8107ae0f:	90                   	nop


There is a dozen more of those.

Thanks,

	tglx

  reply	other threads:[~2009-11-19 16:45 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <alpine.LFD.2.00.0911181933540.24119@localhost.localdomain>
     [not found] ` <tip-887a29f59b93cf54e21814869a4ab6e80b6fa623@git.kernel.org>
     [not found]   ` <20091119072040.GA23579@elte.hu>
     [not found]     ` <alpine.LFD.2.00.0911191053390.24119@localhost.localdomain>
     [not found]       ` <alpine.LFD.2.00.0911191423190.24119@localhost.localdomain>
2009-11-19 15:39         ` Thomas Gleixner
2009-11-19 15:45           ` Andrew Haley
2009-11-19 15:55             ` H. Peter Anvin
2009-11-19 15:59               ` Richard Guenther
2009-11-19 16:03             ` Steven Rostedt
2009-11-19 16:13               ` H. Peter Anvin
2009-11-19 16:20               ` Frederic Weisbecker
2009-11-19 16:07             ` Thomas Gleixner
2009-11-19 16:19               ` Andrew Haley
2009-11-19 16:45                 ` Thomas Gleixner [this message]
2009-11-19 16:13             ` Steven Rostedt
2009-11-19 15:46           ` H. Peter Anvin
2009-11-19 15:51             ` Richard Guenther
2009-11-19 15:53               ` Richard Guenther
2009-11-19 17:38               ` Andi Kleen
2009-11-19 17:41           ` Linus Torvalds
2009-11-19 17:52             ` Thomas Gleixner
2009-11-19 18:00             ` Steven Rostedt
2009-11-19 18:04               ` Richard Guenther
2009-11-19 18:23                 ` Andrew Haley
2009-11-19 18:42                   ` Linus Torvalds
2009-11-19 18:45                     ` Linus Torvalds
2009-11-19 18:56                       ` Linus Torvalds
2009-11-19 19:03                         ` Thomas Gleixner
2009-11-23  9:17                           ` Jakub Jelinek
2009-11-23  9:53                             ` Thomas Gleixner
2009-11-19 19:12                         ` David Daney
2009-11-19 19:29                           ` Steven Rostedt
2009-11-19 19:47                             ` Frederic Weisbecker
2009-11-19 19:55                               ` Kai Tietz
2009-11-19 20:06                                 ` Frederic Weisbecker
2009-11-19 20:06                               ` Steven Rostedt
2009-11-19 20:18                                 ` Steven Rostedt
2009-11-19 20:29                                   ` Frederic Weisbecker
2009-11-19 20:26                                 ` Frederic Weisbecker
2009-11-19 20:38                                   ` Linus Torvalds
2009-11-19 20:45                                     ` Steven Rostedt
2009-11-19 19:51                             ` H. Peter Anvin
2009-11-19 20:08                               ` Linus Torvalds
2009-11-19 21:13                                 ` Jeff Law
2009-11-19 20:11                               ` Steven Rostedt
2009-11-19 21:07                               ` Jeff Law
2009-11-19 18:34                 ` Thomas Gleixner
2009-11-19 18:40                 ` Linus Torvalds
2009-11-19 18:48                   ` Ingo Molnar
2009-11-19 19:08                     ` Steven Rostedt
2009-11-19 19:51                       ` Ingo Molnar
2009-11-20  9:58                       ` [PATCH] gcc mcount-nofp was " Andi Kleen
2009-11-20 12:35                         ` Steven Rostedt
2009-11-20 19:08                           ` H. Peter Anvin
2009-11-19 20:37                   ` Thomas Gleixner
2009-11-19 18:22           ` Andrew Haley
2009-11-19 18:34             ` Steven Rostedt
2009-11-19 18:37               ` Andrew Pinski
2009-11-19 18:38               ` Andrew Haley
2009-11-19 18:38               ` H. Peter Anvin
2009-11-19 18:40             ` Thomas Gleixner
2009-11-20  5:24         ` [PATCH][GIT PULL][v2.6.32] tracing/x86: Add check to detect GCC messing with mcount prologue Steven Rostedt
2009-11-20  5:33           ` Steven Rostedt
2009-11-20 17:02           ` Steven Rostedt
2009-11-20 17:15             ` H. Peter Anvin
2009-11-20 19:36             ` Andrew Haley
2009-11-20 19:48               ` Steven Rostedt
2009-11-20 19:50                 ` H. Peter Anvin
2009-11-22  9:39               ` H.J. Lu
2009-11-22 17:21                 ` Andrew Haley
2009-11-22 23:31                   ` H.J. Lu
2009-11-24 14:43                     ` Andrew Haley
2009-11-24 14:56                       ` Thomas Gleixner
2009-11-24 15:06                         ` Jakub Jelinek
2009-11-24 15:32                           ` Andrew Haley
2009-11-24 15:36                             ` Jakub Jelinek
2009-11-24 15:48                               ` Andrew Haley
2009-11-24 16:39                                 ` H. Peter Anvin
2009-11-24 17:12                                   ` Andrew Haley
2009-11-24 17:30                                     ` Steven Rostedt
2009-11-25 20:05                                       ` H. Peter Anvin
2009-11-24 19:56                                     ` H. Peter Anvin
2009-11-25 15:29                           ` Thomas Gleixner
2009-11-25 15:45                             ` Ingo Molnar
2009-11-25 15:53                               ` Thomas Gleixner
2009-11-25 16:26                                 ` Ingo Molnar
2009-11-25 16:45                               ` Jakub Jelinek
2009-11-25 20:13                                 ` H. Peter Anvin
2009-11-25 21:01                                   ` Andrew Haley
2009-11-22  9:06             ` Ingo Molnar
2009-11-19 20:50 BUG: GCC-4.4.x changes the function frame on some functions H. Peter Anvin
2009-11-19 21:16 H. Peter Anvin
2009-11-19 21:26 ` Jeff Law
2009-11-19 22:44   ` Steven Rostedt
2009-11-20  0:00     ` Jeff Law
2009-11-20  0:37       ` Thomas Gleixner
2009-11-20  1:00         ` Linus Torvalds
2009-11-20  1:29           ` Thomas Gleixner
2009-11-20  2:16             ` Thomas Gleixner
2009-11-20  1:30           ` H. Peter Anvin
2009-11-20  5:40           ` Ingo Molnar
2009-11-20 12:06         ` Andrew Haley
2009-11-20 12:23           ` Andrew Haley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.2.00.0911191720030.24119@localhost.localdomain \
    --to=tglx@linutronix.de \
    --cc=akpm@linux-foundation.org \
    --cc=aph@redhat.com \
    --cc=feng.tang@intel.com \
    --cc=fweisbec@gmail.com \
    --cc=gcc@gcc.gnu.org \
    --cc=heiko.carstens@de.ibm.com \
    --cc=hpa@zytor.com \
    --cc=jakub@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).