https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11180
Andrew Pinski changed:
What|Removed |Added
Status|NEW |RESOLVED
Target Milestone|---
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11180
Georg-Johann Lay gjl at gcc dot gnu.org changed:
What|Removed |Added
Priority|P2 |P4
--- Comment #29 from eric dot weddington at atmel dot com 2008-02-19 02:47
---
Rask's patch (gcc-4.3-bug-11180-experimental.patch) causes worse code for the
test case in bug #32871, than without the patch.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11180
--- Comment #28 from hutchinsonandy at aim dot com 2008-02-02 15:44 ---
The patch and suggestions on this are valid. However, memory moves -
particular with base pointers, may require additional instruction to be added
to reach required displacments. Splitting such moves may well incur
--- Comment #27 from eweddington at cso dot atmel dot com 2007-09-19 17:57
---
Created an attachment (id=14224)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14224action=view)
Rask's patch modified from comments.
Here is Rask's patch again, but slightly modified from the
--- Comment #23 from rask at gcc dot gnu dot org 2007-09-18 07:14 ---
configure:10398: error: unrecognizable insn:
(insn 105 104 106 2 (set (subreg:QI (reg/f:HI 52) 0)
(subreg:QI (label_ref:HI 57) 0)) -1 (nil))
configure:10398: internal compiler error: in extract_insn, at
--- Comment #24 from eweddington at cso dot atmel dot com 2007-09-18 19:06
---
Subject: RE: [avr-gcc] Optimization decrease performance of
struct assignment.
--- Comment #23 from rask at gcc dot gnu dot org
In define_insn_and_split *movhi, add the line
LABEL_REF !=
--- Comment #25 from rask at gcc dot gnu dot org 2007-09-18 19:49 ---
c:/avrdev/gcc/gcc-4.3-20070914/libobjc/Object.m:66: error: unrecognizable
insn:
(insn 54 4 55 2 c:/avrdev/gcc/gcc-4.3-20070914/libobjc/Object.m:65 (set
(reg:QI 22 r22 [ D.2345 ])
(subreg:QI (const:HI
--- Comment #26 from eweddington at cso dot atmel dot com 2007-09-19 05:28
---
Subject: RE: [avr-gcc] Optimization decrease performance of
struct assignment.
c:/avrdev/gcc/gcc-4.3-20070914/libobjc/Object.m:66: error:
unrecognizable
insn:
(insn 54 4 55 2
--- Comment #21 from rask at gcc dot gnu dot org 2007-09-17 11:13 ---
It's probably someting simple, see config.log. Like I said, the patch is a
quick and dirty one and the AVR back end can use more work than that, most of
which means deleting patterns. Examples: All and, ior, xor,
--- Comment #22 from eweddington at cso dot atmel dot com 2007-09-17 22:53
---
Subject: RE: [avr-gcc] Optimization decrease performance of
struct assignment.
--- Comment #21 from rask at gcc dot gnu dot org
2007-09-17 11:13 ---
It's probably someting simple, see
--- Comment #15 from rask at gcc dot gnu dot org 2007-09-16 12:57 ---
1. You should use define_insn_and_split.
2. If possible (which I think it is here), splitting before reload should
produc.e better code.
Btw, what is the ICE?
Also, it seems to me that avr.h defines MOVE_MAX
--- Comment #16 from rask at gcc dot gnu dot org 2007-09-16 13:38 ---
Created an attachment (id=14211)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14211action=view)
quick and dirty patch to reduce code size
A fundamental problem with the AVR back end is that it sabotages the RTL
--- Comment #17 from rask at gcc dot gnu dot org 2007-09-16 13:54 ---
The patch is against mainline revision 128431.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11180
--- Comment #18 from eweddington at cso dot atmel dot com 2007-09-16 15:44
---
Subject: RE: [avr-gcc] Optimization decrease performance of
struct assignment.
--- Comment #15 from rask at gcc dot gnu dot org
2007-09-16 12:57 ---
Also, it seems to me that avr.h defines
--- Comment #19 from rask at gcc dot gnu dot org 2007-09-16 17:30 ---
Created an attachment (id=14213)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14213action=view)
quick and dirty patch to reduce code size
Here's a patch which doesn't mess up the stack pointer update in the
--- Comment #20 from eweddington at cso dot atmel dot com 2007-09-17 02:31
---
Subject: RE: [avr-gcc] Optimization decrease performance of
struct assignment.
Here's a patch which doesn't mess up the stack pointer update
in the epilogue.
Hi Rask,
Your patch causes a
--- Comment #14 from dmixm at marine dot febras dot ru 2007-09-16 03:22
---
It was:
(define_insn movdi
[(set (match_operand:DI 0 nonimmediate_operand )
(match_operand:DI 1 general_operand ))]
#)
(define_split
[(set (match_operand:DI 0 nonimmediate_operand )
--- Comment #13 from eweddington at cso dot atmel dot com 2007-09-11 16:10
---
(In reply to comment #12)
Andy Hutchinson wrote (comment #6) that addition a 'movdi' instruction
improves
the result. I have try to add a very simple 'movdi' (which split into 2 SImode
instuctions). In
--- Comment #12 from dmixm at marine dot febras dot ru 2007-09-09 21:59
---
Andy Hutchinson wrote (comment #6) that addition a 'movdi' instruction improves
the result. I have try to add a very simple 'movdi' (which split into 2 SImode
instuctions). In result:
-O0 -- 85 words,
--- Comment #11 from eweddington at cso dot atmel dot com 2007-07-27 14:23
---
Subject: RE: [avr-gcc] Optimization decrease performance of
struct assignment.
--- Comment #10 from dmixm at marine dot febras dot ru
2007-07-27 01:24 ---
Yes, results are:
avr-gcc-3.3.6:
--- Comment #10 from dmixm at marine dot febras dot ru 2007-07-27 01:24
---
Yes, results are:
avr-gcc-3.3.6: O0 -- 75, O1,O2,O3,Os -- 79
avr-gcc-4.2.1: O0 -- 109, O1,O2,O3,Os -- 79
The mistake is corrected? It is possible to tell and so as now
application of keys of optimization
--- Comment #9 from eweddington at cso dot atmel dot com 2007-07-24 23:50
---
Version 4.2.1 offers somewhat better results:
With -O0:
.file test.c
/* File test.c: code 109 = 0x006d ( 74), prologues 18, epilogues 17 */
With -O[123s]:
.file test.c
/* File
--- Additional Comments From schlie at comcast dot net 2005-06-26 15:06
---
(In reply to comment #7)
(In reply to comment #6)
The problem here is that gcc is using a DImode register to handle 6 byte
(int+long) structure. Why I have no idea!
This is so it does not store it on the
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-06-26
02:25 ---
(In reply to comment #6)
The problem here is that gcc is using a DImode register to handle 6 byte
(int+long) structure. Why I have no idea!
This is so it does not store it on the stack. As I said in
--- Additional Comments From andrewhutchinson at cox dot net 2005-03-27
14:33 ---
The problem here is that gcc is using a DImode register to handle 6 byte
(int+long) structure. Why I have no idea!
Since the target has no insn for DI move, gcc turns this into individual QImode
byte
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-01-09
01:30 ---
One issue I find is that avr does not define_insn_and_split (or just
define_split) which will greatly
improve the code generation because the hi part of the QI would be zero and you
don't need to set it
27 matches
Mail list logo