Memory utilization of cc1plus blows up compiling tFile.cc under hpux
John David Anglin
dave@hiauly1.hia.nrc.ca
Thu Oct 12 16:04:00 GMT 2000
> I have attached a log of the compilation of tFile.cc below. Note that
> the GC memory allocated balloons to 35762k during the compilation of the
> second instance of void t7(). Under i686 linux, there is just one garbage
> collection at this point (void t7() {GC 5325k -> 2166k}). Thus, for
> some reason the memory required to compile tFile.cc under i686 linux
> is much less.
I have made a little more progress in locating the problem. If I compile
with -fno-gcse, the problem doesn't happen. I ran our of disk space
trying to dump the rtl for the gcse pass. It appears that the explosion
occurs in compute_sets.
I enclose the preprocessed source for a slightly simplified test case.
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)
# 1 "../../../../libio/testsuite/../tests/tFile1.cc"
# 32 "../../../../libio/testsuite/../tests/tFile1.cc"
# 1 "../../../../libio/stream.h" 1
# 25 "../../../../libio/stream.h"
# 1 "../../../../libio/iostream.h" 1
# 25 "../../../../libio/iostream.h"
#pragma interface
# 1 "../../../../libio/streambuf.h" 1
# 25 "../../../../libio/streambuf.h"
#pragma interface
extern "C" {
# 1 "../../../../libio/libio.h" 1
# 27 "../../../../libio/libio.h"
# 1 "../_G_config.h" 1
typedef int _G_int8_t __attribute__((__mode__(__QI__)));
typedef unsigned int _G_uint8_t __attribute__((__mode__(__QI__)));
typedef int _G_int16_t __attribute__((__mode__(__HI__)));
typedef unsigned int _G_uint16_t __attribute__((__mode__(__HI__)));
typedef int _G_int32_t __attribute__((__mode__(__SI__)));
typedef unsigned int _G_uint32_t __attribute__((__mode__(__SI__)));
typedef int _G_int64_t __attribute__((__mode__(__DI__)));
typedef unsigned int _G_uint64_t __attribute__((__mode__(__DI__)));
__extension__ typedef long long _G_llong;
__extension__ typedef unsigned long long _G_ullong;
typedef unsigned int _G_clock_t;
typedef int _G_dev_t;
typedef int _G_fpos_t;
typedef int _G_gid_t;
typedef unsigned int _G_ino_t;
typedef unsigned short _G_mode_t;
typedef unsigned short _G_nlink_t;
typedef int _G_off_t;
typedef int _G_pid_t;
typedef int _G_ptrdiff_t;
typedef int _G_sigset_t;
typedef unsigned int _G_size_t;
typedef long _G_time_t;
typedef int _G_uid_t;
typedef unsigned int _G_wchar_t;
typedef int _G_ssize_t;
typedef unsigned int _G_wint_t;
typedef __builtin_va_list _G_va_list;
# 1 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 1 3
# 30 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 3
# 39 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 3
# 48 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 3
# 104 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 3
# 127 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 3
# 144 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 3
# 195 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 3
# 229 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 3
# 267 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stddef.h" 3
# 87 "../_G_config.h" 2
# 31 "../../../../libio/libio.h" 2
# 121 "../../../../libio/libio.h"
struct _IO_jump_t; struct _IO_FILE;
typedef void _IO_lock_t;
struct _IO_marker {
struct _IO_marker *_next;
struct _IO_FILE *_sbuf;
int _pos;
# 208 "../../../../libio/libio.h"
};
struct _IO_FILE {
int _flags;
char* _IO_read_ptr;
char* _IO_read_end;
char* _IO_read_base;
char* _IO_write_base;
char* _IO_write_ptr;
char* _IO_write_end;
char* _IO_buf_base;
char* _IO_buf_end;
char *_IO_save_base;
char *_IO_backup_base;
char *_IO_save_end;
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno;
int _blksize;
_G_off_t _offset;
unsigned short _cur_column;
char _unused;
char _shortbuf[1];
};
struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_stdin_, _IO_stdout_, _IO_stderr_;
typedef struct
{
_G_ssize_t (*read) (struct _IO_FILE *, void *, _G_ssize_t);
_G_ssize_t (*write) (struct _IO_FILE *, const void *, _G_ssize_t);
_G_off_t (*seek) (struct _IO_FILE *, _G_off_t, int);
int (*close) (struct _IO_FILE *);
} _IO_cookie_io_functions_t;
struct _IO_cookie_file
{
struct _IO_FILE file;
const void *vtable;
void *cookie;
_IO_cookie_io_functions_t io_functions;
};
extern "C" {
extern int __underflow (_IO_FILE *);
extern int __uflow (_IO_FILE *);
extern int __overflow (_IO_FILE *, int);
extern int _IO_getc (_IO_FILE *__fp);
extern int _IO_putc (int __c, _IO_FILE *__fp);
extern int _IO_feof (_IO_FILE *__fp);
extern int _IO_ferror (_IO_FILE *__fp);
extern int _IO_peekc_locked (_IO_FILE *__fp);
extern void _IO_flockfile (_IO_FILE *);
extern void _IO_funlockfile (_IO_FILE *);
extern int _IO_ftrylockfile (_IO_FILE *);
extern int _IO_vfscanf (_IO_FILE *, const char *, _G_va_list, int *);
extern int _IO_vfprintf (_IO_FILE *, const char *, _G_va_list);
extern _G_ssize_t _IO_padn (_IO_FILE *, int, _G_ssize_t);
extern _G_size_t _IO_sgetn (_IO_FILE *, void *, _G_size_t);
extern _G_off_t _IO_seekoff (_IO_FILE *, _G_off_t, int, int);
extern _G_off_t _IO_seekpos (_IO_FILE *, _G_off_t, int);
extern void _IO_free_backup_area (_IO_FILE *);
}
# 37 "../../../../libio/streambuf.h" 2
}
extern "C++" {
class istream;
class ostream; class streambuf;
typedef _G_off_t streamoff;
typedef _G_off_t streampos;
typedef _G_ssize_t streamsize;
typedef unsigned long __fmtflags;
typedef unsigned char __iostate;
struct _ios_fields
{
streambuf *_strbuf;
ostream* _tie;
int _width;
__fmtflags _flags;
short _fill;
__iostate _state;
__iostate _exceptions;
int _precision;
void *_arrays;
};
enum state_value {
_good = 0,
_eof = 1,
_fail = 2,
_bad = 4 };
enum open_mode {
input = 1,
output = 2,
atend = 4,
append = 8 };
class ios : public _ios_fields {
ios& operator=(ios&);
ios (const ios&);
public:
typedef __fmtflags fmtflags;
typedef int iostate;
typedef int openmode;
typedef _G_ssize_t streamsize;
enum io_state {
goodbit = 0,
eofbit = 1,
failbit = 2,
badbit = 4 };
enum open_mode {
in = 1,
out = 2,
ate = 4,
app = 8,
trunc = 16,
nocreate = 32,
noreplace = 64,
bin = 128,
binary = 128 };
enum seek_dir { beg, cur, end};
typedef enum seek_dir seekdir;
enum { skipws=01,
left=02, right=04, internal=010,
dec=020, oct=040, hex=0100,
showbase=0200, showpoint=0400,
uppercase=01000, showpos=02000,
scientific=04000, fixed=010000,
unitbuf=020000, stdio=040000
};
enum {
basefield=dec+oct+hex,
floatfield = scientific+fixed,
adjustfield = left+right+internal
};
# 177 "../../../../libio/streambuf.h"
ostream* tie() const { return _tie; }
ostream* tie(ostream* val) { ostream* save=_tie; _tie=val; return save; }
short fill() const { return _fill; }
short fill(short newf)
{short oldf = _fill; _fill = newf; return oldf;}
fmtflags flags() const { return _flags; }
fmtflags flags(fmtflags new_val) {
fmtflags old_val = _flags; _flags = new_val; return old_val; }
int precision() const { return _precision; }
int precision(int newp) {
unsigned short oldp = _precision; _precision = (unsigned short)newp;
return oldp; }
fmtflags setf(fmtflags val) {
fmtflags oldbits = _flags;
_flags |= val; return oldbits; }
fmtflags setf(fmtflags val, fmtflags mask) {
fmtflags oldbits = _flags;
_flags = (_flags & ~mask) | (val & mask); return oldbits; }
fmtflags unsetf(fmtflags mask) {
fmtflags oldbits = _flags;
_flags &= ~mask; return oldbits; }
int width() const { return _width; }
int width(int val) { int save = _width; _width = val; return save; }
void _throw_failure() const { }
void clear(iostate state = 0) {
_state = _strbuf ? state : state|badbit;
if (_state & _exceptions) _throw_failure(); }
void set(iostate flag) { _state |= flag;
if (_state & _exceptions) _throw_failure(); }
void setstate(iostate flag) { _state |= flag;
if (_state & _exceptions) _throw_failure(); }
int good() const { return _state == 0; }
int eof() const { return _state & ios::eofbit; }
int fail() const { return _state & (ios::badbit|ios::failbit); }
int bad() const { return _state & ios::badbit; }
iostate rdstate() const { return _state; }
operator void*() const { return fail() ? (void*)0 : (void*)(-1); }
int operator!() const { return fail(); }
iostate exceptions() const { return _exceptions; }
void exceptions(iostate enable) {
_exceptions = enable;
if (_state & _exceptions) _throw_failure(); }
streambuf* rdbuf() const { return _strbuf; }
streambuf* rdbuf(streambuf *_s) {
streambuf *_old = _strbuf; _strbuf = _s; clear (); return _old; }
static int sync_with_stdio(int on);
static void sync_with_stdio() { sync_with_stdio(1); }
static fmtflags bitalloc();
static int xalloc();
void*& pword(int);
void* pword(int) const;
long& iword(int);
long iword(int) const;
void unset(state_value flag) { _state &= ~flag; }
void close();
int is_open();
int readable();
int writable();
class Init {
public:
Init () { }
};
protected:
inline ios(streambuf* sb = 0, ostream* tie_to = 0);
inline virtual ~ios();
inline void init(streambuf* sb, ostream* tie = 0);
};
typedef ios::seek_dir _seek_dir;
# 276 "../../../../libio/streambuf.h"
class streammarker : private _IO_marker {
friend class streambuf;
void set_offset(int offset) { _pos = offset; }
public:
streammarker(streambuf *sb);
~streammarker();
int saving() { return 1; }
int delta(streammarker&);
int delta();
};
struct streambuf : public _IO_FILE {
friend class ios;
friend class istream;
friend class ostream;
friend class streammarker;
const void *&_vtable() { return *(const void**)((_IO_FILE*)this + 1); }
protected:
static streambuf* _list_all;
_IO_FILE*& xchain() { return _chain; }
void _un_link();
void _link_in();
char* gptr() const
{ return _flags & 0x100 ? _IO_save_base : _IO_read_ptr; }
char* pptr() const { return _IO_write_ptr; }
char* egptr() const
{ return _flags & 0x100 ? _IO_save_end : _IO_read_end; }
char* epptr() const { return _IO_write_end; }
char* pbase() const { return _IO_write_base; }
char* eback() const
{ return _flags & 0x100 ? _IO_save_base : _IO_read_base;}
char* base() const { return _IO_buf_base; }
char* ebuf() const { return _IO_buf_end; }
int blen() const { return _IO_buf_end - _IO_buf_base; }
void xput_char(char c) { *_IO_write_ptr++ = c; }
int xflags() { return _flags; }
int xflags(int f) {int fl = _flags; _flags = f; return fl;}
void xsetflags(int f) { _flags |= f; }
void xsetflags(int f, int mask)
{ _flags = (_flags & ~mask) | (f & mask); }
void gbump(int n)
{ _flags & 0x100 ? (_IO_save_base+=n):(_IO_read_ptr+=n);}
void pbump(int n) { _IO_write_ptr += n; }
void setb(char* b, char* eb, int a=0);
void setp(char* p, char* ep)
{ _IO_write_base=_IO_write_ptr=p; _IO_write_end=ep; }
void setg(char* eb, char* g, char *eg) {
if (_flags & 0x100) _IO_free_backup_area(this);
_IO_read_base = eb; _IO_read_ptr = g; _IO_read_end = eg; }
char *shortbuf() { return _shortbuf; }
int in_backup() { return _flags & 0x100; }
char *Gbase() { return in_backup() ? _IO_save_base : _IO_read_base; }
char *eGptr() { return in_backup() ? _IO_save_end : _IO_read_end; }
char *Bbase() { return in_backup() ? _IO_read_base : _IO_save_base; }
char *Bptr() { return _IO_backup_base; }
char *eBptr() { return in_backup() ? _IO_read_end : _IO_save_end; }
char *Nbase() { return _IO_save_base; }
char *eNptr() { return _IO_save_end; }
int have_backup() { return _IO_save_base != __null; }
int have_markers() { return _markers != __null; }
void free_backup_area();
void unsave_markers();
int put_mode() { return _flags & 0x800; }
int switch_to_get_mode();
streambuf(int flags=0);
public:
static int flush_all();
static void flush_all_linebuffered();
virtual ~streambuf();
virtual int overflow(int c = (-1));
virtual int underflow();
virtual int uflow();
virtual int pbackfail(int c);
virtual streamsize xsputn(const char* s, streamsize n);
virtual streamsize xsgetn(char* s, streamsize n);
virtual streampos seekoff(streamoff, _seek_dir, int mode=ios::in|ios::out);
virtual streampos seekpos(streampos pos, int mode = ios::in|ios::out);
streampos pubseekoff(streamoff o, _seek_dir d, int mode=ios::in|ios::out)
{ return _IO_seekoff (this, o, d, mode); }
streampos pubseekpos(streampos pos, int mode = ios::in|ios::out)
{ return _IO_seekpos (this, pos, mode); }
streampos sseekoff(streamoff, _seek_dir, int mode=ios::in|ios::out);
streampos sseekpos(streampos pos, int mode = ios::in|ios::out);
virtual streambuf* setbuf(char* p, int len);
virtual int sync();
virtual int doallocate();
int seekmark(streammarker& mark, int delta = 0);
int sputbackc(char c);
int sungetc();
int unbuffered() { return _flags & 2 ? 1 : 0; }
int linebuffered() { return _flags & 0x200 ? 1 : 0; }
void unbuffered(int i)
{ if (i) _flags |= 2; else _flags &= ~2; }
void linebuffered(int i)
{ if (i) _flags |= 0x200; else _flags &= ~0x200; }
int allocate() {
if (base() || unbuffered()) return 0;
else return doallocate(); }
void allocbuf() { if (base() == __null) doallocbuf(); }
void doallocbuf();
int in_avail() { return _IO_read_end - _IO_read_ptr; }
int out_waiting() { return _IO_write_ptr - _IO_write_base; }
streamsize sputn(const char* s, streamsize n) { return xsputn(s, n); }
streamsize padn(char pad, streamsize n) { return _IO_padn(this, pad, n); }
streamsize sgetn(char* s, streamsize n) { return _IO_sgetn(this, s, n); }
int ignore(int);
int get_column();
int set_column(int);
long sgetline(char* buf, _G_size_t n, char delim, int putback_delim);
int sputc(int c) { return _IO_putc(c, this); }
int sbumpc() { return _IO_getc(this); }
int sgetc() { return ((this)->_IO_read_ptr >= (this)->_IO_read_end && __underflow (this) == (-1) ? (-1) : *(unsigned char *) (this)->_IO_read_ptr); }
int snextc() {
if (_IO_read_ptr >= _IO_read_end && __underflow(this) == (-1))
return (-1);
else return _IO_read_ptr++, sgetc(); }
void stossc() { if (_IO_read_ptr < _IO_read_end) _IO_read_ptr++; }
int vscan(char const *fmt0, _G_va_list ap, ios* stream = __null);
int scan(char const *fmt0 ...);
int vform(char const *fmt0, _G_va_list ap);
int form(char const *fmt0 ...);
virtual streamsize sys_read(char* buf, streamsize size);
virtual streamsize sys_write(const char*, streamsize);
virtual streampos sys_seek(streamoff, _seek_dir);
virtual int sys_close();
virtual int sys_stat(void*);
};
class filebuf : public streambuf {
protected:
void init();
public:
static const int openprot;
filebuf();
filebuf(int fd);
filebuf(int fd, char* p, int len);
~filebuf();
filebuf* attach(int fd);
filebuf* open(const char *filename, const char *mode);
filebuf* open(const char *filename, ios::openmode mode, int prot = 0664);
virtual int underflow();
virtual int overflow(int c = (-1));
int is_open() const { return _fileno >= 0; }
int fd() const { return is_open() ? _fileno : (-1); }
filebuf* close();
virtual int doallocate();
virtual streampos seekoff(streamoff, _seek_dir, int mode=ios::in|ios::out);
virtual streambuf* setbuf(char* p, int len);
streamsize xsputn(const char* s, streamsize n);
streamsize xsgetn(char* s, streamsize n);
virtual int sync();
protected:
int is_reading() { return eback() != egptr(); }
char* cur_ptr() { return is_reading() ? gptr() : pptr(); }
char* file_ptr() { return eGptr(); }
virtual streamsize sys_read(char* buf, streamsize size);
virtual streampos sys_seek(streamoff, _seek_dir);
virtual streamsize sys_write(const char*, streamsize);
virtual int sys_stat(void*);
virtual int sys_close();
};
inline void ios::init(streambuf* sb, ostream* tie_to) {
_state = sb ? ios::goodbit : ios::badbit; _exceptions=0;
_strbuf=sb; _tie = tie_to; _width=0; _fill=' ';
_flags=ios::skipws|ios::dec;
_precision=6; _arrays = 0; }
inline ios::ios(streambuf* sb, ostream* tie_to) { init(sb, tie_to); }
inline ios::~ios() {
operator delete[] (_arrays);
}
}
# 32 "../../../../libio/iostream.h" 2
extern "C++" {
class istream; class ostream;
typedef ios& (*__manip)(ios&);
typedef istream& (*__imanip)(istream&);
typedef ostream& (*__omanip)(ostream&);
extern istream& ws(istream& ins);
extern ostream& flush(ostream& outs);
extern ostream& endl(ostream& outs);
extern ostream& ends(ostream& outs);
class ostream : virtual public ios
{
void do_osfx();
public:
ostream() { }
ostream(streambuf* sb, ostream* tied=__null);
int opfx() {
if (!good()) return 0;
else { if (_tie) _tie->flush();; return 1;} }
void osfx() {;
if (flags() & (ios::unitbuf|ios::stdio))
do_osfx(); }
ostream& flush();
ostream& put(char c) { _strbuf->sputc(c); return *this; }
ostream& put(unsigned char c) { return put((char)c); }
ostream& put(signed char c) { return put((char)c); }
ostream& write(const char *s, streamsize n);
ostream& write(const unsigned char *s, streamsize n)
{ return write((const char*)s, n);}
ostream& write(const signed char *s, streamsize n)
{ return write((const char*)s, n);}
ostream& write(const void *s, streamsize n)
{ return write((const char*)s, n);}
ostream& seekp(streampos);
ostream& seekp(streamoff, _seek_dir);
streampos tellp();
ostream& form(const char *format ...);
ostream& vform(const char *format, _G_va_list args);
ostream& operator<<(char c);
ostream& operator<<(unsigned char c) { return (*this) << (char)c; }
ostream& operator<<(signed char c) { return (*this) << (char)c; }
ostream& operator<<(const char *s);
ostream& operator<<(const unsigned char *s)
{ return (*this) << (const char*)s; }
ostream& operator<<(const signed char *s)
{ return (*this) << (const char*)s; }
ostream& operator<<(const void *p);
ostream& operator<<(int n);
ostream& operator<<(unsigned int n);
ostream& operator<<(long n);
ostream& operator<<(unsigned long n);
__extension__ ostream& operator<<(long long n);
__extension__ ostream& operator<<(unsigned long long n);
ostream& operator<<(short n) {return operator<<((int)n);}
ostream& operator<<(unsigned short n) {return operator<<((unsigned int)n);}
ostream& operator<<(bool b) { return operator<<((int)b); }
ostream& operator<<(double n);
ostream& operator<<(float n) { return operator<<((double)n); }
ostream& operator<<(long double n) { return operator<<((double)n); }
ostream& operator<<(__omanip func) { return (*func)(*this); }
ostream& operator<<(__manip func) {(*func)(*this); return *this;}
ostream& operator<<(streambuf*);
streambuf* ostreambuf() const { return _strbuf; }
};
class istream : virtual public ios
{
protected:
_G_size_t _gcount;
int _skip_ws();
public:
istream(): _gcount (0) { }
istream(streambuf* sb, ostream*tied=__null);
istream& get(char* ptr, int len, char delim = '\n');
istream& get(unsigned char* ptr, int len, char delim = '\n')
{ return get((char*)ptr, len, delim); }
istream& get(char& c);
istream& get(unsigned char& c) { return get((char&)c); }
istream& getline(char* ptr, int len, char delim = '\n');
istream& getline(unsigned char* ptr, int len, char delim = '\n')
{ return getline((char*)ptr, len, delim); }
istream& get(signed char& c) { return get((char&)c); }
istream& get(signed char* ptr, int len, char delim = '\n')
{ return get((char*)ptr, len, delim); }
istream& getline(signed char* ptr, int len, char delim = '\n')
{ return getline((char*)ptr, len, delim); }
istream& read(char *ptr, streamsize n);
istream& read(unsigned char *ptr, streamsize n)
{ return read((char*)ptr, n); }
istream& read(signed char *ptr, streamsize n)
{ return read((char*)ptr, n); }
istream& read(void *ptr, streamsize n)
{ return read((char*)ptr, n); }
istream& get(streambuf& sb, char delim = '\n');
istream& gets(char **s, char delim = '\n');
int ipfx(int need = 0) {
if (!good()) { set(ios::failbit); return 0; }
else {
;
if (_tie && (need == 0 || rdbuf()->in_avail() < need)) _tie->flush();
if (!need && (flags() & ios::skipws)) return _skip_ws();
else return 1;
}
}
int ipfx0() {
if (!good()) { set(ios::failbit); return 0; }
else {
;
if (_tie) _tie->flush();
if (flags() & ios::skipws) return _skip_ws();
else return 1;
}
}
int ipfx1() {
if (!good()) { set(ios::failbit); return 0; }
else {
;
if (_tie && rdbuf()->in_avail() == 0) _tie->flush();
return 1;
}
}
void isfx() {; }
int get() { if (!ipfx1()) return (-1);
else { int ch = _strbuf->sbumpc();
if (ch == (-1)) set(ios::eofbit);
isfx();
return ch;
} }
int peek();
_G_size_t gcount() { return _gcount; }
istream& ignore(int n=1, int delim = (-1));
int sync ();
istream& seekg(streampos);
istream& seekg(streamoff, _seek_dir);
streampos tellg();
istream& putback(char ch) {
if (good() && _strbuf->sputbackc(ch) == (-1)) clear(ios::badbit);
return *this;}
istream& unget() {
if (good() && _strbuf->sungetc() == (-1)) clear(ios::badbit);
return *this;}
istream& scan(const char *format ...);
istream& vscan(const char *format, _G_va_list args);
istream& unget(char ch) { return putback(ch); }
int skip(int i);
streambuf* istreambuf() const { return _strbuf; }
istream& operator>>(char*);
istream& operator>>(unsigned char* p) { return operator>>((char*)p); }
istream& operator>>(signed char*p) { return operator>>((char*)p); }
istream& operator>>(char& c);
istream& operator>>(unsigned char& c) {return operator>>((char&)c);}
istream& operator>>(signed char& c) {return operator>>((char&)c);}
istream& operator>>(int&);
istream& operator>>(long&);
__extension__ istream& operator>>(long long&);
__extension__ istream& operator>>(unsigned long long&);
istream& operator>>(short&);
istream& operator>>(unsigned int&);
istream& operator>>(unsigned long&);
istream& operator>>(unsigned short&);
istream& operator>>(bool&);
istream& operator>>(float&);
istream& operator>>(double&);
istream& operator>>(long double&);
istream& operator>>( __manip func) {(*func)(*this); return *this;}
istream& operator>>(__imanip func) { return (*func)(*this); }
istream& operator>>(streambuf*);
};
class iostream : public istream, public ostream
{
public:
iostream() { }
iostream(streambuf* sb, ostream*tied=__null);
};
class _IO_istream_withassign : public istream {
public:
_IO_istream_withassign& operator=(istream&);
_IO_istream_withassign& operator=(_IO_istream_withassign& rhs)
{ return operator= (static_cast<istream&> (rhs)); }
};
class _IO_ostream_withassign : public ostream {
public:
_IO_ostream_withassign& operator=(ostream&);
_IO_ostream_withassign& operator=(_IO_ostream_withassign& rhs)
{ return operator= (static_cast<ostream&> (rhs)); }
};
extern _IO_istream_withassign cin;
extern _IO_ostream_withassign cout, cerr;
extern _IO_ostream_withassign clog
;
extern istream& lock(istream& ins);
extern istream& unlock(istream& ins);
extern ostream& lock(ostream& outs);
extern ostream& unlock(ostream& outs);
struct Iostream_init { } ;
inline ios& dec(ios& i)
{ i.setf(ios::dec, ios::dec|ios::hex|ios::oct); return i; }
inline ios& hex(ios& i)
{ i.setf(ios::hex, ios::dec|ios::hex|ios::oct); return i; }
inline ios& oct(ios& i)
{ i.setf(ios::oct, ios::dec|ios::hex|ios::oct); return i; }
}
# 34 "../../../../libio/stream.h" 2
extern "C++" {
extern char* form(const char*, ...);
extern char* dec(long, int=0);
extern char* dec(int, int=0);
extern char* dec(unsigned long, int=0);
extern char* dec(unsigned int, int=0);
extern char* hex(long, int=0);
extern char* hex(int, int=0);
extern char* hex(unsigned long, int=0);
extern char* hex(unsigned int, int=0);
extern char* oct(long, int=0);
extern char* oct(int, int=0);
extern char* oct(unsigned long, int=0);
extern char* oct(unsigned int, int=0);
char* chr(char ch, int width = 0);
char* str(const char* s, int width = 0);
inline istream& WS(istream& __str) { return ws(__str); }
}
# 33 "../../../../libio/testsuite/../tests/tFile1.cc" 2
# 1 "../../../../libio/fstream.h" 1
# 25 "../../../../libio/fstream.h"
#pragma interface
extern "C++" {
class fstreambase : virtual public ios {
mutable filebuf __my_fb;
void __fb_init ();
public:
fstreambase();
fstreambase(int fd);
fstreambase(int fd, char *p, int l);
fstreambase(const char *name, int mode, int prot=0664);
void close();
filebuf* rdbuf() const { return &__my_fb; }
void open(const char *name, int mode, int prot=0664);
int is_open() const { return rdbuf()->is_open(); }
void setbuf(char *ptr, int len) { rdbuf()->setbuf(ptr, len); }
void attach(int fd);
int filedesc() { return rdbuf()->fd(); }
fstreambase& raw() { rdbuf()->setbuf(__null, 0); return *this; }
};
class ifstream : public fstreambase, public istream {
public:
ifstream() : fstreambase() { }
ifstream(int fd) : fstreambase(fd) { }
ifstream(int fd, char *p, int l) : fstreambase(fd, p, l) { }
ifstream(const char *name, int mode=ios::in, int prot=0664)
: fstreambase(name, mode | ios::in, prot) { }
void open(const char *name, int mode=ios::in, int prot=0664)
{ fstreambase::open(name, mode | ios::in, prot); }
};
class ofstream : public fstreambase, public ostream {
public:
ofstream() : fstreambase() { }
ofstream(int fd) : fstreambase(fd) { }
ofstream(int fd, char *p, int l) : fstreambase(fd, p, l) { }
ofstream(const char *name, int mode=ios::out, int prot=0664)
: fstreambase(name, mode | ios::out, prot) { }
void open(const char *name, int mode=ios::out, int prot=0664)
{ fstreambase::open(name, mode | ios::out, prot); }
};
class fstream : public fstreambase, public iostream {
public:
fstream() : fstreambase() { }
fstream(int fd) : fstreambase(fd) { }
fstream(const char *name, int mode, int prot=0664)
: fstreambase(name, mode, prot) { }
fstream(int fd, char *p, int l) : fstreambase(fd, p, l) { }
void open(const char *name, int mode, int prot=0664)
{ fstreambase::open(name, mode, prot); }
};
}
# 34 "../../../../libio/testsuite/../tests/tFile1.cc" 2
# 1 "../../../../libio/strstream.h" 1
# 27 "../../../../libio/strstream.h"
#pragma interface
# 1 "../../../../libio/strfile.h" 1
# 26 "../../../../libio/strfile.h"
typedef void *(*_IO_alloc_type) (_G_size_t);
typedef void (*_IO_free_type) (void*);
struct _IO_str_fields
{
_IO_alloc_type _allocate_buffer;
_IO_free_type _free_buffer;
};
struct _IO_streambuf
{
struct _IO_FILE _f;
const void *_vtable;
};
typedef struct _IO_strfile_
{
struct _IO_streambuf _sbf;
struct _IO_str_fields _s;
} _IO_strfile;
# 34 "../../../../libio/strstream.h" 2
extern "C++" {
class strstreambuf : public streambuf
{
struct _IO_str_fields _s;
friend class istrstream;
void init_dynamic(_IO_alloc_type alloc, _IO_free_type free,
int initial_size = 0);
void init_static(char *ptr, int size, char *pstart);
void init_readonly(const char *ptr, int size);
protected:
virtual int overflow(int = (-1));
virtual int underflow();
virtual int pbackfail(int c);
public:
virtual ~strstreambuf();
strstreambuf() { init_dynamic(0, 0); }
strstreambuf(int initial_size) { init_dynamic(0, 0, initial_size); }
strstreambuf(void *(*__alloc)(_G_size_t), void (*__free)(void*))
{ init_dynamic(__alloc, __free); }
strstreambuf(char *ptr, int size, char *pstart = __null)
{ init_static(ptr, size, pstart); }
strstreambuf(unsigned char *ptr, int size, unsigned char *pstart = __null)
{ init_static((char*)ptr, size, (char*)pstart); }
strstreambuf(const char *ptr, int size)
{ init_readonly(ptr, size); }
strstreambuf(const unsigned char *ptr, int size)
{ init_readonly((const char*)ptr, size); }
strstreambuf(signed char *ptr, int size, signed char *pstart = __null)
{ init_static((char*)ptr, size, (char*)pstart); }
strstreambuf(const signed char *ptr, int size)
{ init_readonly((const char*)ptr, size); }
int frozen() { return _flags & 1 ? 1 : 0; }
void freeze(int n=1)
{ if (((this)->_s._allocate_buffer != (_IO_alloc_type)0))
{ if (n) _flags |= 1; else _flags &= ~1; } }
_G_ssize_t pcount();
char *str();
virtual streampos seekoff(streamoff, _seek_dir, int mode=ios::in|ios::out);
};
class strstreambase : virtual public ios {
protected:
strstreambuf __my_sb;
public:
strstreambuf* rdbuf() { return &__my_sb; }
protected:
strstreambase() { init (&__my_sb); }
strstreambase(char *cp, int n, int mode=ios::out);
};
class istrstream : public strstreambase, public istream {
public:
istrstream(const char*, int=0);
};
class ostrstream : public strstreambase, public ostream {
public:
ostrstream() { }
ostrstream(char *cp, int n, int mode=ios::out) :strstreambase(cp,n,mode){}
_G_ssize_t pcount() { return ((strstreambuf*)_strbuf)->pcount(); }
char *str() { return ((strstreambuf*)_strbuf)->str(); }
void freeze(int n = 1) { ((strstreambuf*)_strbuf)->freeze(n); }
int frozen() { return ((strstreambuf*)_strbuf)->frozen(); }
};
class strstream : public strstreambase, public iostream {
public:
strstream() { }
strstream(char *cp, int n, int mode=ios::out) :strstreambase(cp,n,mode){}
_G_ssize_t pcount() { return ((strstreambuf*)_strbuf)->pcount(); }
char *str() { return ((strstreambuf*)_strbuf)->str(); }
void freeze(int n = 1) { ((strstreambuf*)_strbuf)->freeze(n); }
int frozen() { return ((strstreambuf*)_strbuf)->frozen(); }
};
}
# 36 "../../../../libio/testsuite/../tests/tFile1.cc" 2
# 1 "/usr/include/unistd.h" 1 3
# 11 "/usr/include/unistd.h" 3
# 1 "/usr/include/sys/unistd.h" 1 3
# 19 "/usr/include/sys/unistd.h" 3
# 1 "/usr/include/sys/stdsyms.h" 1 3
# 19 "/usr/include/sys/stdsyms.h" 3
# 52 "/usr/include/sys/stdsyms.h" 3
# 113 "/usr/include/sys/stdsyms.h" 3
# 24 "/usr/include/sys/unistd.h" 2 3
# 1 "/xxx/gnu/gcc-2.97/objdir/gcc/include/sys/types.h" 1 3
# 16 "/xxx/gnu/gcc-2.97/objdir/gcc/include/sys/types.h" 3
# 1 "/usr/include/sys/_inttypes.h" 1 3
# 33 "/usr/include/sys/_inttypes.h" 3
typedef char int8_t;
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short uint16_t;
typedef int int32_t;
typedef unsigned int uint32_t;
typedef int intfast_t;
typedef unsigned int uintfast_t;
typedef int32_t intmax_t;
typedef uint32_t uintmax_t;
typedef long intptr_t;
typedef unsigned long uintptr_t;
# 102 "/usr/include/sys/_inttypes.h" 3
typedef char int_least8_t;
typedef unsigned char uint_least8_t;
typedef int int_fast8_t;
typedef unsigned int uint_fast8_t;
typedef short int_least16_t;
typedef unsigned short uint_least16_t;
typedef int int_fast16_t;
typedef unsigned int uint_fast16_t;
typedef int int_least32_t;
typedef unsigned int uint_least32_t;
typedef int int_fast32_t;
typedef unsigned int uint_fast32_t;
# 152 "/usr/include/sys/_inttypes.h" 3
# 165 "/usr/include/sys/_inttypes.h" 3
typedef uint32_t ptr32_t;
# 24 "/xxx/gnu/gcc-2.97/objdir/gcc/include/sys/types.h" 2 3
typedef int32_t dev_t;
typedef uint32_t ino_t;
typedef uint16_t mode_t;
typedef uint16_t nlink_t;
typedef int32_t fpos32_t;
typedef int32_t fpos_t;
typedef uint32_t fsblkcnt32_t;
typedef uint32_t fsblkcnt_t;
typedef int32_t off32_t;
typedef int32_t off_t;
typedef uint32_t fsfilcnt32_t;
typedef uint32_t fsfilcnt_t;
typedef int32_t blkcnt32_t;
typedef int32_t blkcnt_t;
typedef int32_t pid_t;
typedef int32_t lwpid_t;
typedef int32_t gid_t;
typedef int32_t uid_t;
typedef int32_t tid_t;
typedef int32_t ssize_t;
typedef uint16_t __site_t;
typedef uint16_t __cnode_t;
typedef long time_t;
typedef unsigned int size_t;
typedef uint32_t clock_t;
typedef int32_t key_t;
typedef unsigned short __ushort;
typedef int32_t __daddr_t;
typedef char *__caddr_t;
typedef int32_t __swblk_t;
# 328 "/xxx/gnu/gcc-2.97/objdir/gcc/include/sys/types.h" 3
# 355 "/xxx/gnu/gcc-2.97/objdir/gcc/include/sys/types.h" 3
# 393 "/xxx/gnu/gcc-2.97/objdir/gcc/include/sys/types.h" 3
# 410 "/xxx/gnu/gcc-2.97/objdir/gcc/include/sys/types.h" 3
# 426 "/xxx/gnu/gcc-2.97/objdir/gcc/include/sys/types.h" 3
# 564 "/xxx/gnu/gcc-2.97/objdir/gcc/include/sys/types.h" 3
# 43 "/usr/include/sys/unistd.h" 2 3
extern "C" {
extern void _exit(int);
extern int access(const char *, int);
extern int chdir(const char *);
extern int chown(const char *, uid_t, gid_t);
extern int close(int);
extern char *ctermid(char *);
extern char *cuserid(char *);
extern int dup(int);
extern int dup2(int, int);
extern int execl(const char *, const char *, ...);
extern int execle(const char *, const char *, ...);
extern int execlp(const char *, const char *, ...);
extern int execv(const char *, char *const []);
extern int execve(const char *, char *const [], char *const []);
extern int execvp(const char *, char *const []);
extern long fpathconf(int, int);
extern char *getcwd(char *, size_t);
extern int getgroups(int, gid_t []);
extern char *getlogin(void);
extern int isatty(int);
extern int link(const char *, const char *);
extern off_t lseek(int, off_t, int);
extern long pathconf(const char *, int);
extern int pause(void);
extern int pipe(int *);
extern ssize_t read(int, void *, size_t);
extern int rmdir(const char *);
extern int setgid(gid_t);
extern int setpgid(pid_t, pid_t);
extern pid_t setsid(void);
extern int setuid(uid_t);
extern unsigned int sleep(unsigned int);
extern long sysconf(int);
extern pid_t tcgetpgrp(int);
extern int tcsetpgrp(int, pid_t);
extern char *ttyname(int);
extern int unlink(const char *);
extern ssize_t write(int, const void *, size_t);
# 144 "/usr/include/sys/unistd.h" 3
# 154 "/usr/include/sys/unistd.h" 3
# 169 "/usr/include/sys/unistd.h" 3
# 190 "/usr/include/sys/unistd.h" 3
extern unsigned int alarm(unsigned int);
extern pid_t fork(void);
extern gid_t getegid(void);
extern uid_t geteuid(void);
extern gid_t getgid(void);
extern pid_t getpgrp(void);
extern pid_t getpid(void);
extern pid_t getppid(void);
extern uid_t getuid(void);
# 211 "/usr/include/sys/unistd.h" 3
extern char *optarg;
extern int opterr;
extern int optind;
extern int optopt;
extern int getopt(int, char * const [], const char *);
extern size_t confstr(int, char *, size_t);
extern int chroot(const char *);
extern char *crypt(const char *, const char *);
extern void encrypt(char [64], int);
extern int fsync(int);
extern char *getpass(const char *);
extern int nice(int);
extern void swab(const void *, void *, ssize_t);
# 404 "/usr/include/sys/unistd.h" 3
# 426 "/usr/include/sys/unistd.h" 3
# 448 "/usr/include/sys/unistd.h" 3
# 464 "/usr/include/sys/unistd.h" 3
# 484 "/usr/include/sys/unistd.h" 3
# 558 "/usr/include/sys/unistd.h" 3
}
# 635 "/usr/include/sys/unistd.h" 3
# 877 "/usr/include/sys/unistd.h" 3
# 941 "/usr/include/sys/unistd.h" 3
# 954 "/usr/include/sys/unistd.h" 3
# 12 "/usr/include/unistd.h" 2 3
# 37 "../../../../libio/testsuite/../tests/tFile1.cc" 2
# 1 "../../../../libio/SFile.h" 1
# 26 "../../../../libio/SFile.h"
#pragma interface
extern "C++" {
class SFile: public fstream
{
protected:
int sz;
public:
SFile() : fstream() { }
SFile(int fd, int size);
SFile(const char *name, int size, int mode, int prot=0664);
void open(const char *name, int size, int mode, int prot=0664);
int size() { return sz; }
int setsize(int s) { int old = sz; sz = s; return old; }
SFile& get(void* x);
SFile& put(void* x);
SFile& operator[](long i);
};
}
# 39 "../../../../libio/testsuite/../tests/tFile1.cc" 2
# 1 "../../../../libio/PlotFile.h" 1
# 34 "../../../../libio/PlotFile.h"
#pragma interface
extern "C++" {
class PlotFile : public ofstream
{
protected:
PlotFile& cmd(char c);
PlotFile& operator << (const int x);
PlotFile& operator << (const char *s);
public:
PlotFile() : ofstream() { }
PlotFile(int fd) : ofstream(fd) { }
PlotFile(const char *name, int mode=ios::out, int prot=0664)
: ofstream(name, mode, prot) { }
# 69 "../../../../libio/PlotFile.h"
PlotFile& arc(const int xi, const int yi,
const int x0, const int y0,
const int x1, const int y1);
PlotFile& box(const int x0, const int y0,
const int x1, const int y1);
PlotFile& circle(const int x, const int y, const int r);
PlotFile& cont(const int xi, const int yi);
PlotFile& dot(const int xi, const int yi, const int dx,
int n, const int* pat);
PlotFile& erase();
PlotFile& label(const char* s);
PlotFile& line(const int x0, const int y0,
const int x1, const int y1);
PlotFile& linemod(const char* s);
PlotFile& move(const int xi, const int yi);
PlotFile& point(const int xi, const int yi);
PlotFile& space(const int x0, const int y0,
const int x1, const int y1);
};
}
# 40 "../../../../libio/testsuite/../tests/tFile1.cc" 2
# 1 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 1 3
# 10 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 1 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdarg.h" 1 3
# 31 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 57 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdarg.h" 3
# 70 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdarg.h" 3
# 15 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 2 3
extern "C" {
typedef struct {
int __cnt;
unsigned char *__ptr;
unsigned char *__base;
unsigned short __flag;
unsigned char __fileL;
unsigned char __fileH;
} FILE;
typedef struct {
int __cnt;
unsigned char *__ptr;
unsigned char *__base;
unsigned short __flag;
unsigned char __fileL;
unsigned char __fileH;
unsigned char *__bufendp;
unsigned char *__newbase;
unsigned char __smbuf[8+2*4];
void *__unused;
} _FILEX;
typedef double *__va_list;
extern FILE __iob[];
extern int remove(const char *);
extern int rename(const char *, const char *);
extern char *tmpnam(char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern void setbuf(FILE *, char *);
extern int setvbuf(FILE *, char *, int, size_t);
extern int fprintf(FILE *, const char *, ...);
extern int fscanf(FILE *, const char *,...);
extern int printf(const char *,...);
extern int scanf(const char *,...);
extern int sprintf(char *, const char *,...);
extern int sscanf(const char *, const char *,...);
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int fputs(const char *, FILE *);
extern int getc(FILE *);
extern int getchar(void);
extern char *gets(char *);
extern int putc(int, FILE *);
extern int putchar(int);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern FILE *tmpfile(void);
extern int fgetpos(FILE *, fpos_t *);
extern int fsetpos(FILE *, const fpos_t *);
extern FILE *fopen(const char *, const char *);
extern FILE *freopen(const char *, const char *, FILE *);
extern int fseek(FILE *, long int, int);
extern long int ftell(FILE *);
extern void rewind(FILE *);
extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);
extern void perror(const char *);
# 207 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 259 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 267 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
extern size_t fread(void *, size_t, size_t, FILE *);
extern size_t fwrite(const void *, size_t, size_t, FILE *);
# 290 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
extern int __flsbuf(unsigned char, FILE *);
extern int __filbuf(FILE *);
# 326 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 334 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
extern char *ctermid(char *);
extern int fileno(FILE *);
extern FILE *fdopen(int, const char *);
typedef double *__not_va_list__;
extern char *optarg;
extern int opterr;
extern int optind;
extern int optopt;
extern int getopt(int, char * const [], const char *);
extern char *cuserid(char *);
extern int getw(FILE *);
extern int putw(int, FILE *);
extern int pclose(FILE *);
extern FILE *popen(const char *, const char *);
extern char *tempnam(const char *, const char *);
# 431 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
extern int vprintf(const char *, __gnuc_va_list);
extern int vfprintf(FILE *, const char *, __gnuc_va_list);
extern int vsprintf(char *, const char *, __gnuc_va_list);
# 471 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 492 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 506 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 522 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 530 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 557 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
# 565 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdio.h" 3
}
# 42 "../../../../libio/testsuite/../tests/tFile1.cc" 2
# 1 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 1 3
# 11 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
extern "C" {
extern int __nl_char_size;
typedef struct {
int quot;
int rem;
} div_t;
typedef struct {
long int quot;
long int rem;
} ldiv_t;
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *, char **, int);
extern int rand(void);
extern void srand(unsigned int);
extern int atexit(void (*) (void));
extern void exit(int);
extern char *getenv(const char *);
extern int system(const char *);
inline int abs(int d) { return (d>0)?d:-d; }
extern div_t div(int, int);
extern ldiv_t ldiv(long int, long int);
extern long int labs(long int);
extern int mblen(const char *, size_t);
extern int mbtowc(wchar_t *, const char *, size_t);
extern int wctomb(char *, wchar_t);
extern size_t mbstowcs(wchar_t *, const char *, size_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);
extern void free(void *);
extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
# 120 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
extern void abort(void);
extern void *bsearch(const void *, const void *, size_t, size_t, int (*) (const void *, const void *));
extern void *calloc(size_t, size_t);
extern void *malloc(size_t);
extern void *realloc(void *, size_t);
# 156 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 166 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 176 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
extern void setkey(const char *);
extern void lcong48( unsigned short [] );
extern double drand48(void);
extern double erand48(unsigned short []);
extern long jrand48(unsigned short []);
extern long lrand48(void);
extern long mrand48(void);
extern long nrand48(unsigned short []);
extern void srand48(long);
extern unsigned short *seed48(unsigned short []);
extern int putenv(const char *);
# 212 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 272 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 293 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 310 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 326 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 358 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 369 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 382 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
# 393 "/xxx/gnu/gcc-2.97/objdir/gcc/include/stdlib.h" 3
}
# 43 "../../../../libio/testsuite/../tests/tFile1.cc" 2
# 1 "/xxx/gnu/gcc-2.97/objdir/gcc/include/string.h" 1 3
# 11 "/xxx/gnu/gcc-2.97/objdir/gcc/include/string.h" 3
extern "C" {
extern int memcmp(const void *, const void *, size_t);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t);
extern void *memmove(void *, const void *, size_t);
extern char *strcpy(char *, const char *);
extern char *strncpy(char *, const char *, size_t);
extern char *strcat(char *, const char *);
extern int strcmp(const char *, const char *);
extern int strcoll(const char *, const char *);
extern size_t strxfrm(char *, const char *, size_t);
extern char *strchr(const char *, int);
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern char *strstr(const char *, const char *);
extern char *strtok(char *, const char *);
extern char *strerror(int);
# 70 "/xxx/gnu/gcc-2.97/objdir/gcc/include/string.h" 3
extern void *memcpy(void *, const void *, size_t);
extern void *memchr(const void *, int, size_t);
extern void *memset(void *, int, size_t);
extern size_t strcspn(const char *, const char *);
extern size_t strspn(const char *, const char *);
extern size_t strlen(const char *);
extern void *memccpy(void *, const void *, int, size_t);
}
# 44 "../../../../libio/testsuite/../tests/tFile1.cc" 2
# 1 "/xxx/gnu/gcc-2.97/objdir/gcc/include/assert.h" 1 3
# 19 "/xxx/gnu/gcc-2.97/objdir/gcc/include/assert.h" 3
extern "C" {
extern void __eprintf (const char *, const char *, unsigned, const char *)
__attribute__ ((noreturn));
}
# 52 "/xxx/gnu/gcc-2.97/objdir/gcc/include/assert.h" 3
# 45 "../../../../libio/testsuite/../tests/tFile1.cc" 2
const char *tempfile;
class record
{
public:
char c; int i; double d;
};
ostream& operator<<(ostream& s, record& r)
{
return(s << "(i = " << r.i << " c = " << r.c << " d = " << r.d << ")");
}
void t7()
{
char ch;
static char t7_line1[] = "This is a string-based stream.\n";
static char t7_line2[] = "With two lines.\n";
char mybuf[60];
char *bufp;
cout << "creating ostrstream...\n";
ostrstream strout(mybuf, 60);
((void) ((strout.good()) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "../../../../libio/testsuite/../tests/tFile1.cc", 73, "strout.good()"), 0)));
((void) ((strout.writable()) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "../../../../libio/testsuite/../tests/tFile1.cc", 74, "strout.writable()"), 0)));
strout << t7_line1 << t7_line2 << ends;
((void) ((strout.good()) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "../../../../libio/testsuite/../tests/tFile1.cc", 76, "strout.good()"), 0)));
cout << "with contents:\n";
bufp = strout.str();
((void) ((bufp == mybuf) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "../../../../libio/testsuite/../tests/tFile1.cc", 79, "bufp == mybuf"), 0)));
strout.rdbuf()->freeze(0);
cout << mybuf;
cout << "using it to create istrstream...\n";
istrstream strin(mybuf, strlen(mybuf));
((void) ((strin.good()) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "../../../../libio/testsuite/../tests/tFile1.cc", 89, "strin.good()"), 0)));
((void) ((strin.readable()) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "../../../../libio/testsuite/../tests/tFile1.cc", 90, "strin.readable()"), 0)));
cout << "with contents:\n";
char line[100];
strin.getline(line, 100);
int line1_len = strlen(t7_line1);
((void) ((strin.tellg() == line1_len) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "../../../../libio/testsuite/../tests/tFile1.cc", 96, "strin.tellg() == line1_len"), 0)));
int line_len = strin.gcount();
((void) ((line_len == line1_len) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "../../../../libio/testsuite/../tests/tFile1.cc", 98, "line_len == line1_len"), 0)));
cout.write(line, line1_len - 1);
cout << endl;
while (strin.get(ch)) cout.put(ch);
strstream str1;
strstream str2;
str1 << "Testing string-based stream using strstream.\n";
str1.seekg(0);
for (;;) {
int i = str1.get();
if (i == (-1))
break;
str2 << (char)i;
}
str2 << ends;
cout << str2.str();
strout << t7_line1;
((void) ((strout.bad()) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "../../../../libio/testsuite/../tests/tFile1.cc", 119, "strout.bad()"), 0)));
}
main(int argc, char **argv)
{
char temp [1024] = "tempfile";
if (argc > 1 && strncmp(argv[1], "-b", 2) == 0) {
streambuf *sb = cout.rdbuf();
streambuf *ret;
int buffer_size = atoi(&argv[1][2]);
if (buffer_size == 0)
ret = sb->setbuf(__null, 0);
else
ret = sb->setbuf(new char[buffer_size], buffer_size);
if (ret != sb)
cerr << "Warning: cout.rdbuf()->setbuf failed!\n";
strncpy (&temp [8], &argv[1][2], 1000);
temp [1008] = '\0';
}
tempfile = temp;
t7();
}
More information about the Gcc-bugs
mailing list