public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: bootstrap/7637: MIPS cross compiler: ICE during bootstrap
@ 2003-05-07  7:46 Dara Hazeghi
  0 siblings, 0 replies; 2+ messages in thread
From: Dara Hazeghi @ 2003-05-07  7:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR bootstrap/7637; it has been noted by GNATS.

From: Dara Hazeghi <dhazeghi@yahoo.com>
To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: bootstrap/7637: MIPS cross compiler: ICE during bootstrap
Date: Wed, 7 May 2003 00:44:04 -0700

 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit- 
 trail&database=gcc&pr=7637
 
 Hi all,
 
 bug confirmed in latest 3.3 cvs and mainline (20030506). Also, it looks  
 like ecoff has been obsoleted in 3.3 and may be removed in 3.4.
 
 Dara
 


^ permalink raw reply	[flat|nested] 2+ messages in thread

* bootstrap/7637: MIPS cross compiler: ICE during bootstrap
@ 2002-08-19 14:06 Johan Bengtsson
  0 siblings, 0 replies; 2+ messages in thread
From: Johan Bengtsson @ 2002-08-19 14:06 UTC (permalink / raw)
  To: gcc-gnats


>Number:         7637
>Category:       bootstrap
>Synopsis:       MIPS cross compiler: ICE during bootstrap
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Mon Aug 19 13:56:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Johan Bengtsson
>Release:        3.2
>Organization:
>Environment:
Linux Toker 2.4.19-xfs #3 Wed Aug 14 16:30:54 CEST 2002 i686 unknown unknown GNU/Linux
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: mips-idt-ecoff
configured with: ../configure --with-gcc-version-trigger=/home/toker/johanb/jobb/DSYS-DV-HT02/devel/src/gcc-3.2/gcc/version.c --host=i686-pc-linux-gnu --target=mips-idt-ecoff --with-gnu-as --with-gnu-ld --enable-languages=c --prefix=/home/toker/johanb/jobb/DSYS-DV-HT02/devel --program-prefix=mips-idt-ecoff- --disable-shared --disable-threads --norecursion

>Description:
	The cross compiler being built reports an ICE when compiling
	target-specific libgcc2

if [ -f stmp-dirs ]; then true; else touch stmp-dirs; fi
/home/toker/johanb/jobb/DSYS-DV-HT02/devel/src/gcc-3.2/objs/gcc/xgcc -B/home/toker/johanb/jobb/DSYS-DV-HT02/devel/src/gcc-3.2/objs/gcc/ -B/home/toker/johanb/jobb/DSYS-DV-HT02/devel/mips-idt-ecoff/bin/ -B/home/toker/johanb/jobb/DSYS-DV-HT02/devel/mips-idt-ecoff/lib/ -isystem /home/toker/johanb/jobb/DSYS-DV-HT02/devel/mips-idt-ecoff/include -O2  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include  -G 0 -g  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/config -I../../gcc/../include  -DL_divdi3 -c ../../gcc/libgcc2.c -fexceptions -fnon-call-exceptions -o libgcc/./_divdi3.o
../../gcc/libgcc2.c:64: Internal compiler error in assemble_integer, at varasm.c:2012
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[2]: *** [libgcc/./_divdi3.o] Error 1
make[2]: Leaving directory `/home/toker/johanb/jobb/DSYS-DV-HT02/devel/src/gcc-3.2/objs/gcc'
make[1]: *** [stmp-multilib] Error 2
make[1]: Leaving directory `/home/toker/johanb/jobb/DSYS-DV-HT02/devel/src/gcc-3.2/objs/gcc'
make: *** [all-gcc] Error 2


>How-To-Repeat:
	
# 1 "../../gcc/libgcc2.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "../../gcc/libgcc2.c"
# 36 "../../gcc/libgcc2.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 "../../include/ansidecl.h" 1
# 15 "tconfig.h" 2
# 1 "../../gcc/config/gofast.h" 1
# 16 "tconfig.h" 2
# 1 "../../gcc/config/mips/ecoff.h" 1
# 25 "../../gcc/config/mips/ecoff.h"
# 1 "../../gcc/config/mips/mips.h" 1
# 29 "../../gcc/config/mips/mips.h"
extern char *asm_file_name;
extern char call_used_regs[];
extern int may_call_alloca;
extern char **save_argv;
extern int target_flags;




enum cmp_type {
  CMP_SI,
  CMP_DI,
  CMP_SF,
  CMP_DF,
  CMP_MAX
};


enum delay_type {
  DELAY_NONE,
  DELAY_LOAD,
  DELAY_HILO,
  DELAY_FCMP
};






enum processor_type {
  PROCESSOR_DEFAULT,
  PROCESSOR_R3000,
  PROCESSOR_R3900,
  PROCESSOR_R6000,
  PROCESSOR_R4000,
  PROCESSOR_R4100,
  PROCESSOR_R4300,
  PROCESSOR_R4600,
  PROCESSOR_R4650,
  PROCESSOR_R5000,
  PROCESSOR_R8000,
  PROCESSOR_R4KC,
  PROCESSOR_R5KC,
  PROCESSOR_R20KC
};
# 104 "../../gcc/config/mips/mips.h"
enum mips_abicalls_type {
  MIPS_ABICALLS_NO,
  MIPS_ABICALLS_YES
};







enum block_move_type {
  BLOCK_MOVE_NORMAL,
  BLOCK_MOVE_NOT_LAST,
  BLOCK_MOVE_LAST
};

extern char mips_reg_names[][8];
extern char mips_print_operand_punct[256];
extern const char *current_function_file;
extern int num_source_filenames;
extern int inside_function;
extern int ignore_line_number;
extern int file_in_function_warning;
extern int sdb_label_count;
extern int sdb_begin_function_line;
extern int mips_section_threshold;
extern int g_switch_value;
extern int g_switch_set;
extern int sym_lineno;
extern int set_noreorder;
extern int set_nomacro;
extern int set_noat;
extern int set_volatile;
extern int mips_branch_likely;
extern int mips_dbx_regno[];
extern struct rtx_def *branch_cmp[2];
extern enum cmp_type branch_type;
extern enum processor_type mips_arch;
extern enum processor_type mips_tune;
extern enum mips_abicalls_type mips_abicalls;
extern int mips_isa;
extern int mips16;
extern int mips16_hard_float;
extern int mips_entry;
extern const char *mips_cpu_string;
extern const char *mips_arch_string;
extern const char *mips_tune_string;
extern const char *mips_isa_string;
extern const char *mips_abi_string;
extern const char *mips_entry_string;
extern const char *mips_no_mips16_string;
extern const char *mips_explicit_type_size_string;
extern const char *mips_cache_flush_func;
extern int mips_split_addresses;
extern int dslots_load_total;
extern int dslots_load_filled;
extern int dslots_jump_total;
extern int dslots_jump_filled;
extern int dslots_number_nops;
extern int num_refs[3];
extern struct rtx_def *mips_load_reg;
extern struct rtx_def *mips_load_reg2;
extern struct rtx_def *mips_load_reg3;
extern struct rtx_def *mips_load_reg4;
extern struct rtx_def *embedded_pic_fnaddr_rtx;
extern int mips_string_length;
extern struct rtx_def *mips16_gp_pseudo_rtx;


extern void rdata_section (void);
extern void sdata_section (void);
extern void sbss_section (void);
# 853 "../../gcc/config/mips/mips.h"
extern int mips_abi;
# 1915 "../../gcc/config/mips/mips.h"
extern char mips_hard_regno_mode_ok[][76];
# 2039 "../../gcc/config/mips/mips.h"
enum reg_class
{
  NO_REGS,
  M16_NA_REGS,
  M16_REGS,
  T_REG,
  M16_T_REGS,
  GR_REGS,
  FP_REGS,
  HI_REG,
  LO_REG,
  HILO_REG,
  MD_REGS,
  HI_AND_GR_REGS,
  LO_AND_GR_REGS,
  HILO_AND_GR_REGS,
  HI_AND_FP_REGS,
  ST_REGS,
  ALL_REGS,
  LIM_REG_CLASSES
};
# 2128 "../../gcc/config/mips/mips.h"
extern const enum reg_class mips_regno_to_class[];
# 2198 "../../gcc/config/mips/mips.h"
extern enum reg_class mips_char_to_class[256];
# 2439 "../../gcc/config/mips/mips.h"
struct mips_frame_info
{
  long total_size;
  long var_size;
  long args_size;
  long extra_size;
  int gp_reg_size;
  int fp_reg_size;
  long mask;
  long fmask;
  long gp_save_offset;
  long fp_save_offset;
  long gp_sp_offset;
  long fp_sp_offset;
  int initialized;
  int num_gp;
  int num_fp;
  long insns_len;
};

extern struct mips_frame_info current_frame_info;
# 2769 "../../gcc/config/mips/mips.h"
typedef struct mips_args {
  int gp_reg_found;
  unsigned int arg_number;
  unsigned int arg_words;
  unsigned int fp_arg_words;
  int last_arg_fp;
  int fp_code;
  unsigned int num_adjusts;




  int prototype;
  struct rtx_def *adjust[4*2];
} CUMULATIVE_ARGS;
# 26 "../../gcc/config/mips/ecoff.h" 2
# 17 "tconfig.h" 2
# 1 "../../gcc/config/dbx.h" 1
# 18 "tconfig.h" 2
# 1 "../../gcc/defaults.h" 1
# 19 "tconfig.h" 2
# 37 "../../gcc/libgcc2.c" 2
# 1 "../../gcc/tsystem.h" 1
# 37 "../../gcc/tsystem.h"
# 1 "/home/toker/johanb/jobb/DSYS-DV-HT02/devel/src/gcc-3.2/objs/gcc/include/stddef.h" 1 3 4
# 147 "/home/toker/johanb/jobb/DSYS-DV-HT02/devel/src/gcc-3.2/objs/gcc/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 201 "/home/toker/johanb/jobb/DSYS-DV-HT02/devel/src/gcc-3.2/objs/gcc/include/stddef.h" 3 4
typedef unsigned int size_t;
# 294 "/home/toker/johanb/jobb/DSYS-DV-HT02/devel/src/gcc-3.2/objs/gcc/include/stddef.h" 3 4
typedef int wchar_t;
# 38 "../../gcc/tsystem.h" 2




extern void *malloc (size_t);



extern void free (void *);



extern int atexit (void (*)(void));
# 38 "../../gcc/libgcc2.c" 2

# 1 "../../gcc/machmode.h" 1
# 29 "../../gcc/machmode.h"
enum machine_mode {
# 1 "../../gcc/machmode.def" 1
# 74 "../../gcc/machmode.def"
VOIDmode,

BImode,
QImode,
HImode,
SImode,
DImode,
TImode,
OImode,




PQImode,
PHImode,
PSImode,
PDImode,

QFmode,
HFmode,
TQFmode,
SFmode,
DFmode,
XFmode,
TFmode,


QCmode,
HCmode,
SCmode,
DCmode,
XCmode,
TCmode,

CQImode,
CHImode,
CSImode,
CDImode,
CTImode,
COImode,







V2QImode,
V2HImode,
V2SImode,
V2DImode,

V4QImode,
V4HImode,
V4SImode,
V4DImode,

V8QImode,
V8HImode,
V8SImode,
V8DImode,

V16QImode,

V2SFmode,
V2DFmode,

V4SFmode,
V4DFmode,

V8SFmode,
V8DFmode,
V16SFmode,



BLKmode,
# 159 "../../gcc/machmode.def"
CCmode,
# 31 "../../gcc/machmode.h" 2
MAX_MACHINE_MODE };
# 41 "../../gcc/machmode.h"
extern const char * const mode_name[(int) MAX_MACHINE_MODE];


enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC,
                  MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT,
                  MODE_VECTOR_INT, MODE_VECTOR_FLOAT,
                  MAX_MODE_CLASS};




extern const enum mode_class mode_class[(int) MAX_MACHINE_MODE];
# 80 "../../gcc/machmode.h"
extern const unsigned char mode_size[(int) MAX_MACHINE_MODE];




extern const unsigned char mode_unit_size[(int) MAX_MACHINE_MODE];
# 96 "../../gcc/machmode.h"
extern const unsigned short mode_bitsize[(int) MAX_MACHINE_MODE];
# 123 "../../gcc/machmode.h"
extern const unsigned char mode_wider_mode[(int) MAX_MACHINE_MODE];






extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int);




extern enum machine_mode smallest_mode_for_size
                                (unsigned int, enum mode_class);





extern enum machine_mode int_mode_for_mode (enum machine_mode);



extern enum machine_mode get_best_mode (int, int, unsigned int, enum machine_mode, int);




extern unsigned get_mode_alignment (enum machine_mode);





extern const enum machine_mode class_narrowest_mode[(int) MAX_MODE_CLASS];





extern enum machine_mode byte_mode;
extern enum machine_mode word_mode;
extern enum machine_mode ptr_mode;
# 40 "../../gcc/libgcc2.c" 2






# 1 "../../gcc/libgcc2.h" 1
# 25 "../../gcc/libgcc2.h"
extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
extern void __clear_cache (char *, char *);
extern void __eprintf (const char *, const char *, unsigned int, const char *)
  __attribute__ ((__noreturn__));

struct bb;
extern void __bb_exit_func (void);
extern void __bb_init_func (struct bb *);
extern void __bb_fork_func (void);
extern void __bb_trace_func (void);
extern void __bb_trace_ret (void);
extern void __bb_init_trace_func (struct bb *, unsigned long);

struct exception_descriptor;
extern short int __get_eh_table_language (struct exception_descriptor *);
extern short int __get_eh_table_version (struct exception_descriptor *);
# 67 "../../gcc/libgcc2.h"
typedef int QItype __attribute__ ((mode (QI)));
typedef unsigned int UQItype __attribute__ ((mode (QI)));
typedef int HItype __attribute__ ((mode (HI)));
typedef unsigned int UHItype __attribute__ ((mode (HI)));


typedef int SItype __attribute__ ((mode (SI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));


typedef int DItype __attribute__ ((mode (DI)));
typedef unsigned int UDItype __attribute__ ((mode (DI)));
# 89 "../../gcc/libgcc2.h"
typedef float SFtype __attribute__ ((mode (SF)));
typedef float DFtype __attribute__ ((mode (DF)));
# 122 "../../gcc/libgcc2.h"
typedef int word_type __attribute__ ((mode (__word__)));
# 214 "../../gcc/libgcc2.h"
extern DItype __muldi3 (DItype, DItype);
extern DItype __divdi3 (DItype, DItype);
extern UDItype __udivdi3 (UDItype, UDItype);
extern UDItype __umoddi3 (UDItype, UDItype);
extern DItype __moddi3 (DItype, DItype);
# 231 "../../gcc/libgcc2.h"
extern DItype __lshrdi3 (DItype, word_type);
extern DItype __ashldi3 (DItype, word_type);
extern DItype __ashrdi3 (DItype, word_type);
extern DItype __ffsdi2 (DItype);







extern word_type __cmpdi2 (DItype, DItype);
extern word_type __ucmpdi2 (DItype, DItype);

extern SItype __absvsi2 (SItype);
extern DItype __absvdi2 (DItype);
extern SItype __addvsi3 (SItype, SItype);
extern DItype __addvdi3 (DItype, DItype);
extern SItype __subvsi3 (SItype, SItype);
extern DItype __subvdi3 (DItype, DItype);
extern SItype __mulvsi3 (SItype, SItype);
extern DItype __mulvdi3 (DItype, DItype);
extern SItype __negvsi2 (SItype);
extern DItype __negvdi2 (DItype);


extern DItype __fixdfdi (DFtype);
extern DItype __fixsfdi (SFtype);
extern DFtype __floatdidf (DItype);
extern SFtype __floatdisf (DItype);
extern USItype __fixunsdfsi (DFtype);
extern USItype __fixunssfsi (SFtype);
extern DItype __fixunsdfdi (DFtype);
extern DItype __fixunssfdi (SFtype);
# 284 "../../gcc/libgcc2.h"
  struct DWstruct {SItype high, low;};
# 293 "../../gcc/libgcc2.h"
typedef union
{
  struct DWstruct s;
  DItype ll;
} DWunion;

# 1 "../../gcc/longlong.h" 1
# 1465 "../../gcc/longlong.h"
extern const UQItype __clz_tab[];
# 300 "../../gcc/libgcc2.h" 2
# 47 "../../gcc/libgcc2.c" 2



static __inline__

DItype
__negdi2 (DItype u)
{
  DWunion w;
  DWunion uu;

  uu.ll = u;

  w.s.low = -uu.s.low;
  w.s.high = -uu.s.high - ((USItype) w.s.low > 0);

  return w.ll;
}
# 504 "../../gcc/libgcc2.c"
static __inline__

UDItype
__udivmoddi4 (UDItype n, UDItype d, UDItype *rp)
{
  DWunion ww;
  DWunion nn, dd;
  DWunion rr;
  USItype d0, d1, n0, n1, n2;
  USItype q0, q1;
  USItype b, bm;

  nn.ll = n;
  dd.ll = d;

  d0 = dd.s.low;
  d1 = dd.s.high;
  n0 = nn.s.low;
  n1 = nn.s.high;
# 559 "../../gcc/libgcc2.c"
  if (d1 == 0)
    {
      if (d0 > n1)
        {


          do { USItype __xr = (d0); USItype __a; if ((4 * 8) <= 32) { __a = __xr < ((USItype)1<<2*((4 * 8) / 4)) ? (__xr < ((USItype)1<<((4 * 8) / 4)) ? 0 : ((4 * 8) / 4)) : (__xr < ((USItype)1<<3*((4 * 8) / 4)) ? 2*((4 * 8) / 4) : 3*((4 * 8) / 4)); } else { for (__a = (4 * 8) - 8; __a > 0; __a -= 8) if (((__xr >> __a) & 0xff) != 0) break; } (bm) = (4 * 8) - (__clz_tab[__xr >> __a] + __a); } while (0);

          if (bm != 0)
            {



              d0 = d0 << bm;
              n1 = (n1 << bm) | (n0 >> ((4 * 8) - bm));
              n0 = n0 << bm;
            }

          do { USItype __d1, __d0, __q1, __q0; USItype __r1, __r0, __m; __d1 = ((USItype) (d0) >> ((4 * 8) / 2)); __d0 = ((USItype) (d0) & (((USItype) 1 << ((4 * 8) / 2)) - 1)); __r1 = (n1) % __d1; __q1 = (n1) / __d1; __m = (USItype) __q1 * __d0; __r1 = __r1 * ((USItype) 1 << ((4 * 8) / 2)) | ((USItype) (n0) >> ((4 * 8) / 2)); if (__r1 < __m) { __q1--, __r1 += (d0); if (__r1 >= (d0)) if (__r1 < __m) __q1--, __r1 += (d0); } __r1 -= __m; __r0 = __r1 % __d1; __q0 = __r1 / __d1; __m = (USItype) __q0 * __d0; __r0 = __r0 * ((USItype) 1 << ((4 * 8) / 2)) | ((USItype) (n0) & (((USItype) 1 << ((4 * 8) / 2)) - 1)); if (__r0 < __m) { __q0--, __r0 += (d0); if (__r0 >= (d0)) if (__r0 < __m) __q0--, __r0 += (d0); } __r0 -= __m; (q0) = (USItype) __q1 * ((USItype) 1 << ((4 * 8) / 2)) | __q0; (n0) = __r0; } while (0);
          q1 = 0;


        }
      else
        {


          if (d0 == 0)
            d0 = 1 / d0;

          do { USItype __xr = (d0); USItype __a; if ((4 * 8) <= 32) { __a = __xr < ((USItype)1<<2*((4 * 8) / 4)) ? (__xr < ((USItype)1<<((4 * 8) / 4)) ? 0 : ((4 * 8) / 4)) : (__xr < ((USItype)1<<3*((4 * 8) / 4)) ? 2*((4 * 8) / 4) : 3*((4 * 8) / 4)); } else { for (__a = (4 * 8) - 8; __a > 0; __a -= 8) if (((__xr >> __a) & 0xff) != 0) break; } (bm) = (4 * 8) - (__clz_tab[__xr >> __a] + __a); } while (0);

          if (bm == 0)
            {







              n1 -= d0;
              q1 = 1;
            }
          else
            {


              b = (4 * 8) - bm;

              d0 = d0 << bm;
              n2 = n1 >> b;
              n1 = (n1 << bm) | (n0 >> b);
              n0 = n0 << bm;

              do { USItype __d1, __d0, __q1, __q0; USItype __r1, __r0, __m; __d1 = ((USItype) (d0) >> ((4 * 8) / 2)); __d0 = ((USItype) (d0) & (((USItype) 1 << ((4 * 8) / 2)) - 1)); __r1 = (n2) % __d1; __q1 = (n2) / __d1; __m = (USItype) __q1 * __d0; __r1 = __r1 * ((USItype) 1 << ((4 * 8) / 2)) | ((USItype) (n1) >> ((4 * 8) / 2)); if (__r1 < __m) { __q1--, __r1 += (d0); if (__r1 >= (d0)) if (__r1 < __m) __q1--, __r1 += (d0); } __r1 -= __m; __r0 = __r1 % __d1; __q0 = __r1 / __d1; __m = (USItype) __q0 * __d0; __r0 = __r0 * ((USItype) 1 << ((4 * 8) / 2)) | ((USItype) (n1) & (((USItype) 1 << ((4 * 8) / 2)) - 1)); if (__r0 < __m) { __q0--, __r0 += (d0); if (__r0 >= (d0)) if (__r0 < __m) __q0--, __r0 += (d0); } __r0 -= __m; (q1) = (USItype) __q1 * ((USItype) 1 << ((4 * 8) / 2)) | __q0; (n1) = __r0; } while (0);
            }



          do { USItype __d1, __d0, __q1, __q0; USItype __r1, __r0, __m; __d1 = ((USItype) (d0) >> ((4 * 8) / 2)); __d0 = ((USItype) (d0) & (((USItype) 1 << ((4 * 8) / 2)) - 1)); __r1 = (n1) % __d1; __q1 = (n1) / __d1; __m = (USItype) __q1 * __d0; __r1 = __r1 * ((USItype) 1 << ((4 * 8) / 2)) | ((USItype) (n0) >> ((4 * 8) / 2)); if (__r1 < __m) { __q1--, __r1 += (d0); if (__r1 >= (d0)) if (__r1 < __m) __q1--, __r1 += (d0); } __r1 -= __m; __r0 = __r1 % __d1; __q0 = __r1 / __d1; __m = (USItype) __q0 * __d0; __r0 = __r0 * ((USItype) 1 << ((4 * 8) / 2)) | ((USItype) (n0) & (((USItype) 1 << ((4 * 8) / 2)) - 1)); if (__r0 < __m) { __q0--, __r0 += (d0); if (__r0 >= (d0)) if (__r0 < __m) __q0--, __r0 += (d0); } __r0 -= __m; (q0) = (USItype) __q1 * ((USItype) 1 << ((4 * 8) / 2)) | __q0; (n0) = __r0; } while (0);


        }

      if (rp != 0)
        {
          rr.s.low = n0 >> bm;
          rr.s.high = 0;
          *rp = rr.ll;
        }
    }


  else
    {
      if (d1 > n1)
        {


          q0 = 0;
          q1 = 0;


          if (rp != 0)
            {
              rr.s.low = n0;
              rr.s.high = n1;
              *rp = rr.ll;
            }
        }
      else
        {


          do { USItype __xr = (d1); USItype __a; if ((4 * 8) <= 32) { __a = __xr < ((USItype)1<<2*((4 * 8) / 4)) ? (__xr < ((USItype)1<<((4 * 8) / 4)) ? 0 : ((4 * 8) / 4)) : (__xr < ((USItype)1<<3*((4 * 8) / 4)) ? 2*((4 * 8) / 4) : 3*((4 * 8) / 4)); } else { for (__a = (4 * 8) - 8; __a > 0; __a -= 8) if (((__xr >> __a) & 0xff) != 0) break; } (bm) = (4 * 8) - (__clz_tab[__xr >> __a] + __a); } while (0);
          if (bm == 0)
            {
# 665 "../../gcc/libgcc2.c"
              if (n1 > d1 || n0 >= d0)
                {
                  q0 = 1;
                  do { USItype __x; __x = (n0) - (d0); (n1) = (n1) - (d1) - (__x > (n0)); (n0) = __x; } while (0);
                }
              else
                q0 = 0;

              q1 = 0;

              if (rp != 0)
                {
                  rr.s.low = n0;
                  rr.s.high = n1;
                  *rp = rr.ll;
                }
            }
          else
            {
              USItype m1, m0;


              b = (4 * 8) - bm;

              d1 = (d1 << bm) | (d0 >> b);
              d0 = d0 << bm;
              n2 = n1 >> b;
              n1 = (n1 << bm) | (n0 >> b);
              n0 = n0 << bm;

              do { USItype __d1, __d0, __q1, __q0; USItype __r1, __r0, __m; __d1 = ((USItype) (d1) >> ((4 * 8) / 2)); __d0 = ((USItype) (d1) & (((USItype) 1 << ((4 * 8) / 2)) - 1)); __r1 = (n2) % __d1; __q1 = (n2) / __d1; __m = (USItype) __q1 * __d0; __r1 = __r1 * ((USItype) 1 << ((4 * 8) / 2)) | ((USItype) (n1) >> ((4 * 8) / 2)); if (__r1 < __m) { __q1--, __r1 += (d1); if (__r1 >= (d1)) if (__r1 < __m) __q1--, __r1 += (d1); } __r1 -= __m; __r0 = __r1 % __d1; __q0 = __r1 / __d1; __m = (USItype) __q0 * __d0; __r0 = __r0 * ((USItype) 1 << ((4 * 8) / 2)) | ((USItype) (n1) & (((USItype) 1 << ((4 * 8) / 2)) - 1)); if (__r0 < __m) { __q0--, __r0 += (d1); if (__r0 >= (d1)) if (__r0 < __m) __q0--, __r0 += (d1); } __r0 -= __m; (q0) = (USItype) __q1 * ((USItype) 1 << ((4 * 8) / 2)) | __q0; (n1) = __r0; } while (0);
              __asm__ ("multu %2,%3" : "=l" ((USItype) (m0)), "=h" ((USItype) (m1)) : "d" ((USItype) (q0)), "d" ((USItype) (d0)));

              if (m1 > n1 || (m1 == n1 && m0 > n0))
                {
                  q0--;
                  do { USItype __x; __x = (m0) - (d0); (m1) = (m1) - (d1) - (__x > (m0)); (m0) = __x; } while (0);
                }

              q1 = 0;


              if (rp != 0)
                {
                  do { USItype __x; __x = (n0) - (m0); (n1) = (n1) - (m1) - (__x > (n0)); (n0) = __x; } while (0);
                  rr.s.low = (n1 << b) | (n0 >> bm);
                  rr.s.high = n1 >> bm;
                  *rp = rr.ll;
                }
            }
        }
    }

  ww.s.low = q0;
  ww.s.high = q1;
  return ww.ll;
}



DItype
__divdi3 (DItype u, DItype v)
{
  word_type c = 0;
  DWunion uu, vv;
  DItype w;

  uu.ll = u;
  vv.ll = v;

  if (uu.s.high < 0)
    c = ~c,
    uu.ll = __negdi2 (uu.ll);
  if (vv.s.high < 0)
    c = ~c,
    vv.ll = __negdi2 (vv.ll);

  w = __udivmoddi4 (uu.ll, vv.ll, (UDItype *) 0);
  if (c)
    w = __negdi2 (w);

  return w;
}


>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-05-07  7:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-07  7:46 bootstrap/7637: MIPS cross compiler: ICE during bootstrap Dara Hazeghi
  -- strict thread matches above, loose matches on Subject: below --
2002-08-19 14:06 Johan Bengtsson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).