[Bug target/13803] New: movqi operand constraints too restrictive

bernie at develer dot com gcc-bugzilla@gcc.gnu.org
Wed Jan 21 22:21:00 GMT 2004


for TARGET_COLDFIRE
X-Bugzilla-Reason: CC

Please reopen this bug for 3.4.0. The summary should read
something like "movqi operand constraints too restrictive
for TARGET_COLDFIRE"

This ICE was already present in 3.0.4 (PR c/5753), but
keeps appearing intermittently, probably triggered by
middle-end changes.

The ICE can be triggered on 3.3-branch and it was
apparently latent in mainline until after the 20030107
snapshot.  Both 20030114 and 20030121 consistently show
it.

The problem has also been discussed shortly here:
  http://gcc.gnu.org/ml/gcc/2004-01/msg00458.html

It seems this bug could be fixed by adding a new
insn for TARGET_COLDFIRE with relaxed constraints
and perhaps a longer/slower instruction sequence.


m68k-uclinux-gcc  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing
 -Os  -Wa,--bitwise-or -I/usr/local/src/uclinux-tools/linux-2.6.x/include -m5200
  -msoft-float -fno-builtin -nostdinc -D_LIBC -I../../include -I.
-I/usr/local/lib/gcc/m68k-uclinux/3.4.0/include -DNDEBUG -DL__fpmaxtostr
printf.c -c -o _fpmaxtostr.o
printf.c: In function `_fpmaxtostr':
printf.c:2454: error: insn does not satisfy its constraints:
(insn 1378 536 537 38 (set (reg:QI 8 %a0)
        (mem:QI (plus:SI (reg/f:SI 14 %a6)
                (const_int -209 [0xffffff2f])) [0 mode+0 S1 A8])) 33
{*m68k.md:825} (nil)
    (nil))
printf.c:2454: internal compiler error: in reload_cse_simplify_operands, at
postreload.c:378



This is the offending pattern:

(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"))]
  "!TARGET_COLDFIRE"
  "* return output_move_qimode (operands);")

(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);")

-- 
           Summary: movqi operand constraints too restrictive
                    for TARGET_COLDFIRE
           Product: gcc
           Version: 3.4.0
            Status: UNCONFIRMED
          Severity: critical
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bernie at develer dot com
                CC: gcc-bugs at gcc dot gnu dot org,schwab at suse dot de
GCC target triplet: m68k-unknown-elf m68k-unkwnown-uclinux, probably others


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13803



More information about the Gcc-bugs mailing list