Article View: gnu.gcc.bug
Article #1395long longs on i386 crash gcc
From: Bruno Haible
Date: Sun, 20 Dec 1992 23:46
Date: Sun, 20 Dec 1992 23:46
83 lines
3361 bytes
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!haibleShow 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