This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: CC0 to CCmode conversion
- From: Björn Haase <bjoern dot m dot haase at web dot de>
- To: gcc at gcc dot gnu dot org
- Date: Sat, 19 Mar 2005 10:53:55 +0100
- Subject: Re: CC0 to CCmode conversion
Hi Denis,
I have had a look at your patch. It generally seems to work. Presently it
still misses some optimization where the old cc0 back-end was smarter. The
testsuite also reports a couple of new failures.
Yours,
Björn.
Here are a couple of cases where the old cc0 interface generated better code:
--- ./cc0/test.s 2005-03-09 21:45:49.000000000 +0100
+++ ./CC/test.s 2005-03-18 22:40:20.000000000 +0100
@@ -96,19 +96,21 @@
- cpi r17,lo8(31)
+ cpi r17,lo8(30)
+ breq .+2
brsh .L14
- cpi r17,lo8(30)
+ cpi r17,lo8(29)
+ breq .L18
brlo .L18
@@ -405,7 +415,7 @@
/* prologue end (size=0) */
call Hardware_SetRedLED
lds r18,g_ucBuzzerOff
- tst r18
+ cpi r18,lo8(0)
brne .L82
ldi r24,lo8(1000)
ldi r25,hi8(1000)
ldi r17,hi8(25)
rjmp .L151
.L147:
- cp __zero_reg__,r22
- cpc __zero_reg__,r23
- brlt .L151
+ cp r22,__zero_reg__
+ cpc r23,__zero_reg__
+ breq .+2
+ brpl .L151
Results from the testsuite run:
Tests that now fail, but worked before:
gcc.c-torture/compile/20031220-2.c -O1 (test for excess errors)
gcc.c-torture/compile/20031220-2.c -O2 (test for excess errors)
gcc.c-torture/compile/20031220-2.c -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions (test for excess errors)
gcc.c-torture/compile/20031220-2.c -O3 -fomit-frame-pointer -funroll-loops
(test for excess errors)
gcc.c-torture/compile/20031220-2.c -O3 -fomit-frame-pointer (test for
excess errors)
gcc.c-torture/compile/20031220-2.c -O3 -g (test for excess errors)
gcc.c-torture/compile/20031220-2.c -Os (test for excess errors)
gcc.c-torture/execute/20030606-1.c execution, -O1
gcc.c-torture/execute/20030606-1.c execution, -O2
gcc.c-torture/execute/20030606-1.c execution, -O3 -fomit-frame-pointer
gcc.c-torture/execute/20030606-1.c execution, -O3 -g
gcc.c-torture/execute/20030606-1.c execution, -Os
gcc.c-torture/execute/931004-6.c execution, -Os
gcc.c-torture/execute/builtins/memcmp.c execution, -O1
gcc.c-torture/execute/builtins/memcmp.c execution, -O2
gcc.c-torture/execute/builtins/memcmp.c execution, -O3 -fomit-frame-pointer
gcc.c-torture/execute/builtins/memcmp.c execution, -O3 -g
gcc.c-torture/execute/builtins/memcmp.c execution, -Os
gcc.c-torture/execute/compare-1.c execution, -O1
gcc.c-torture/execute/compare-1.c execution, -O2
gcc.c-torture/execute/compare-1.c execution, -Os
gcc.c-torture/execute/divcmp-1.c execution, -O1
gcc.c-torture/execute/divcmp-1.c execution, -O2
gcc.c-torture/execute/divcmp-4.c execution, -O1
gcc.c-torture/execute/divcmp-4.c execution, -O2
gcc.c-torture/execute/int-compare.c execution, -O1
gcc.c-torture/execute/int-compare.c execution, -O2
New tests that FAIL:
gcc.dg/tree-ssa/ssa-ccp-3.c scan-tree-dump-times link_error 0
New tests that PASS:
gcc.dg/tree-ssa/20030731-2.c scan-tree-dump-times if 1
gcc.dg/tree-ssa/20030917-1.c scan-tree-dump-times foo .defval 1
gcc.dg/tree-ssa/20030917-3.c scan-tree-dump-times printf.*, 0 1
gcc.dg/tree-ssa/20030922-2.c scan-tree-dump-times if 2
gcc.dg/tree-ssa/20031015-1.c scan-tree-dump-times V_MAY_DEF 2
gcc.dg/tree-ssa/20031022-1.c scan-tree-dump-times entry_exit_blocks.1..pred 1
gcc.dg/tree-ssa/20040210-1.c scan-tree-dump-times if 2
gcc.dg/tree-ssa/20040216-1.c scan-tree-dump-times Deleted dead store 2
gcc.dg/tree-ssa/20040305-1.c scan-tree-dump-times if 2
gcc.dg/tree-ssa/20040305-1.c scan-tree-dump-times Replaced 1
gcc.dg/tree-ssa/20040513-1.c scan-tree-dump-times \(_Bool\) 0
gcc.dg/tree-ssa/20040513-2.c scan-tree-dump-times link_error 0
gcc.dg/tree-ssa/20040514-1.c scan-tree-dump-times if 0
gcc.dg/tree-ssa/20040518-1.c scan-tree-dump-times if 0
gcc.dg/tree-ssa/20040518-2.c scan-tree-dump-times ABS_EXPR 1
gcc.dg/tree-ssa/20040518-2.c scan-tree-dump-times straightline 1
gcc.dg/tree-ssa/20040615-1.c scan-tree-dump-times bar2 0
gcc.dg/tree-ssa/20040624-1.c scan-tree-dump-times if 1
gcc.dg/tree-ssa/20040703-1.c scan-tree-dump-times 0\.0 0
gcc.dg/tree-ssa/20040721-1.c scan-tree-dump-times = G; 0
gcc.dg/tree-ssa/20040729-1.c scan-tree-dump-times &x 0
gcc.dg/tree-ssa/20040911-1.c scan-tree-dump-not VUSE <c
gcc.dg/tree-ssa/20041002-1.c scan-tree-dump-times if 0
gcc.dg/tree-ssa/cfgcleanup-1.c scan-tree-dump-times if 0
gcc.dg/tree-ssa/copy-headers.c scan-tree-dump-times Duplicating header 1
gcc.dg/tree-ssa/pr15349.c scan-tree-dump-times PHI 1
gcc.dg/tree-ssa/pr19633.c scan-tree-dump-times GLOBAL_VAR 0
gcc.dg/tree-ssa/ssa-ccp-10.c scan-tree-dump-times strlen 0
gcc.dg/tree-ssa/ssa-ccp-1.c scan-tree-dump-times link_error 0
gcc.dg/tree-ssa/ssa-ccp-2.c scan-tree-dump-times link_error 0
gcc.dg/tree-ssa/ssa-ccp-7.c scan-tree-dump-times link_error 0
gcc.dg/tree-ssa/ssa-ccp-9.c scan-tree-dump-times link_error 0
gcc.dg/tree-ssa/ssa-dce-1.c scan-tree-dump-times if 0
gcc.dg/tree-ssa/ssa-dce-2.c scan-tree-dump-times if 0
gcc.dg/tree-ssa/ssa-dom-ccp-1.c scan-tree-dump-times Replaced.*with constant
'4' 1
gcc.dg/tree-ssa/ssa-dom-cse-1.c scan-tree-dump-times Replaced.* t 1
gcc.dg/tree-ssa/ssa-dom-thread-1.c scan-tree-dump-times Threaded 2
gcc.dg/tree-ssa/ssa-pre-1.c scan-tree-dump-times Eliminated:1 1
gcc.dg/tree-ssa/ssa-pre-2.c scan-tree-dump-times Eliminated:1 1
gcc.dg/tree-ssa/ssa-pre-3.c scan-tree-dump-times Eliminated:2 1
gcc.dg/tree-ssa/ssa-pre-4.c scan-tree-dump-times Eliminated:1 1
gcc.dg/tree-ssa/ssa-pre-5.c scan-tree-dump-times Constified:1 1
gcc.dg/tree-ssa/ssa-pre-6.c scan-tree-dump-times Eliminated:1 1
gcc.dg/tree-ssa/tailrecursion-1.c scan-tree-dump-times Eliminated tail
recursion 1
gcc.dg/tree-ssa/tailrecursion-2.c scan-tree-dump-times Eliminated tail
recursion 1
gcc.dg/tree-ssa/tailrecursion-3.c scan-tree-dump-times Eliminated tail
recursion 1
gcc.dg/tree-ssa/tailrecursion-4.c scan-tree-dump-times Eliminated tail
recursion 2
Old tests that passed, that have disappeared: (Eeek!)
gcc.c-torture/execute/20050203-1.c execution, -Os
gcc.c-torture/execute/multi-ix.c execution, -O2
gcc.c-torture/execute/multi-ix.c execution, -O3 -fomit-frame-pointer
gcc.c-torture/execute/multi-ix.c execution, -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions
gcc.c-torture/execute/multi-ix.c execution, -O3 -fomit-frame-pointer
-funroll-loops
gcc.c-torture/execute/multi-ix.c execution, -O3 -g
-------------------------------------------------------