🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gcc.bug
Article #1395

long longs on i386 crash gcc

#1395
From: 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
Technical Details
Message-ID: <9212202146.AA02063@ma2s2.mathematik.uni-karlsruhe.de>
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!ma2s2.mathematik.uni-karlsruhe.de!haible

Show Full Headers
Complete Article Headers
Newsgroups: gnu.gcc.bug
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!ma2s2.mathematik.uni-karlsruhe.de!haible
From: haible@ma2s2.mathematik.uni-karlsruhe.de (Bruno Haible)
Subject: long longs on i386 crash gcc
Message-ID: <9212202146.AA02063@ma2s2.mathematik.uni-karlsruhe.de>
Sender: gnulists@ai.mit.edu
Organization: GNUs Not Usenet
Distribution: gnu
Date: Sun, 20 Dec 1992 23:46:11 GMT
Approved: bug-gcc@prep.ai.mit.edu
Lines: 84