I am unable to build a m68hc11 cross-compiler on 64-bit architectures. xgcc
generates an internal compiler error during the build of libgcc2.

Here is a reduced testcase:

typedef struct
{
  char a;
  int b;
} foo;

void ice()
{
  int c;
  foo * bar;

  // one of the two following instructions causes ICE
  bar->b = (c << 7L);
  bar->b = (c | 1);
}

and the output error:
fp-bit.c: In function `ice':
fp-bit.c:15: error: insn does not satisfy its constraints:
(insn 13 12 14 0 0x20000000002dc720 (parallel [
            (set (mem/s/j:SI (plus:HI (mem:HI (plus:HI (reg/f:HI 9 *_.frame)
                                (const_int 7 [0x7])) [0 S2 A8])
                        (const_int 1 [0x1])) [0 <variable>.b+0 S4 A8])
                (reg:SI 0 x [54]))
            (clobber (scratch:HI))
        ]) 20 {movsi_internal} (nil)
    (nil))
fp-bit.c:15: internal compiler error: in final_scan_insn, at final.c:2722
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

Please note that if the a and b declarations are swapped, the source is built
without problem. I also tested this code on other 64-bit architectures (amd64
and alpha) and the problem is not present.

-- 
           Summary: ICE when building a m68hc11 cross-compiler on ia64
           Product: gcc
           Version: 3.3.5
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c
        AssignedTo: ciceron at gcc dot gnu dot org
        ReportedBy: aurelien at aurel32 dot net
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: ia64-unknown-linux-gnu
  GCC host triplet: ia64-unknown-linux-gnu
GCC target triplet: m68hc11


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

Reply via email to