Yes, this is a fundamental gcc issue :)

a char const 128 is a 'sign bit', therefore weared gcc behaviour.
The same about int 32768.


Fixed/workedaround anyway. Please update source and recompile.

~d


On Thursday 26 September 2002 22:43, Andreas Schwarz wrote:
> Hi,
>
> [email protected] sent me the following bug report today:
>
> ========================================================
> Hi Andreas,
>
> I'm not sure what to do next about this one?? I'm sending it to you as it
> occurred using MSPGCC windows installer 2002-09-22 (8.88MB). Is this a
> fundamental GCC issue?
>
> Sincerely,
> Robert Rath
>
>
> This is the error message from the compiler
>
> src/user.c: In function `UI_SaveStoredData':
> src/user.c:780: unrecognizable insn:
> (insn 304 220 41 (set (cc0)
>         (compare:QI (reg/v:QI 14 r14 [24])
>             (const_int 128 [0x80]))) -1 (nil)
>     (nil))
> src/user.c:780: Internal compiler error in insn_default_length, at
> insn-attrtab.c:671
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>
> This is the offending code ( pre-processed )
>
> static unsigned char UI_SaveStoredData(void)
> {
>
>         UBYTE *DataPtr = (UBYTE*)0x01000;
>         UBYTE i;
>         UBYTE Value;
>         UBYTE outcome = 1;
>
>
>
>         ;
>
>         if (USER_DisplayMode == 0)
>         {
>                 Value = UI_PreviousMode;
>         }
>         else
>         {
>                 Value = USER_DisplayMode;
>         }
>
>         i = 4;
>
>         while ( ( DataPtr[i] != 255) && (i < 128 ))
>         {
>                 i += 4;
>         }
>
>
>
>
>         if (i < (128 - 4))
>         {
>
>                 i += 4;
>
>
>                 { __asm__ __volatile__("dint"::); FCTL3 = 0x0A500 + 0x00;
> while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500 + 0x40; *&DataPtr[i+0] = Value;
> while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500; FCTL3 = 0x0A500 + 0x10; __asm__
> __volatile__("eint"::); };
>                 { __asm__ __volatile__("dint"::); FCTL3 = 0x0A500 + 0x00;
> while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500 + 0x40; *&DataPtr[i+1] =
> USER_SetpointHeat; while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500; FCTL3 = 0x0A500
> + 0x10; __asm__ __volatile__("eint"::); };
>                 { __asm__ __volatile__("dint"::); FCTL3 = 0x0A500 + 0x00;
> while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500 + 0x40; *&DataPtr[i+2] =
> USER_SetpointCool; while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500; FCTL3 = 0x0A500
> + 0x10; __asm__ __volatile__("eint"::); };
>                 outcome = 0;
>         }
>
>
>
>         return(outcome);
> }
>
> This code has the test in the while loop changed from 128 to 127 and the
> code builds ok.
>
> static unsigned char UI_SaveStoredData(void)
> {
>
>         UBYTE *DataPtr = (UBYTE*)0x01000;
>         UBYTE i;
>         UBYTE Value;
>         UBYTE outcome = 1;
>
>
>
>         ;
>
>         if (USER_DisplayMode == 0)
>         {
>                 Value = UI_PreviousMode;
>         }
>         else
>         {
>                 Value = USER_DisplayMode;
>         }
>
>         i = 4;
>
>         while ( ( DataPtr[i] != 255) && (i < (128 -1) ))
>         {
>                 i += 4;
>         }
>
>
>
>
>         if (i < (128 - 4))
>         {
>
>                 i += 4;
>
>
>                 { __asm__ __volatile__("dint"::); FCTL3 = 0x0A500 + 0x00;
> while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500 + 0x40; *&DataPtr[i+0] = Value;
> while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500; FCTL3 = 0x0A500 + 0x10; __asm__
> __volatile__("eint"::); };
>                 { __asm__ __volatile__("dint"::); FCTL3 = 0x0A500 + 0x00;
> while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500 + 0x40; *&DataPtr[i+1] =
> USER_SetpointHeat; while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500; FCTL3 = 0x0A500
> + 0x10; __asm__ __volatile__("eint"::); };
>                 { __asm__ __volatile__("dint"::); FCTL3 = 0x0A500 + 0x00;
> while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500 + 0x40; *&DataPtr[i+2] =
> USER_SetpointCool; while ( FCTL3 & 0x01 ); FCTL1 = 0x0A500; FCTL3 = 0x0A500
> + 0x10; __asm__ __volatile__("eint"::); };
>                 outcome = 0;
>         }
>
>
>
>         return(outcome);
> }
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> Mspgcc-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users

-- 
/********************************************************************
     ("`-''-/").___..--''"`-._     (\   Dimmy the Wild      UA1ACZ
      `6_ 6  )   `-.  (     ).`-.__.`)  Enterprise Information Sys 
      (_Y_.)'  ._   )  `._ `. ``-..-'   Nevsky prospekt,   20 / 44
    _..`--'_..-_/  /--'_.' ,'           Saint Petersburg,   Russia
   (il),-''  (li),'  ((!.-'             +7 (812)  3468202, 5585314
 ********************************************************************/


Reply via email to