help-rcs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

internal error in 3.3.3 building arm cross-compiler


From: Dave Denholm
Subject: internal error in 3.3.3 building arm cross-compiler
Date: Wed, 10 Mar 2004 22:16:57 +0000
User-agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.2 (usg-unix-v)

I was trying to install gcc 3.3.3 as a crosscompiler on solaris/x86 compiling
for arm-elf using "newlib"


I got an internal error when compiling some (thumb ?) code.
Since it's running the locally-built compiler, I assume it's trying to
compile some library code ?

The cross-compiler itself would be have been built using a native
(solaris/x86) gcc 2.95.2

eclipse:~/tmp$ gcc -dumpmachine
i386-pc-solaris2.8
eclipse:~/tmp$ gcc --version
2.95.2



dp-bit.c: In function `__pack_d':
dp-bit.c:411: error: insn does not satisfy its constraints:
(insn:HI 333 331 561 df99fec8 (set (reg:HI 3 r3 [109])
        (mem:HI (label_ref 584) [0 S2 A16])) 183 {*thumb_movhi_insn} 
(insn_list:REG_DEP_ANTI 330 (insn_list:REG_DEP_OUTPUT 329 (nil)))
    (expr_list:REG_EQUIV (const_int 2047 [0x7ff])
        (nil)))
dp-bit.c:411: internal compiler error: in extract_constrain_insn_cached, at 
recog.c:2090
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.



I hope there's enough information in the following to figure out the
problem (or recognise this as a duplicate report)



dd
-- 
Dave Denholm              <address@hidden>       http://www.esmertec.com



eclipse:~/tmp/gcc/bld-333$ gmake
gmake[1]: Entering directory `/home/eclipse/ddenholm/tmp/gcc/bld-333/libiberty'
gmake[2]: Entering directory 
`/home/eclipse/ddenholm/tmp/gcc/bld-333/libiberty/testsuite'
gmake[2]: Nothing to be done for `all'.
gmake[2]: Leaving directory 
`/home/eclipse/ddenholm/tmp/gcc/bld-333/libiberty/testsuite'
gmake[1]: Leaving directory `/home/eclipse/ddenholm/tmp/gcc/bld-333/libiberty'
gmake[1]: Entering directory `/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc'
(cd intl && gmake all)
gmake[2]: Entering directory `/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/intl'
gmake[2]: Nothing to be done for `all'.
gmake[2]: Leaving directory `/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/intl'
gmake GCC_FOR_TARGET="/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/xgcc 
-B/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/ -B/usr/local/arm-devsim-elf/bin/ 
-B/usr/local/arm-devsim-elf/lib/ -isystem /usr/local/arm-devsim-elf/include" \
  BUILD_PREFIX="" BUILD_PREFIX_1="loser-" \
  AR_FOR_TARGET="arm-devsim-elf-ar" \
  AR_CREATE_FOR_TARGET="arm-devsim-elf-ar  rc" \
  AR_FLAGS_FOR_TARGET="" \
  CFLAGS="-g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes 
-Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long " \
  RANLIB_FOR_TARGET="arm-devsim-elf-ranlib" \
  RANLIB_TEST_FOR_TARGET="[ -f arm-devsim-elf-ranlib ] || ( [ 
"i386-pc-solaris2.8" = "arm-devsim-elf" ] && [ -f /usr/bin/ranlib -o -f 
/bin/ranlib ] )" \
  NM_FOR_TARGET="/usr/local/arm-devsim-elf/bin/nm" AWK="nawk" \
  LIBGCC2_CFLAGS="-O2  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings 
-Wstrict-prototypes -Wmissing-prototypes -isystem ./include  -Dinhibit_libc 
-fno-inline -g  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc" \
  INCLUDES="-I. -I. -I../../gcc-3.3.3/gcc -I../../gcc-3.3.3/gcc/. 
-I../../gcc-3.3.3/gcc/config -I../../gcc-3.3.3/gcc/../include" \
  CONFIG_H="config.h auto-host.h ../../gcc-3.3.3/gcc/../include/ansidecl.h 
../../gcc-3.3.3/gcc/config/dbxelf.h ../../gcc-3.3.3/gcc/config/elfos.h 
../../gcc-3.3.3/gcc/config/arm/unknown-elf.h 
../../gcc-3.3.3/gcc/config/arm/elf.h ../../gcc-3.3.3/gcc/config/arm/aout.h 
../../gcc-3.3.3/gcc/config/arm/arm.h ../../gcc-3.3.3/gcc/defaults.h 
../../gcc-3.3.3/gcc/defaults.h insn-constants.h insn-flags.h" 
MACHMODE_H="machmode.h machmode.def 
../../gcc-3.3.3/gcc/config/arm/arm-modes.def" \
  LIB1ASMSRC='arm/lib1funcs.asm' \
  MAKEOVERRIDES= \
  -f libgcc.mk all
gmake[2]: Entering directory `/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc'
for d in libgcc thumb libgcc/thumb; do \
  if [ -d $d ]; then true; else /bin/sh ../../gcc-3.3.3/gcc/mkinstalldirs $d; 
fi; \
done
if [ -f stmp-dirs ]; then true; else touch stmp-dirs; fi
/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/xgcc 
-B/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/ -B/usr/local/arm-devsim-elf/bin/ 
-B/usr/local/arm-devsim-elf/lib/ -isystem /usr/local/arm-devsim-elf/include -O2 
 -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes 
-Wmissing-prototypes -isystem ./include  -Dinhibit_libc -fno-inline -g  
-DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I. 
-I../../gcc-3.3.3/gcc -I../../gcc-3.3.3/gcc/. -I../../gcc-3.3.3/gcc/config 
-I../../gcc-3.3.3/gcc/../include -DFINE_GRAINED_LIBRARIES -mthumb -DL_pack_df 
-c dp-bit.c -o libgcc/thumb/_pack_df.o
dp-bit.c: In function `__pack_d':
dp-bit.c:411: error: insn does not satisfy its constraints:
(insn:HI 333 331 561 df99fec8 (set (reg:HI 3 r3 [109])
        (mem:HI (label_ref 584) [0 S2 A16])) 183 {*thumb_movhi_insn} 
(insn_list:REG_DEP_ANTI 330 (insn_list:REG_DEP_OUTPUT 329 (nil)))
    (expr_list:REG_EQUIV (const_int 2047 [0x7ff])
        (nil)))
dp-bit.c:411: internal compiler error: in extract_constrain_insn_cached, at 
recog.c:2090
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
gmake[2]: *** [libgcc/thumb/_pack_df.o] Error 1
gmake[2]: Leaving directory `/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc'
gmake[1]: *** [stmp-multilib] Error 2
gmake[1]: Leaving directory `/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc'
gmake: *** [all-gcc] Error 2




eclipse:~/tmp/gcc/bld-333$ cd gcc
eclipse:~/tmp/gcc/bld-333/gcc$ 
eclipse:~/tmp/gcc/bld-333/gcc$ /home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/xgcc 
--verbose -save-temps -B/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/ 
-B/usr/local/arm-devsim-elf/bin/ -B/usr/local/arm-devsim-elf/lib/ -isystem 
/usr/local/arm-devsim-elf/include -O2  -DIN_GCC -DCROSS_COMPILE   -W -Wall 
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include  
-Dinhibit_libc -fno-inline -g  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED 
-Dinhibit_libc -I. -I. -I../../gcc-3.3.3/gcc -I../../gcc-3.3.3/gcc/. 
-I../../gcc-3.3.3/gcc/config -I../../gcc-3.3.3/gcc/../include 
-DFINE_GRAINED_LIBRARIES -mthumb -DL_pack_df -c dp-bit.c -o 
libgcc/thumb/_pack_df.o
Reading specs from /home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/specs
Configured with: ../gcc-3.3.3/configure --target=arm-devsim-elf 
--enable-languages=c --with-newlib
Thread model: single
gcc version 3.3.3
 /home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/cc1 -E -quiet -v -I. -I. 
-I../../gcc-3.3.3/gcc -I../../gcc-3.3.3/gcc/. -I../../gcc-3.3.3/gcc/config 
-I../../gcc-3.3.3/gcc/../include -iprefix 
/home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/../lib/gcc-lib/arm-devsim-elf/3.3.3/ 
-isystem /home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/include -isystem 
/usr/local/arm-devsim-elf/bin/include -isystem 
/usr/local/arm-devsim-elf/lib/include -D__GNUC__=3 -D__GNUC_MINOR__=3 
-D__GNUC_PATCHLEVEL__=3 -D__ARM_ARCH_4T__ -D__ELF__ -D__USES_INITFINI__ 
-DIN_GCC -DCROSS_COMPILE -Dinhibit_libc -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED 
-Dinhibit_libc -DFINE_GRAINED_LIBRARIES -DL_pack_df -isystem 
/usr/local/arm-devsim-elf/include -isystem ./include dp-bit.c -mthumb -W -Wall 
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -fno-inline -O2 
dp-bit.i
ignoring nonexistent directory "/usr/local/arm-devsim-elf/bin/include"
ignoring nonexistent directory "/usr/local/arm-devsim-elf/lib/include"
ignoring nonexistent directory 
"/home/eclipse/ddenholm/tmp/gcc/bld-333/lib/gcc-lib/arm-devsim-elf/3.3.3/include"
ignoring nonexistent directory 
"/home/eclipse/ddenholm/tmp/gcc/bld-333/lib/gcc-lib/arm-devsim-elf/3.3.3/../../../../arm-devsim-elf/sys-include"
ignoring nonexistent directory 
"/home/eclipse/ddenholm/tmp/gcc/bld-333/lib/gcc-lib/arm-devsim-elf/3.3.3/../../../../arm-devsim-elf/include"
ignoring nonexistent directory 
"/usr/local/lib/gcc-lib/arm-devsim-elf/3.3.3/include"
ignoring duplicate directory "."
ignoring duplicate directory "../../gcc-3.3.3/gcc"
ignoring duplicate directory "include"
ignoring duplicate directory "/usr/local/arm-devsim-elf/include"
#include "..." search starts here:
#include <...> search starts here:
 .
 ../../gcc-3.3.3/gcc
 ../../gcc-3.3.3/gcc/config
 ../../gcc-3.3.3/include
 /home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/include
 /usr/local/arm-devsim-elf/include
 /usr/local/arm-devsim-elf/sys-include
End of search list.
 /home/eclipse/ddenholm/tmp/gcc/bld-333/gcc/cc1 -fpreprocessed dp-bit.i -quiet 
-dumpbase dp-bit.c -mthumb -auxbase-strip libgcc/thumb/_pack_df.o -g -O2 -W 
-Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -version 
-fno-inline -o dp-bit.s
GNU C version 3.3.3 (arm-devsim-elf)
        compiled by GNU C version 2.95.2 19991024 (release).
GGC heuristics: --param ggc-min-expand=56 --param ggc-min-heapsize=49095
dp-bit.c: In function `__pack_d':
dp-bit.c:411: error: insn does not satisfy its constraints:
(insn:HI 333 331 561 df9fbec8 (set (reg:HI 3 r3 [109])
        (mem:HI (label_ref 584) [0 S2 A16])) 183 {*thumb_movhi_insn} 
(insn_list:REG_DEP_ANTI 330 (insn_list:REG_DEP_OUTPUT 329 (nil)))
    (expr_list:REG_EQUIV (const_int 2047 [0x7ff])
        (nil)))
dp-bit.c:411: internal compiler error: in extract_constrain_insn_cached, at 
recog.c:2090
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
eclipse:~/tmp/gcc/bld-333/gcc$ 
eclipse:~/tmp/gcc/bld-333/gcc$ cat dp-bit.i
# 1 "dp-bit.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "dp-bit.c"
# 50 "dp-bit.c"
# 1 "tconfig.h" 1





struct rtx_def;
typedef struct rtx_def *rtx;
struct rtvec_def;
typedef struct rtvec_def *rtvec;
union tree_node;
typedef union tree_node *tree;



# 1 "../../gcc-3.3.3/include/ansidecl.h" 1
# 16 "tconfig.h" 2
# 1 "../../gcc-3.3.3/gcc/config/dbxelf.h" 1
# 17 "tconfig.h" 2
# 1 "../../gcc-3.3.3/gcc/config/elfos.h" 1
# 18 "tconfig.h" 2
# 1 "../../gcc-3.3.3/gcc/config/arm/unknown-elf.h" 1
# 19 "tconfig.h" 2
# 1 "../../gcc-3.3.3/gcc/config/arm/elf.h" 1
# 20 "tconfig.h" 2
# 1 "../../gcc-3.3.3/gcc/config/arm/aout.h" 1
# 21 "tconfig.h" 2
# 1 "../../gcc-3.3.3/gcc/config/arm/arm.h" 1
# 102 "../../gcc-3.3.3/gcc/config/arm/arm.h"
typedef enum arm_cond_code
{
  ARM_EQ = 0, ARM_NE, ARM_CS, ARM_CC, ARM_MI, ARM_PL, ARM_VS, ARM_VC,
  ARM_HI, ARM_LS, ARM_GE, ARM_LT, ARM_GT, ARM_LE, ARM_AL, ARM_NV
}
arm_cc;

extern arm_cc arm_current_cc;



extern int arm_target_label;
extern int arm_ccfsm_state;
extern rtx arm_target_insn;

extern int target_flags;

extern const char * target_fp_name;


extern rtx arm_compare_op0;
extern rtx arm_compare_op1;

extern rtx pool_vector_label;


extern int return_used_this_function;

extern rtx aof_pic_label;
# 504 "../../gcc-3.3.3/gcc/config/arm/arm.h"
struct arm_cpu_select
{
  const char * string;
  const char * name;
  const struct processors * processors;
};




extern struct arm_cpu_select arm_select[];

enum prog_mode_type
{
  prog_mode26,
  prog_mode32
};




extern enum prog_mode_type arm_prgmode;



enum floating_point_type
{
  FP_HARD,
  FP_SOFT2,
  FP_SOFT3
};





extern enum floating_point_type arm_fpu;


extern enum floating_point_type arm_fpu_arch;
# 553 "../../gcc-3.3.3/gcc/config/arm/arm.h"
extern int arm_fast_multiply;


extern int arm_arch4;


extern int arm_arch5;


extern int arm_arch5e;


extern int arm_ld_sched;


extern int thumb_code;


extern int arm_is_strong;


extern int arm_is_xscale;


extern int arm_is_6_or_7;
# 720 "../../gcc-3.3.3/gcc/config/arm/arm.h"
extern int arm_structure_size_boundary;
# 731 "../../gcc-3.3.3/gcc/config/arm/arm.h"
extern const char * structure_size_string;
# 1021 "../../gcc-3.3.3/gcc/config/arm/arm.h"
enum reg_class
{
  NO_REGS,
  FPU_REGS,
  LO_REGS,
  STACK_REG,
  BASE_REGS,
  HI_REGS,
  CC_REG,
  GENERAL_REGS,
  ALL_REGS,
  LIM_REG_CLASSES
};
# 1431 "../../gcc-3.3.3/gcc/config/arm/arm.h"
typedef struct machine_function
{

  rtx eh_epilogue_sp_ofs;

  int far_jump_used;

  int arg_pointer_live;

  int lr_save_eliminated;

  int frame_size;

  unsigned long func_type;

  int uses_anonymous_args;
}
machine_function;




typedef struct
{

  int nregs;

  int call_cookie;
} CUMULATIVE_ARGS;
# 2420 "../../gcc-3.3.3/gcc/config/arm/arm.h"
extern int arm_pic_register;


extern const char * arm_pic_register_string;
# 2444 "../../gcc-3.3.3/gcc/config/arm/arm.h"
extern int making_const_table;
# 2786 "../../gcc-3.3.3/gcc/config/arm/arm.h"
enum arm_builtins
{
  ARM_BUILTIN_CLZ,
  ARM_BUILTIN_MAX
};
# 22 "tconfig.h" 2
# 1 "../../gcc-3.3.3/gcc/defaults.h" 1
# 23 "tconfig.h" 2
# 51 "dp-bit.c" 2
# 1 "../../gcc-3.3.3/gcc/config/fp-bit.h" 1
# 94 "../../gcc-3.3.3/gcc/config/fp-bit.h"
typedef float SFtype __attribute__ ((mode (SF)));
typedef float DFtype __attribute__ ((mode (DF)));




typedef int HItype __attribute__ ((mode (HI)));
typedef int SItype __attribute__ ((mode (SI)));
typedef int DItype __attribute__ ((mode (DI)));
# 112 "../../gcc-3.3.3/gcc/config/fp-bit.h"
typedef unsigned int UHItype __attribute__ ((mode (HI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));
typedef unsigned int UDItype __attribute__ ((mode (DI)));
# 215 "../../gcc-3.3.3/gcc/config/fp-bit.h"
        typedef UDItype fractype;
        typedef USItype halffractype;
        typedef DFtype FLO_type;
        typedef DItype intfrac;
# 343 "../../gcc-3.3.3/gcc/config/fp-bit.h"
typedef enum
{
  CLASS_SNAN,
  CLASS_QNAN,
  CLASS_ZERO,
  CLASS_NUMBER,
  CLASS_INFINITY
} fp_class_type;

typedef struct
{





  fp_class_type class;
  unsigned int sign;
  int normal_exp;


  union
    {
      fractype ll;
      halffractype l[2];
    } fraction;
} fp_number_type;

typedef union
{
  FLO_type value;
  fractype value_raw;





  halffractype words[2];




  struct
    {
      fractype fraction:52 __attribute__ ((packed));
      unsigned int exp:11 __attribute__ ((packed));
      unsigned int sign:1 __attribute__ ((packed));
    }
  bits;
# 411 "../../gcc-3.3.3/gcc/config/fp-bit.h"
}
FLO_union_type;




extern FLO_type __pack_d (fp_number_type *);


extern void __unpack_d (FLO_union_type *, fp_number_type *);
# 435 "../../gcc-3.3.3/gcc/config/fp-bit.h"
extern int __fpcmp_parts_d (fp_number_type *, fp_number_type *);
# 511 "../../gcc-3.3.3/gcc/config/fp-bit.h"
extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);
# 52 "dp-bit.c" 2
# 144 "dp-bit.c"
extern const fp_number_type __thenan_df;


__inline__
static fp_number_type *
nan (void)
{






  return (fp_number_type *) (& __thenan_df);

}

__inline__
static int
isnan ( fp_number_type * x)
{
  return x->class == CLASS_SNAN || x->class == CLASS_QNAN;
}

__inline__
static int
isinf ( fp_number_type * x)
{
  return x->class == CLASS_INFINITY;
}



__inline__
static int
iszero ( fp_number_type * x)
{
  return x->class == CLASS_ZERO;
}

__inline__
static void
flip_sign ( fp_number_type * x)
{
  x->sign = !x->sign;
}

extern FLO_type __pack_d ( fp_number_type * );


FLO_type
__pack_d ( fp_number_type * src)
{
  FLO_union_type dst;
  fractype fraction = src->fraction.ll;
  int sign = src->sign;
  int exp = 0;

  if (0 && (isnan (src) || isinf (src)))
    {



      exp = (0x7ff);
      fraction = ((fractype) 1 << 52) - 1;
    }
  else if (isnan (src))
    {
      exp = (0x7ff);
      if (src->class == CLASS_QNAN || 1)
        {
          fraction |= 0x8000000000000LL;
        }
    }
  else if (isinf (src))
    {
      exp = (0x7ff);
      fraction = 0;
    }
  else if (iszero (src))
    {
      exp = 0;
      fraction = 0;
    }
  else if (fraction == 0)
    {
      exp = 0;
    }
  else
    {
      if (src->normal_exp < (-(1023)+1))
        {
# 247 "dp-bit.c"
          int shift = (-(1023)+1) - src->normal_exp;

          exp = 0;

          if (shift > 64 - 8L)
            {

              fraction = 0;
            }
          else
            {
              int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0;
              fraction = (fraction >> shift) | lowbit;
            }
          if ((fraction & 0xff) == 0x80)
            {
              if ((fraction & (1 << 8L)))
                fraction += 0x7f + 1;
            }
          else
            {

              fraction += 0x7f;
            }


          if (fraction >= ((fractype)1<<(52 +8L)))
            {
              exp += 1;
            }
          fraction >>= 8L;

        }
      else if (!0
               && src->normal_exp > 1023)
        {
          exp = (0x7ff);
          fraction = 0;
        }
      else
        {
          exp = src->normal_exp + 1023;
          if (!0)
            {



              if ((fraction & 0xff) == 0x80)
                {
                  if (fraction & (1 << 8L))
                    fraction += 0x7f + 1;
                }
              else
                {

                  fraction += 0x7f;
                }
              if (fraction >= ((fractype)1<<(52 +1+8L)))
                {
                  fraction >>= 1;
                  exp += 1;
                }
            }
          fraction >>= 8L;

          if (0 && exp > (0x7ff))
            {

              exp = (0x7ff);
              fraction = ((fractype) 1 << 52) - 1;
            }
        }
    }





  dst.bits.fraction = fraction;
  dst.bits.exp = exp;
  dst.bits.sign = sign;
# 402 "dp-bit.c"
  {
    halffractype tmp = dst.words[0];
    dst.words[0] = dst.words[1];
    dst.words[1] = tmp;
  }



  return dst.value;
}
# 1501 "dp-bit.c"
extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]