🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Bruno Haible Sun, 20 Dec 1992 23:46
long longs on i386 crash gcc
#1395
Author: Bruno Haible
Date: Sun, 20 Dec 1992 23:46
83 lines
3361 bytes
gcc aborts (cc1 gets signal 6) when called on the following file.
I'm working with gcc 2.2.2, configured as i386-linux.
"gcc -S -g llbug3.i" is the command I used.

================= llbug3.i ===================================================
      typedef char         BYTE;
    typedef unsigned char  UBYTE;
    typedef short          WORD;
    typedef unsigned short UWORD;
    typedef long           LONG;
    typedef unsigned long  ULONG;
    typedef long long           LONGLONG;
    typedef unsigned long long  ULONGLONG;
  typedef unsigned int  boolean;
  typedef signed int  signean;
  typedef UBYTE   uint8;    
  typedef BYTE    sint8;    
  typedef UWORD   uint16;   
  typedef WORD    sint16;   
  typedef ULONG   uint32;   
  typedef LONG    sint32;   
  typedef ULONGLONG  uint64;   
  typedef LONGLONG   sint64;   
    typedef   sint8        sintB;
    typedef   uint8      uintB;
    typedef   sint16        sintW;
    typedef   uint16      uintW;
    typedef   sint32        sintL;
    typedef   uint32      uintL;
  typedef  uint64  oint;
  typedef  oint  object;
    typedef   uint32      tint;
    typedef   uint32      aint;
typedef struct { union { object _GCself; uintB flags[4]; } header;  }
        varobject_;
typedef varobject_ *  Varobject;
typedef struct { union { object _GCself; uintB flags[4]; } header; 
                 object symvalue;     
                 object symfunction;  
                 object proplist;     
                 object pname;        
                 object homepackage;  
               }
        symbol_;
typedef symbol_ *  Symbol;
typedef struct { union { object _GCself; uintB flags[4]; } header;   
                 uintL  length;    
                 uint8  data[0 ];  
               }
        sbvector_;
typedef sbvector_ *  Sbvector;
    typedef void Values;
    extern object* STACK;
  extern struct symbol_tab_ {
 symbol_ S_nil; 
 symbol_ S_t; 
                            }
         symbol_tab_data;
  extern object I_minus1_plus_I (object x);
typedef boolean (*up_function) (object* stackptr, object x);
static  void seq_filterop_help1(stackptr,up_fun,bvl)
  object* stackptr;
  up_function up_fun;
  uintL bvl;
{ uintL dl = 0;
 {uintL bvi = bvl;
  while(!(bvi==0)) 
    { bvi--;
     {(((Sbvector)((void*)(aint)(STACK[-1-(0+2)]) ))
                  ->data[(uintL)(bvi)/8]
                  |=  (1LL<<((~(uintL)(bvi)) % 8))  ) ;
      dl++;
      if (!( ( (( (STACK[-1-(1+4+2)]) ) ==
               ((((object)(((oint)(tint)(0x20)<<32) + 
            ((oint)(aint)(&symbol_tab_data.S_nil)<<0)))))))))
        { ((STACK[-1-(0)])) = I_minus1_plus_I((STACK[-1-(0)])); }
     }
}}  }
=============================================================================
Changing the "1LL" into "1L" makes things work OK.

Bruno Haible
haible@ma2s2.mathematik.uni-karlsruhe.de
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads