[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-libc-dev] Considerable Compiler improvement neeeds testing
From: |
Björn Haase |
Subject: |
[avr-libc-dev] Considerable Compiler improvement neeeds testing |
Date: |
Sun, 30 Jan 2005 17:48:16 +0100 |
User-agent: |
KMail/1.7.1 |
Hi,
find enclosed a mail posted by Andy Hutchinson on the address@hidden list. I
forward this mail to this list since I think that this is the better forum
for discussing this issue.
The story is:
It seems that the gcc internals documentation was kind of misleading and for
this reason avr-gcc was not able to take benefit of a couple of optimizations
that avoid useless moves across registers when dealing with variables of
different byte sizes.
The change suggested by Andy Hutchinson affects one single line in
the gcc/config/avr/avr.h that presently reads
#define MODES_TIEABLE_P 0
to
#define MODES_TIEABLE_P 1
. My tests have shown that *with* this change, about 15 testcases in the gcc
testsuite work that did not beforehand and the code becomes considerably
tighter.
Yours,
Björn
Sunday, 30. Januar 2005 17:32 Andy Hutchinson wrote:
> This is tremendous!
>
> Can somebody check out a few real embedded application? So we can see if
> there is any I/O hiccups and get a feel for code improvement? Something
> very "char/byte" orientated plus some floating point?? oh yes - it
> should be run and see if it works rather than just compile/simulate.
>
> I have found no issues but I have other optimisation in my setup that
> now prevent a true comparision.
>
> address@hidden wrote:
> > Hi,
> >
> > Meanwhile I have run the testsuite (using the simulavr simulator) with
> > and without modes defined tieable. When modes are declared to be tieable,
> > 13 failures disappear:
> >
> > Testsuite result summary for #define MODES_TIEABLE_P 0
> > === gcc Summary ===
> > # of expected passes 23105
> > # of unexpected failures 314
> > # of unexpected successes 3
> > # of expected failures 67
> > # of unresolved testcases 128
> > # of untested testcases 25
> > # of unsupported tests 962
> > /home/bmh/gnucvs/gcc343/build/gcc/xgcc version 3.4.3
> >
> > Testsuite result summary for #define MODES_TIEABLE_P 1
> > === gcc Summary ===
> > # of expected passes 23120
> > # of unexpected failures 301
> > # of unexpected successes 3
> > # of expected failures 67
> > # of unresolved testcases 126
> > # of untested testcases 25
> > # of unsupported tests 962
> > /home/bmh/gnucvs/gcc343/build/gcc/xgcc version 3.4.3
> >
> > Yours,
> >
> > Björn
> >
> > P.S.:
> > This is the diff of the summary files:
> >
> > *** gcc.sum.tieable0 2005-01-30 17:06:29.619017504 +0100
> > --- gcc.sum.tieable1 2005-01-30 12:49:11.000000000 +0100
> > ***************
> > *** 1,4 ****
> > ! Test Run By bmh on Sun Jan 30 12:55:18 2005
> > Target is avr-unknown-none
> > Host is i686-pc-linux-gnu
> >
> > --- 1,4 ----
> > ! Test Run By bmh on Sun Jan 30 11:29:20 2005
> > Target is avr-unknown-none
> > Host is i686-pc-linux-gnu
> >
> > ***************
> > *** 374,381 ****
> > PASS: gcc.c-torture/compile/20001212-1.c -O0 (test for excess errors)
> > PASS: gcc.c-torture/compile/20001212-1.c -O1 (test for excess errors)
> > PASS: gcc.c-torture/compile/20001212-1.c -O2 (test for excess errors)
> > ! FAIL: gcc.c-torture/compile/20001212-1.c -O3 -fomit-frame-pointer
> > (test for excess errors)
> > ! FAIL: gcc.c-torture/compile/20001212-1.c -O3 -g (test for excess
> > errors) PASS: gcc.c-torture/compile/20001212-1.c -Os (test for excess
> > errors) PASS: gcc.c-torture/compile/20001221-1.c -O0 (test for excess
> > errors) PASS: gcc.c-torture/compile/20001221-1.c -O1 (test for excess
> > errors) --- 374,381 ----
> > PASS: gcc.c-torture/compile/20001212-1.c -O0 (test for excess errors)
> > PASS: gcc.c-torture/compile/20001212-1.c -O1 (test for excess errors)
> > PASS: gcc.c-torture/compile/20001212-1.c -O2 (test for excess errors)
> > ! PASS: gcc.c-torture/compile/20001212-1.c -O3 -fomit-frame-pointer
> > (test for excess errors)
> > ! PASS: gcc.c-torture/compile/20001212-1.c -O3 -g (test for excess
> > errors) PASS: gcc.c-torture/compile/20001212-1.c -Os (test for excess
> > errors) PASS: gcc.c-torture/compile/20001221-1.c -O0 (test for excess
> > errors) PASS: gcc.c-torture/compile/20001221-1.c -O1 (test for excess
> > errors) ***************
> > *** 1664,1673 ****
> > PASS: gcc.c-torture/compile/900116-1.c -O0 (test for excess errors)
> > PASS: gcc.c-torture/compile/900116-1.c -O1 (test for excess errors)
> > PASS: gcc.c-torture/compile/900116-1.c -O2 (test for excess errors)
> > ! FAIL: gcc.c-torture/compile/900116-1.c -O3 -fomit-frame-pointer (test
> > for excess errors)
> > ! FAIL: gcc.c-torture/compile/900116-1.c -O3 -fomit-frame-pointer
> > -funroll-loops (test for excess errors)
> > ! FAIL: gcc.c-torture/compile/900116-1.c -O3 -fomit-frame-pointer
> > -funroll-all-loops -finline-functions (test for excess errors)
> > ! FAIL: gcc.c-torture/compile/900116-1.c -O3 -g (test for excess
> > errors) PASS: gcc.c-torture/compile/900116-1.c -Os (test for excess
> > errors) PASS: gcc.c-torture/compile/900216-1.c -O0 (test for excess
> > errors) PASS: gcc.c-torture/compile/900216-1.c -O1 (test for excess
> > errors) --- 1664,1673 ----
> > PASS: gcc.c-torture/compile/900116-1.c -O0 (test for excess errors)
> > PASS: gcc.c-torture/compile/900116-1.c -O1 (test for excess errors)
> > PASS: gcc.c-torture/compile/900116-1.c -O2 (test for excess errors)
> > ! PASS: gcc.c-torture/compile/900116-1.c -O3 -fomit-frame-pointer (test
> > for excess errors)
> > ! PASS: gcc.c-torture/compile/900116-1.c -O3 -fomit-frame-pointer
> > -funroll-loops (test for excess errors)
> > ! PASS: gcc.c-torture/compile/900116-1.c -O3 -fomit-frame-pointer
> > -funroll-all-loops -finline-functions (test for excess errors)
> > ! PASS: gcc.c-torture/compile/900116-1.c -O3 -g (test for excess
> > errors) PASS: gcc.c-torture/compile/900116-1.c -Os (test for excess
> > errors) PASS: gcc.c-torture/compile/900216-1.c -O0 (test for excess
> > errors) PASS: gcc.c-torture/compile/900216-1.c -O1 (test for excess
> > errors) ***************
> > *** 2588,2597 ****
> > PASS: gcc.c-torture/compile/930621-1.c -O0 (test for excess errors)
> > PASS: gcc.c-torture/compile/930621-1.c -O1 (test for excess errors)
> > PASS: gcc.c-torture/compile/930621-1.c -O2 (test for excess errors)
> > ! FAIL: gcc.c-torture/compile/930621-1.c -O3 -fomit-frame-pointer (test
> > for excess errors)
> > ! FAIL: gcc.c-torture/compile/930621-1.c -O3 -fomit-frame-pointer
> > -funroll-loops (test for excess errors)
> > ! FAIL: gcc.c-torture/compile/930621-1.c -O3 -fomit-frame-pointer
> > -funroll-all-loops -finline-functions (test for excess errors)
> > ! FAIL: gcc.c-torture/compile/930621-1.c -O3 -g (test for excess
> > errors) PASS: gcc.c-torture/compile/930621-1.c -Os (test for excess
> > errors) PASS: gcc.c-torture/compile/930623-1.c -O0 (test for excess
> > errors) PASS: gcc.c-torture/compile/930623-1.c -O1 (test for excess
> > errors) --- 2588,2597 ----
> > PASS: gcc.c-torture/compile/930621-1.c -O0 (test for excess errors)
> > PASS: gcc.c-torture/compile/930621-1.c -O1 (test for excess errors)
> > PASS: gcc.c-torture/compile/930621-1.c -O2 (test for excess errors)
> > ! PASS: gcc.c-torture/compile/930621-1.c -O3 -fomit-frame-pointer (test
> > for excess errors)
> > ! PASS: gcc.c-torture/compile/930621-1.c -O3 -fomit-frame-pointer
> > -funroll-loops (test for excess errors)
> > ! PASS: gcc.c-torture/compile/930621-1.c -O3 -fomit-frame-pointer
> > -funroll-all-loops -finline-functions (test for excess errors)
> > ! PASS: gcc.c-torture/compile/930621-1.c -O3 -g (test for excess
> > errors) PASS: gcc.c-torture/compile/930621-1.c -Os (test for excess
> > errors) PASS: gcc.c-torture/compile/930623-1.c -O0 (test for excess
> > errors) PASS: gcc.c-torture/compile/930623-1.c -O1 (test for excess
> > errors) ***************
> > *** 8319,8328 ****
> > PASS: gcc.c-torture/execute/930608-1.c execution, -O1
> > PASS: gcc.c-torture/execute/930608-1.c compilation, -O2
> > PASS: gcc.c-torture/execute/930608-1.c execution, -O2
> > ! FAIL: gcc.c-torture/execute/930608-1.c compilation, -O3
> > -fomit-frame-pointer
> > ! UNRESOLVED: gcc.c-torture/execute/930608-1.c execution, -O3
> > -fomit-frame-pointer
> > ! FAIL: gcc.c-torture/execute/930608-1.c compilation, -O3 -g
> > ! UNRESOLVED: gcc.c-torture/execute/930608-1.c execution, -O3 -g
> > PASS: gcc.c-torture/execute/930608-1.c compilation, -Os
> > PASS: gcc.c-torture/execute/930608-1.c execution, -Os
> > PASS: gcc.c-torture/execute/930614-1.c compilation, -O0
> > --- 8319,8328 ----
> > PASS: gcc.c-torture/execute/930608-1.c execution, -O1
> > PASS: gcc.c-torture/execute/930608-1.c compilation, -O2
> > PASS: gcc.c-torture/execute/930608-1.c execution, -O2
> > ! PASS: gcc.c-torture/execute/930608-1.c compilation, -O3
> > -fomit-frame-pointer
> > ! PASS: gcc.c-torture/execute/930608-1.c execution, -O3
> > -fomit-frame-pointer ! PASS: gcc.c-torture/execute/930608-1.c
> > compilation, -O3 -g
> > ! PASS: gcc.c-torture/execute/930608-1.c execution, -O3 -g
> > PASS: gcc.c-torture/execute/930608-1.c compilation, -Os
> > PASS: gcc.c-torture/execute/930608-1.c execution, -Os
> > PASS: gcc.c-torture/execute/930614-1.c compilation, -O0
> > ***************
> > *** 18846,18852 ****
> > PASS: gcc.dg/loop-1.c (test for excess errors)
> > PASS: gcc.dg/loop-2.c (test for excess errors)
> > PASS: gcc.dg/loop-2.c execution test
> > ! FAIL: gcc.dg/loop-3.c (test for excess errors)
> > PASS: gcc.dg/loop-4.c (test for excess errors)
> > PASS: gcc.dg/loop-4.c execution test
> > PASS: gcc.dg/loop-5.c (test for excess errors)
> > --- 18846,18852 ----
> > PASS: gcc.dg/loop-1.c (test for excess errors)
> > PASS: gcc.dg/loop-2.c (test for excess errors)
> > PASS: gcc.dg/loop-2.c execution test
> > ! PASS: gcc.dg/loop-3.c (test for excess errors)
> > PASS: gcc.dg/loop-4.c (test for excess errors)
> > PASS: gcc.dg/loop-4.c execution test
> > PASS: gcc.dg/loop-5.c (test for excess errors)
> > ***************
> > *** 24656,24666 ****
> >
> > === gcc Summary ===
> >
> > ! # of expected passes 23105
> > ! # of unexpected failures 314
> > # of unexpected successes 3
> > # of expected failures 67
> > ! # of unresolved testcases 128
> > # of untested testcases 25
> > # of unsupported tests 962
> > /home/bmh/gnucvs/gcc343/build/gcc/xgcc version 3.4.3
> > --- 24656,24666 ----
> >
> > === gcc Summary ===
> >
> > ! # of expected passes 23120
> > ! # of unexpected failures 301
> > # of unexpected successes 3
> > # of expected failures 67
> > ! # of unresolved testcases 126
> > # of untested testcases 25
> > # of unsupported tests 962
> > /home/bmh/gnucvs/gcc343/build/gcc/xgcc version 3.4.3
- [avr-libc-dev] Considerable Compiler improvement neeeds testing,
Björn Haase <=