This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
I've patched my gcc-3.4.0 and gcc-3.4.1 trees to fix this. The problem was that the subsi3 pattern allows a label-ref to be subtracced from a general memory operand, something that is illegal for ColdFire, but legal for 68k.
Could you try building gcc-3.4.0/gcc-3.4.1 from my CVS server and testing them again? If that passes, then I'll submit a patch to mainline.
The compilation passes for now, the subsi3 bug dissapeared. But when trying compile bigger project (output binary file has about 200kB) with optimalization enabled (CFLAGS += -O or CFLAGS += -O2), internal error occured (see attached compiler output report). Compilation process passes successfully without optimalization enabled. I am sorry not to attach project *.c and *.h source files, but I have no permission of author to do it (it is not my project). I hope compiler output report will be enough to detect the compilation fail.
Is there anyway to run C/Diagnostika_main.c throught the preprocess (using -E) and then trime out everything except the fucntion that ends at line 422, and any variable/type defintions used in the function?
From the ouptut I see that someone has decided that it can mix mode5source addressing with mode6 destination addression, something that is illegal on ColdFire. I need to be able to debug why that insn was constructed.
I have been successful in manifesting the bug in simple piece of code. I do not know, if it is the same problem mentioned above, but I hope it is. Snippet of code as well as compiler output attached.
char *bug(void) { unsigned int i; char *x; static char ser[20]; for(i=0;i<9;i++) ser[i] = x[i] + i + 20; }
[root@honza C]/usr/m68k-elf-3.4.1/bin/m68k-elf-gcc -g -O -m528x -Wall -c -o ./bug2.o ./bug2.c ./bug2.c: In function `bug': ./bug2.c:10: warning: control reaches end of non-void function ./bug2.c:5: warning: 'x' might be used uninitialized in this function ./bug2.c:10: error: insn does not satisfy its constraints: (insn 63 19 21 1 ./bug2.c:9 (set (reg:QI 11 %a3) (mem:QI (plus:SI (reg/v/f:SI 10 %a2 [orig:32 x ] [32]) (reg/v:SI 0 %d0 [orig:31 i ] [31])) [0 S1 A8])) 33 {*m68k.md:826} (nil) (nil)) ./bug2.c:10: internal compiler error: in reload_cse_simplify_operands, at postreload.c:378 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions.
------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |