home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: gnu.gcc.bug
- Path: 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
-
- 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
-
-