This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[MAILER-DAEMON@sourceware.cygnus.com: failure notice]
- To: gcc at gcc dot gnu dot org
- Subject: [MAILER-DAEMON@sourceware.cygnus.com: failure notice]
- From: Frank Klemm <pfk at fuchs dot offl dot uni-jena dot de>
- Date: Sat, 1 Sep 2001 18:00:16 +0200
- >Received: (from pfk@localhost)by fuchs.offl.uni-jena.de (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id SAA06913for gcc@gcc.gnu.org; Sat, 1 Sep 2001 18:00:17 +0200
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 -----