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: gcc-3.3 problem with reloading byte into address register onColdFire


>here's the movqi pattern for ColdFire:
>
>(define_insn ""
>  [(set (match_operand:QI 0 "nonimmediate_operand" "=d<Q>,dm,d*a")
>	(match_operand:QI 1 "general_src_operand" "dmi,d<Q>,di*a"))]
>  "TARGET_COLDFIRE"
>  "* return output_move_qimode (operands);")
>
>I'm guessing the 'a' constraint is *really* bad for this
>pattern. Perhaps it should look like:
>
>(define_insn ""
>  [(set (match_operand:QI 0 "nonimmediate_operand" "=d<Q>,dm,d")
>	(match_operand:QI 1 "general_src_operand" "dmi,d<Q>,di"))]
>  "TARGET_COLDFIRE"
>  "* return output_move_qimode (operands);")
>
>I'll try this out on the testcase and see if it suppresses the
>problem.

That change bombed the cmopiler while building it:

m68k-elf-gcc -B/home/peter/work/cvs-local/xgcc/obj/m68k-elf-3.3/m68k-elf-newlib/m68k-elf/m5200/newlib/ -isystem /home/peter/work/cvs-local/xgcc/obj/m68k-elf-3.3/m68k-elf-newlib/m68k-elf/m5200/newlib/targ-include -isystem /home/peter/work/cvs-local/xgcc/newlib-1.11.0/newlib/libc/include  -m5200 -DPACKAGE=\"newlib\" -DVERSION=\"1.11.0\"  -I. -I/home/peter/work/cvs-local/xgcc/newlib-1.11.0/newlib/libc/stdlib  -O2 -DCOMPACT_CTYPE -DMISSING_SYSCALL_NAMES -fno-builtin      -O2 -g -O2  -m5200 -c /home/peter/work/cvs-local/xgcc/newlib-1.11.0/newlib/libc/stdlib/dtoa.c
/home/peter/work/cvs-local/xgcc/newlib-1.11.0/newlib/libc/stdlib/dtoa.c: In function `_dtoa_r':
/home/peter/work/cvs-local/xgcc/newlib-1.11.0/newlib/libc/stdlib/dtoa.c:854: error: insn does not satisfy its constraints:
(insn 2911 1805 2909 189 (nil) (set (reg:QI 1 %d1)
        (reg:QI 13 %a5)) 37 {*m68k.md:1060} (nil)
    (nil))
/home/peter/work/cvs-local/xgcc/newlib-1.11.0/newlib/libc/stdlib/dtoa.c:854: internal compiler error: in reload_cse_simplify_operands, at reload1.c:8348
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[8]: *** [dtoa.o] Error 1
make[8]: Leaving directory `/home/peter/work/cvs-local/xgcc/obj/m68k-elf-3.3/m68k-elf-newlib/m68k-elf/m5200/newlib/libc/stdlib'

I'll try out CANNOT_CHANGE_MODE_CLASS to prevent QImode in ADDR_REGS.

-- 
Peter Barada
peter@baradas.org


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