This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/33517] New: bit field cause an internal compiler error: in schedule_region


v850-elf-gcc -v
Reading specs from /usr/local/gcc333/lib/gcc-lib/v850-elf/3.3.3/specs
Configured with: ../configure --target=v850-elf --prefix=/usr/local/gcc333
--with-newlib --enable-languages=c
Thread model: single
gcc version 3.3.3

Source code:

typedef unsigned long long int  U64;    //   64-bit unsigned integer
typedef unsigned long int       U32;    //   32-bit unsigned integer
typedef unsigned short int      U16;    //   16-bit unsigned integer
typedef unsigned char           U8;     //    8-bit unsigned integer
typedef signed long long int    S64;    //   64-bit integer
typedef signed long int         S32;    //   32-bit integer
typedef signed short int        S16;    //   16-bit integer
typedef signed char             S8;     //    8-bit integer

#define REG_CNT 9

typedef struct
        //      register configuration structure

        U8      bit1:1;         

        U8      bit2:1;

        U8      bit3:1; 

        U8      bit4:1 ; 

        U8      bit5:1;

        U8      Par;    


static REG_CONF_S regConf[ REG_CNT ];

extern U8 readRegConfEep( U8 reg, REG_CONF_S *confPtr );

extern U8 writeRegConfEep( U8 reg, const REG_CONF_S * const confPtr );

/************************* Function ************************/

int writeRegOnAutoScroll( int reg, int newAutoScroll )


    REG_CONF_S eepConf;

    if (reg < REG_CNT) // valid register
        // read old conf
        if ( readRegConfEep( reg, &eepConf ) == 0 )
            eepConf.bit5 = newAutoScroll ? 1 : 0; // new state to conf

            if ( writeRegConfEep( reg, &eepConf ) == 0 ) // OK
                regConf[ reg ] = eepConf; // restore ram

                return 0;
            else // eeprom error
                return -3;
        else // eeprom error
            return -3;
    else // invalid reg number
        return -2;

} // writeRegOnAutoScroll

compile command:

v850-elf-gcc -mv850e -mdisable-callt -Wall -O2 -c -o ccerror.o ccerror.c


ccerror.c: In function `writeRegOnAutoScroll':
ccerror.c:75: internal compiler error: in schedule_region, at sched-rgn.c:2849
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:> for instructions.

Compilation exited abnormally with code 1 at Fri Sep 21 11:16:49


If I remove -O2 from command line then the error disappers,
also if I change the bit field "bit5" before "bit4" the compiler works good.
(Do the function work good in target system - that I don't know yet, but I will
test it soon)

Native compiler 3.4.2 compiles good

I had search that kind error from bug list, but I didn't find, so I write new

t: Veikko Turkia

           Summary: bit field cause an internal compiler error: in
           Product: gcc
           Version: 3.3.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: veikko dot turkia at enermet dot com
 GCC build triplet: v850-elf-gcc -mv850e -mdisable-callt -Wall -O2 -c -o
                    ccerror.o c
  GCC host triplet: linux fedora core release 3 kernel 2.6.9-1.667smp on an
GCC target triplet: NEC v850 es

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]