ICE on m68k-linux in 3_4-branch

Bernardo Innocenti bernie@develer.com
Tue Jun 1 13:11:00 GMT 2004


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/



More information about the Gcc mailing list