This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[MAILER-DAEMON@sourceware.cygnus.com: failure notice]


The mailer is defect. It checks the "To: " area for and only the string
"gcc@gcc.gnu.org". So it is not possible to write a email to a person and
the mailing list.

----- Forwarded message from MAILER-DAEMON@sourceware.cygnus.com -----

Return-Path: <MAILER-DAEMON@ns3.uni-jena.de>
Date: 1 Sep 2001 15:56:03 -0000
From: MAILER-DAEMON@sourceware.cygnus.com
To: pfk@fuchs.offl.uni-jena.de
Subject: failure notice

Hi. This is the qmail-send program at sourceware.cygnus.com.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

<gcc@gcc.gnu.org>:
/  Mail note rejected:  List address must be in To: or Cc: headers.


--- Below this line is a copy of the message.

Return-Path: <pfk@fuchs.offl.uni-jena.de>
Received: (qmail 920 invoked from network); 1 Sep 2001 15:55:55 -0000
Received: from unknown (HELO fsuj20.rz.uni-jena.de) (141.35.1.18)
  by sourceware.cygnus.com with SMTP; 1 Sep 2001 15:55:55 -0000
Received: from ns3.uni-jena.de (ns3.uni-jena.de [141.35.1.32])
	by fsuj20.rz.uni-jena.de (8.12.0.Beta7/8.11.1) with ESMTP id f81Ftc6V025834;
	Sat, 1 Sep 2001 17:55:38 +0200 (MET DST)
Received: (from uucp@localhost)
	by ns3.uni-jena.de (8.10.0/8.10.0) id f81Ftps23651;
	Sat, 1 Sep 2001 17:55:51 +0200 (MET DST)
>Received: (from pfk@localhost)
	by fuchs.offl.uni-jena.de (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id OAA01504
	for jh@suse.cz; Sat, 1 Sep 2001 14:16:35 +0200
Date: Sat, 1 Sep 2001 14:16:35 +0200
From: Frank Klemm <pfk@fuchs.offl.uni-jena.de>
To: Jan Hubicka <jh@suse.cz>, gcc@gcc.gnu.org
Subject: gcc, code increase with instruction reordering
Message-ID: <20010901141635.A1368@fuchs.offl.uni-jena.de>
References: <20010826141643.F13975@atrey.karlin.mff.cuni.cz> <20010827231917.A704@fuchs.offl.uni-jena.de> <20010828142555.D6600@atrey.karlin.mff.cuni.cz>
Mime-Version: 1.0
X-Mailer: Mutt 1.0.1i
In-Reply-To: <20010828142555.D6600@atrey.karlin.mff.cuni.cz>; from jh@suse.cz on Tue, Aug 28, 2001 at 02:25:55PM +0200
Content-Type: text/plain; charset=us-ascii


C-Code:
		...1
		if ( x == 0 ) {
		   ...2
		}
		...3
		return;

gcc2.95:
		...1
		cmpl $0,x
		jne  lbl
		...2
	lbl:	...3
		ret


gcc3.0 tends to code this like (also with -Os):
		...1
		cmpl $0,x
		je  lbl1
	lbl2:	...3
		ret

	lbl1:	...2				\ code
		jmp lbl2			/ junks

Problems:
	- code is at least 2 byte longer (2 jumps instead of 1 jump)

	- code often is 9 byte longer (distance becomes larger than
	  -128...+127 bytes, so a 'Jcc long' (6 byte) and 'JMP long' 
	  (5 byte) is needed.

Solutions:
	- avoid this trick with '-Os', may be also with '-O2', because speed
	  increase is very little, zero or below zero. Brnach prediction
	  seems to work very well.

	- avoid trick especially if jump distance is too long compared with
	  the nontricky code.

	- Insert the code junks as early as possible (after every jmp this
	  is possible, or before the function start). But be carefully to
	  avoid other code increases inside the function

	- if code is small and target is Pentium Pro, II, III, 4, Duron, Athlon
          often a conditional-mov works well (especially if the conditional
          expression is highly inpredictable).

	  if ( expect (x>12,0) )		// condition is seldom true
	  if ( expect (x>12,1) )		// condition is very often true

	  The current expect() syntax don't allow to describe a condition
	  which is high unpredictable so that jumps should be avoided and cmov's
	  should be used if possible.

-- 
Frank Klemm


----- End forwarded message -----


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]