This is the mail archive of the 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: m68k bootstrapping broken

Bernardo Innocenti <> writes:

> printf.c:2451: error: insn does not satisfy its constraints:
> (insn 1379 542 543 38 (nil) (set (reg:QI 8 %a0)
>         (mem:QI (plus:SI (reg/f:SI 14 %a6)
>                         (const_int -209 [0xffffff2f])) [0 mode S1 A8])) 37 {*} (nil)
>                             (nil))

This tries to move a QImode from memory to an address register.
has this pattern for movqi:

(define_expand "movqi"
  [(set (match_operand:QI 0 "nonimmediate_operand" "")
        (match_operand:QI 1 "general_src_operand" ""))]

(define_insn ""
  [(set (match_operand:QI 0 "nonimmediate_operand" "=d,*a,m")
	(match_operand:QI 1 "general_src_operand" "dmSi*a,di*a,dmSi"))]
  "* return output_move_qimode (operands);")

And indeed this combination of operands is not allowed by the constraints.
Shouldn't the define_expand reject this in the first place, or is there
some other mechanism to tell the reload pass not to generate such an insn?


Andreas Schwab, SuSE Labs,
SuSE Linux AG, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

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