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]
Other format: [Raw text]

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

-------------------------------------------------------


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