Article View: gnu.g++.lib.bug
Article #171oops
From: Ken Raeburn
Date: Thu, 09 Nov 1989 01:40
Date: Thu, 09 Nov 1989 01:40
177 lines
6109 bytes
6109 bytes
------- Forwarded Message
Date: Wed, 8 Nov 89 20:24:55 EST
From: MAILER-DAEMON@MIT.EDU (Mail Delivery Subsystem)
Subject: Returned mail: User unknown
To: <raeburn@MIT.EDU>
----- Transcript of session follows -----
>>> RCPT To:<bug-libg++@PREP.AI.MIT.EDU>
<<< 550 <bug-libg++@PREP.AI.MIT.EDU>... User unknown
550 <bug-libg++@prep.ai.mit.edu>... User unknown
----- Unsent message follows -----
Received: from PROMETHEUS.MIT.EDU by MIT.EDU with SMTP
id AA12832; Wed, 8 Nov 89 20:24:55 EST
Received: by prometheus.MIT.EDU (5.61/4.7) id AA29341; Wed, 8 Nov 89 20:25:25 -0500
Date: Wed, 8 Nov 89 20:25:25 -0500
Message-Id: <8911090125.AA29341@prometheus.MIT.EDU>
From: Ken Raeburn <Raeburn@MIT.EDU>
To: bug-libg++@PREP.AI.MIT.EDU, bug-g++@PREP.AI.MIT.EDU
Subject: problems with g++ and libg++ on dec-3100
Configuration: dec-3100; g++ version 1.36.1; gcc version 1.36.
test.hello.cc doesn't compile on the pmax; there is no `struct exec'
in <a.out.h> that gets compiled in.
>g++ -I/var/raeburn/libg++/g++-include -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized -Wall -c tPlex.cc
>tPlex.cc: In function void MPtest ():
>tPlex.cc:535: The following insn was not recognizable:
>(insn/i 117 116 118 (set (reg:SI 93)
> (neg:SI (mem/s:SI (plus:SI (reg:SI 87)
> (const_int 4))))) -1 (nil)
> (nil))
>g++: Program cc1plus got fatal signal 4.
(Obvious...) A stripped-down version of the preprocessed source,
which still causes the problem, is included below. (Compiler options
used were: -O -fstrength-reduce -felide-constructors -fschedule-insns
-fdelayed-branch -fsave-memoized -Wall -S -v. Removing -O eliminates
the problem.)
>dhrystone.cc: In function void _GLOBAL_$D$dhrystone_cc ():
>dhrystone.cc:691: warning: array size expression for delete ignored
This should probably say something about destructor functions (if
anything at all), rather than expecting the user to know what
"_GLOBAL_$D$foo" means.
>g++ -g -Wall -DGATHER_STATISTICS -O -fdelayed-branch -fsave-memoized -finline-functions -fstrength-reduce -felide-constructors -c version.cc
>g++: This port of GCC does not support -g flag9@
gperf does not pass GXXFLAGS &c into subdirectories, so it failed
completely on my system. (It assumed it could use -g.)
The "%e" construct in the compiler specification appears to have some
problems; sometimes a couple of garbage characters are printed after
the word "flag"; it's usually "8@" or "9@".
-- Ken
P.S. The makefiles for libg++ shouldn't install it in the `all' rule
before preparing the tests. Better to test the library before
installing it, just in case....
~~~~~~~~~~~~~~~~ foo.cc
typedef void* Pix;
extern unsigned int hash(int );
class intIChunk
{
protected:
int* data;
int base;
int low;
int fence;
int top;
intIChunk* nxt;
intIChunk* prv;
public:
intIChunk(int* d,
int base_idx,
int low_idx,
int fence_idx,
int top_idx);
virtual int valid_index(int i);
};
class intPlex
{
protected:
intIChunk* hd;
int lo;
int fnc;
int csize;
int mods;
void record_change();
void invalidate();
void del_chunk(intIChunk*);
intIChunk* tl();
int one_chunk();
public:
intPlex();
};
class intMChunk : public intIChunk
{
protected:
unsigned long* map;
int valid(int);
public:
intMChunk(int* d,
int base_idx,
int low_idx,
int fence_idx,
int top_idx);
int valid_index(int i);
};
class intMPlex: public intPlex
{
intMChunk* ch;
int unused;
void make_initial_chunks(int up = 1);
void cache(int idx);
void cache(const int* p);
int dopred(int);
int dosucc(int);
public:
intMPlex();
intMPlex(int ch_size);
intMPlex(int lo,
int ch_size);
intMPlex(int lo,
int hi,
const int initval,
int ch_size = 0);
intMPlex( intMPlex&);
void operator= ( intMPlex&);
int valid(int idx);
void prev(int& idx);
void next(int& x);
int& operator [] (int index);
};
inline int intMChunk::valid(int idx)
{
unsigned int i = idx - base;
return map[i / 32 ] & (1 << (i & ( 32 - 1)));
}
inline int intMChunk:: valid_index(int i)
{
return (i >= low
&& i < fence
&& valid(i));
}
static int foo = 17;
inline int& intMPlex:: operator [] (int idx)
{
(void) (ch->intMChunk::valid_index(idx));
return foo;
}
extern Pix px;
static intMPlex p(3);
void MPtest ()
{
px = &p[0];
}
~~~~~~~~~~~~~~~~ end of foo.cc
------- End Forwarded Message
Technical Details
Message-ID:
<8911090140.AA29370@prometheus.MIT.EDU>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!watmath!uunet!tut.cis.ohio-state.edu!MIT.EDU!RaeburnShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!watmath!uunet!tut.cis.ohio-state.edu!MIT.EDU!Raeburn From: Raeburn@MIT.EDU (Ken Raeburn) Newsgroups: gnu.g++.lib.bug Subject: oops Message-ID: <8911090140.AA29370@prometheus.MIT.EDU> Date: 9 Nov 89 01:40:30 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 177