The c4x target does not build any more because a lot of code uses SImode and
DImode for 32 and 64 bit values. This is incorrect for the c4x target because
here QImode is 32 bits and HImode is 64 bits (chars/ints/longs = 32 bits, long
long = 64 bits).

I did a quick search on the current (20050209) version and found about 113
problems. The problems are listed below. I am not sure the list is complete
but it is a start.

I the past some changes were made for example to libgcc2.h, gcov-io.h. Also for
SImode one can write TYPE_MODE (integer_type_node). The same can be done for
DImode.

The list of files+linenumbers:

/libffi/include/ffi_common.h:81:typedef unsigned int UINT32
__attribute__((__mode__(__SI__)));
./libffi/include/ffi_common.h:82:typedef signed int   SINT32
__attribute__((__mode__(__SI__)));
./libffi/include/ffi_common.h:83:typedef unsigned int UINT64
__attribute__((__mode__(__DI__)));
./libffi/include/ffi_common.h:84:typedef signed int   SINT64
__attribute__((__mode__(__DI__)));
./libffi/src/mips/ffitarget.h:128:typedef unsigned int     ffi_arg
__attribute__((__mode__(__SI__)));
./libffi/src/mips/ffitarget.h:129:typedef signed   int     ffi_sarg
__attribute__((__mode__(__SI__)));
./libffi/src/mips/ffitarget.h:132:typedef unsigned int     ffi_arg
__attribute__((__mode__(__DI__)));
./libffi/src/mips/ffitarget.h:133:typedef signed   int     ffi_sarg
__attribute__((__mode__(__DI__)));
./libffi/src/ia64/ffi.c:39:typedef void *PTR64 __attribute__((mode(DI)));
./libjava/gcj/javaprims.h:510:typedef unsigned int _Jv_uint
__attribute__((__mode__(__SI__)));
./libjava/gcj/javaprims.h:511:typedef unsigned int _Jv_ulong
__attribute__((__mode__(__DI__)));
./libjava/include/jni.h:52:typedef int    jint   
__attribute__((__mode__(__SI__)));
./libjava/include/jni.h:53:typedef int    jlong  
__attribute__((__mode__(__DI__)));
./libjava/java/lang/mprec.h:61:// FIXME -- this could have problems with systems
that don't define SI to be 4
./libjava/java/lang/mprec.h:62:typedef int int32_t __attribute__((mode(SI)));
./libjava/java/lang/mprec.h:68:typedef unsigned int uint32_t
__attribute__((mode(SI)));
./libjava/gnu/gcj/io/shs.h:29:typedef unsigned int uint32_t
__attribute__((mode(SI)));
./gcc/expr.c:8715:  enum machine_mode index_mode = SImode;
./gcc/loop.c:768:  reg_address_cost = address_cost (reg, SImode);
./gcc/unwind-dw2.c:86:  unsigned u4 __attribute__ ((mode (SI)));
./gcc/unwind-dw2.c:87:  unsigned u8 __attribute__ ((mode (DI)));
./gcc/unwind-dw2.c:89:  signed s4 __attribute__ ((mode (SI)));
./gcc/unwind-dw2.c:90:  signed s8 __attribute__ ((mode (DI)));
./gcc/tree.c:5683:  intSI_type_node = make_or_reuse_type (GET_MODE_BITSIZE
(SImode), 0);
./gcc/tree.c:5684:  intDI_type_node = make_or_reuse_type (GET_MODE_BITSIZE
(DImode), 0);
./gcc/tree.c:5689:  unsigned_intSI_type_node = make_or_reuse_type
(GET_MODE_BITSIZE (SImode), 1);
./gcc/tree.c:5690:  unsigned_intDI_type_node = make_or_reuse_type
(GET_MODE_BITSIZE (DImode), 1);
./gcc/coverage.c:605:  fields = build_decl (FIELD_DECL, NULL_TREE,
unsigned_intSI_type_node);
./gcc/coverage.c:608:  field = build_decl (FIELD_DECL, NULL_TREE,
unsigned_intSI_type_node);
./gcc/coverage.c:639:  value = tree_cons (fields, build_int_cstu
(unsigned_intSI_type_node,
./gcc/coverage.c:644:  value = tree_cons (fields, build_int_cstu
(unsigned_intSI_type_node,
./gcc/coverage.c:677:  field = build_decl (FIELD_DECL, NULL_TREE,
unsigned_intSI_type_node);
./gcc/coverage.c:714:                build_int_cstu (unsigned_intSI_type_node,
./gcc/coverage.c:788:  field = build_decl (FIELD_DECL, NULL_TREE,
unsigned_intSI_type_node);
./gcc/coverage.c:791:  value = tree_cons (field, build_int_cstu
(unsigned_intSI_type_node,
./gcc/coverage.c:801:  field = build_decl (FIELD_DECL, NULL_TREE,
unsigned_intSI_type_node);
./gcc/coverage.c:804:  value = tree_cons (field, build_int_cstu
(unsigned_intSI_type_node,
./gcc/loop-unswitch.c:237:  stest = simplify_gen_relational (GET_CODE (test),
SImode,
./gcc/loop-unswitch.c:243:  return canon_condition (gen_rtx_fmt_ee (GET_CODE
(test), SImode,
./gcc/optabs.c:704:  tmp = simplify_relational_operation (cmp_code, SImode,
op1_mode, cmp1, cmp2);
./gcc/optabs.c:4403:      if (GET_MODE_SIZE (GET_MODE (from)) < GET_MODE_SIZE
(SImode))
./gcc/optabs.c:4404:    from = convert_to_mode (SImode, from, unsignedp);
./gcc/optabs.c:4580:  if (GET_MODE_SIZE (GET_MODE (to)) < GET_MODE_SIZE 
(SImode))
./gcc/optabs.c:4582:      target = gen_reg_rtx (SImode);
./gcc/cfgloopanal.c:515:  rtx reg1 = gen_raw_REG (SImode, 
FIRST_PSEUDO_REGISTER);
./gcc/cfgloopanal.c:516:  rtx reg2 = gen_raw_REG (SImode, FIRST_PSEUDO_REGISTER
+ 1);
./gcc/cfgloopanal.c:518:  rtx mem = validize_mem (gen_rtx_MEM (SImode, addr));
./gcc/loop-iv.c:1597:      || GET_MODE (cond) != SImode)
./gcc/loop-iv.c:1598:    cond = gen_rtx_fmt_ee (code, SImode, op0, op1);
./gcc/loop-iv.c:1842:  cond_under = simplify_gen_relational (LT, SImode,
iv->extend_mode,
./gcc/loop-iv.c:1844:  cond_over = simplify_gen_relational (GT, SImode,
iv->extend_mode,
./gcc/loop-iv.c:2166:       assumption = simplify_gen_relational (EQ, SImode,
mode, tmp,
./gcc/loop-iv.c:2176:       assumption = simplify_gen_relational (EQ, SImode,
mode, tmp,
./gcc/loop-iv.c:2260:         may_xform = simplify_gen_relational (cond, SImode,
mode,
./gcc/loop-iv.c:2263:                                                  SImode, 
mode,
./gcc/loop-iv.c:2272:         may_xform = simplify_gen_relational (cond, SImode,
mode,
./gcc/loop-iv.c:2275:                                                  SImode, 
mode,
./gcc/loop-iv.c:2325:                                           SImode, mode,
tmp0, tmp1);
./gcc/loop-iv.c:2367:      assumption = simplify_gen_relational (NE, SImode,
mode, tmp, const0_rtx);
./gcc/loop-iv.c:2400:                                               SImode, 
mode,
./gcc/loop-iv.c:2405:         tmp = simplify_gen_relational (cond, SImode, mode,
t0, t1);
./gcc/loop-iv.c:2406:         assumption = simplify_gen_binary (AND, SImode,
assumption, tmp);
./gcc/loop-iv.c:2412:         assumption = simplify_gen_relational (cond,
SImode, mode,
./gcc/loop-iv.c:2421:                                           SImode, mode,
tmp0, tmp);
./gcc/loop-iv.c:2444:                                               SImode, 
mode,
./gcc/loop-iv.c:2449:         tmp = simplify_gen_relational (cond, SImode, mode,
t0, t1);
./gcc/loop-iv.c:2450:         assumption = simplify_gen_binary (AND, SImode,
assumption, tmp);
./gcc/loop-iv.c:2456:         assumption = simplify_gen_relational (cond,
SImode, mode,
./gcc/loop-iv.c:2465:                                           SImode, mode,
./gcc/unwind-pe.h:190:      unsigned u4 __attribute__ ((mode (SI)));
./gcc/unwind-pe.h:191:      unsigned u8 __attribute__ ((mode (DI)));
./gcc/unwind-pe.h:193:      signed s4 __attribute__ ((mode (SI)));
./gcc/unwind-pe.h:194:      signed s8 __attribute__ ((mode (DI)));
./gcc/longlong.h:28:   SItype, USItype -- Signed and unsigned 32 bit types.
./gcc/longlong.h:29:   DItype, UDItype -- Signed and unsigned 64 bit types.
./gcc/longlong.h:293:    union {DItype __ll;                                   
                \
./gcc/longlong.h:303:    union {DItype __ll;                                   
                \
./gcc/longlong.h:690:    SItype __m0 = (m0), __m1 = (m1);                      
                \
./gcc/longlong.h:754:    DItype __m0 = (m0), __m1 = (m1);                      
                \
./gcc/longlong.h:808:    (ph) += ((((SItype) __m0 >> 31) & __m1)               
                \
./gcc/longlong.h:809:        + (((SItype) __m1 >> 31) & __m0));                
        \
./gcc/longlong.h:847:      SItype c_;                                          
        \
./gcc/longlong.h:1139:    (xh) += ((((SItype) __m0 >> 31) & __m1)              
                \
./gcc/longlong.h:1140:       + (((SItype) __m1 >> 31) & __m0));                
        \
./gcc/longlong.h:1144:    union {DItype __ll;                                  
                \
./gcc/longlong.h:1145:     struct {SItype __l, __h;} __i;                      
        \
./gcc/unwind-dw2-fde.h:112:typedef          int  sword __attribute__ ((mode 
(SI)));
./gcc/unwind-dw2-fde.h:113:typedef unsigned int  uword __attribute__ ((mode 
(SI)));
./gcc/unwind.h:59:typedef unsigned _Unwind_Exception_Class
__attribute__((__mode__(__DI__)));
./gcc/stor-layout.c:165:#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (DImode)
./gcc/stor-layout.c:1829:  TYPE_MODE (t) = SImode;
./gcc/stor-layout.c:1830:  TYPE_ALIGN (t) = GET_MODE_ALIGNMENT (SImode);
./gcc/stor-layout.c:1834:  TYPE_SIZE (t) = build_int_cst (t, GET_MODE_BITSIZE
(SImode));
./gcc/stor-layout.c:1835:  TYPE_SIZE_UNIT (t) = build_int_cst (t, GET_MODE_SIZE
(SImode));
./gcc/stor-layout.c:1836:  TYPE_PRECISION (t) = GET_MODE_BITSIZE (SImode);
./gcc/stor-layout.c:2015:   larger than LARGEST_MODE (usually SImode).
./gcc/unwind-dw2-fde-glibc.c:211:           signed initial_loc __attribute__
((mode (SI)));
./gcc/unwind-dw2-fde-glibc.c:212:           signed fde __attribute__ ((mode 
(SI)));
./gcc/tree-ssa-loop-ivopts.c:1825:               build_int_cst
(unsigned_intSI_type_node, 0),
./gcc/tree-ssa-loop-ivopts.c:1826:                       build_int_cst
(unsigned_intSI_type_node, 1),
./gcc/tree-ssa-loop-ivopts.c:1832:                 build_int_cst
(unsigned_intDI_type_node, 0),
./gcc/tree-ssa-loop-ivopts.c:1833:                 build_int_cst
(unsigned_intDI_type_node, 1),
./gcc/ada/utils.c:61:#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (DImode)
./gcc/ada/utils.c:2309:         build_pointer_type_for_mode (type, SImode,
false), record_type,
./gcc/ada/utils.c:2311:                 build_pointer_type_for_mode (type,
SImode, false),
./gcc/ada/utils.c:2384:             build_pointer_type_for_mode (inner_type,
SImode, false),
./gcc/ada/utils.c:2387:                     build_pointer_type_for_mode
(inner_type, SImode,
./libstdc++-v3/libmath/mathconf.h:73:typedef unsigned int U_int32_t __attribute
((mode (SI)));
./libstdc++-v3/libmath/mathconf.h:74:typedef int Int32_t __attribute ((mode 
(SI)));
./libstdc++-v3/libmath/mathconf.h:75:typedef unsigned int U_int64_t __attribute
((mode (DI)));
./libstdc++-v3/libmath/mathconf.h:76:typedef int Int64_t __attribute ((mode 
(DI)));
./libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h:41:  __extension__ typedef int
__guard __attribute__((mode (__DI__)));
./libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h:59:  __extension__ typedef int
__guard __attribute__((mode (__DI__)));

-- 
           Summary: SImode and DImode usage
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hermantenbrugge at home dot nl
                CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: c4x


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

Reply via email to