This is the mail archive of the gcc-patches@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] |
Hi, You will find enclosed the renewed version of my december suggestions concerning improved handling of int constants and mixed QI/HI/SI mode expressions. In the december version there had been quite a number of bugs. Namely, I have had some trouble to make shure that reload still succeeds always also for sign/zero-extended expressions. I think that it now works. I have run the test suite against present head 4.0.0. using simulavr for the atmega128. I have observed that this patch removes the following bugs: >Tests that now work, but didn't before: > >gcc.dg/c99-intconst-1.c (test for excess errors) > >New tests that PASS: > >gcc.c-torture/execute/arith-rand.c execution, -O0 >gcc.c-torture/execute/arith-rand.c execution, -O1 >gcc.c-torture/execute/arith-rand.c execution, -O2 >gcc.c-torture/execute/arith-rand.c execution, -O3 -g I know that the method I have used is rather ugly since it is completely in line with the present structure of the avr back-end in that it does not split any instruction pattern before generation of the assembler output. As I told you, I am presently studying how to best implement the splitting. I fear however, that it might take some time before a back-end version with splitting generates better code than the present state. Since I consider my patch to be an improvement for mixed SI/HI/QI mode expressions both for excecution time and run-time in comparison to the present state, it might serve as a temporary bug-fix and as workaround for the wasted registers when mixing modes until the problem is solved by removing it's true origin. Yours, Björn
Attachment:
patch.gz
Description: GNU Zip compressed data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |