Compiler: 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; } REG_CONF_S; 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 Error: 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:http://gcc.gnu.org/bugs.html> for instructions. Compilation exited abnormally with code 1 at Fri Sep 21 11:16:49 Comments: 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 one. t: Veikko Turkia -- Summary: bit field cause an internal compiler error: in schedule_region 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 i686 GCC target triplet: NEC v850 es http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33517