gcc/config/h8300/h8300.mdに
"0 /* Disable because it breaks compiling fp-bit.c. */
というところが2箇所あります
ここを1にすると何が起こるかというと
../../../../gcc-4.7.2/libgcc/fp-bit.c: In function ‘__subsf3’:
../../../../gcc-4.7.2/libgcc/fp-bit.c:772:1: error: insn does not satisfy its constraints:
(insn 63 20 22 2 (set (mem/c:QI (plus:SI (reg/f:SI 6 r6)
(const_int -15 [0xfffffffffffffff1])) [0 b.sign+0 S1 A8])
(xor:QI (mem/c:QI (plus:SI (reg/f:SI 6 r6)
(const_int -15 [0xfffffffffffffff1])) [0 b.sign+0 S1 A8])
(const_int 1 [0x1]))) ../../../../gcc-4.7.2/libgcc/fp-bit.c:767 170 {xorqi3_1}
(nil))
../../../../gcc-4.7.2/libgcc/fp-bit.c:772:1: internal compiler error: in
copyprop_hardreg_forward_1, at regcprop.c:767
Please submit a full bug report,with preprocessed source if appropriate.See <http://gcc.gnu.org/bugs.html> for instructions.上のエラーでビルドが失敗します。
(xor:QIの部分に注目して、どこが間違ってるかを探して見ました。
gcc/config/h8300/h8300.md
@@ -2174,7 +2174,7 @@
[(set_attr "length" "8")])
(define_insn "xorqi3_1"
- [(set (match_operand:QI 0 "bit_operand" "=U,r")
+ [(set (match_operand:QI 0 "bit_operand" "=U,rQ")
(xor:QI (match_operand:QI 1 "bit_operand" "%0,0")
(match_operand:QI 2 "h8300_src_operand" "Y2,rQi")))]
"TARGET_H8300SX || register_operand (operands[0], QImode)
他のbit操作系の記述とと比較すると、Qが抜けてるだけでした。
[0回]
PR