This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
ICE on m68k-linux in 3_4-branch
- From: Bernardo Innocenti <bernie at develer dot com>
- To: GCC Mailing List <gcc at gcc dot gnu dot org>
- Cc: Peter Barada <peter at baradas dot org>
- Date: Tue, 01 Jun 2004 15:10:56 +0200
- Subject: ICE on m68k-linux in 3_4-branch
- Organization: Develer S.r.l.
Hello,
I've got this ICE in stage2 bootstrapping gcc-3_4-branch
on m68k-linux:
---cut---
./xgcc -B./ -B/home/bernie/src/gcc-3.4-install/m68k-unknown-linux-gnu/bin/ -isystem /home/bernie/src/gcc-3.4-install/m68k-unknown-linux-gnu/include -isystem /home/bernie/src/gcc-3.4-install/m68k-unknown-linux-gnu/sys-include -L/home/bernie/src/gcc-3.4-build/gcc/../ld -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../gcc-3.4/gcc -I../../gcc-3.4/gcc/. -I../../gcc-3.4/gcc/../include -DL_gcov -c ../../gcc-3.4/gcc/libgcov.c -o libgcc/./_gcov.o
../../gcc-3.4/gcc/libgcov.c: In function `gcov_exit':
../../gcc-3.4/gcc/libgcov.c:556: error: unrecognizable insn:
(insn 640 631 632 45 ../../gcc-3.4/gcc/gcov-io.h:571 (set (strict_low_part (reg:QI 0 %d0))
(const_int 1 [0x1])) -1 (nil)
(nil))
../../gcc-3.4/gcc/libgcov.c:556: internal compiler error: in extract_insn, at recog.c:2083
---cut---
Reading rtl.texi, I can't make sense of the RTL expression
"(strict_low_part (reg:QI 0 %d0))". An argument appears to
be missing:
---cut---
`(strict_low_part (subreg:M (reg:N R) 0))'
This expression code is used in only one context: as the
destination operand of a `set' expression. In addition, the
operand of this expression must be a non-paradoxical `subreg'
expression.
The presence of `strict_low_part' says that the part of the
register which is meaningful in mode N, but is not part of mode M,
is not to be altered. Normally, an assignment to such a subreg is
allowed to have undefined effects on the rest of the register when
M is less than a word.
---cut---
There should be two modes, but I can only see QI.
This is the pattern in m68k.md:
---cut---
(define_expand "movstrictqi"
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" ""))
(match_operand:QI 1 "general_src_operand" ""))]
""
"")
(define_insn ""
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+dm"))
(match_operand:QI 1 "general_src_operand" "dmSn"))]
"!TARGET_COLDFIRE"
"* return output_move_strictqi (operands);")
(define_insn ""
[(set (strict_low_part (match_operand:QI 0 "nonimmediate_operand" "+d,m"))
(match_operand:QI 1 "general_src_operand" "dmn,d"))]
"TARGET_COLDFIRE"
"* return output_move_strictqi (operands);")
---cut---
--
// Bernardo Innocenti - Develer S.r.l., R&D dept.
\X/ http://www.develer.com/