head 1.2; access; symbols perseant-exfatfs-base-20250801:1.2 perseant-exfatfs-base-20240630:1.2 cjep_sun2x:1.2.0.14 cjep_sun2x-base:1.2 cjep_staticlib_x-base1:1.2 cjep_staticlib_x:1.2.0.12 cjep_staticlib_x-base:1.2 phil-wifi-20200421:1.2 phil-wifi-20200411:1.2 phil-wifi-20200406:1.2 pgoyette-compat-merge-20190127:1.2 pgoyette-compat-20190127:1.2 pgoyette-compat-20190118:1.2 pgoyette-compat-1226:1.2 pgoyette-compat-1126:1.2 pgoyette-compat-1020:1.2 pgoyette-compat-0930:1.2 pgoyette-compat-0906:1.2 pgoyette-compat-0728:1.2 pgoyette-compat-0625:1.2 pgoyette-compat-0521:1.2 pgoyette-compat-0502:1.2 pgoyette-compat-0422:1.2 pgoyette-compat-0415:1.2 pgoyette-compat-0407:1.2 pgoyette-compat-0330:1.2 pgoyette-compat-0322:1.2 pgoyette-compat-0315:1.2 pgoyette-compat:1.2.0.10 pgoyette-compat-base:1.2 perseant-stdc-iso10646:1.2.0.8 perseant-stdc-iso10646-base:1.2 prg-localcount2-base3:1.2 prg-localcount2-base2:1.2 prg-localcount2-base1:1.2 prg-localcount2:1.2.0.6 prg-localcount2-base:1.2 pgoyette-localcount-20170426:1.2 bouyer-socketcan-base1:1.2 pgoyette-localcount-20170320:1.2 bouyer-socketcan:1.2.0.4 bouyer-socketcan-base:1.2 pgoyette-localcount-20170107:1.2 pgoyette-localcount-20161104:1.2 localcount-20160914:1.2 pgoyette-localcount-20160806:1.2 pgoyette-localcount-20160726:1.2 pgoyette-localcount:1.2.0.2 pgoyette-localcount-base:1.2 netbsd-5-2-3-RELEASE:1.1.1.1 netbsd-5-1-5-RELEASE:1.1.1.1 netbsd-6-0-6-RELEASE:1.1.1.1 netbsd-6-1-5-RELEASE:1.1.1.1 yamt-pagecache-base9:1.1.1.1 yamt-pagecache-tag8:1.1.1.1 netbsd-6-1-4-RELEASE:1.1.1.1 netbsd-6-0-5-RELEASE:1.1.1.1 tls-earlyentropy:1.1.1.1.0.60 tls-earlyentropy-base:1.2 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.1 riastradh-drm2-base3:1.1.1.1 netbsd-6-1-3-RELEASE:1.1.1.1 netbsd-6-0-4-RELEASE:1.1.1.1 netbsd-5-2-2-RELEASE:1.1.1.1 netbsd-5-1-4-RELEASE:1.1.1.1 netbsd-6-1-2-RELEASE:1.1.1.1 netbsd-6-0-3-RELEASE:1.1.1.1 netbsd-5-2-1-RELEASE:1.1.1.1 netbsd-5-1-3-RELEASE:1.1.1.1 netbsd-6-1-1-RELEASE:1.1.1.1 riastradh-drm2-base2:1.1.1.1 riastradh-drm2-base1:1.1.1.1 riastradh-drm2:1.1.1.1.0.54 riastradh-drm2-base:1.1.1.1 netbsd-6-1:1.1.1.1.0.58 netbsd-6-0-2-RELEASE:1.1.1.1 netbsd-6-1-RELEASE:1.1.1.1 netbsd-6-1-RC4:1.1.1.1 netbsd-6-1-RC3:1.1.1.1 agc-symver:1.1.1.1.0.56 agc-symver-base:1.1.1.1 netbsd-6-1-RC2:1.1.1.1 netbsd-6-1-RC1:1.1.1.1 yamt-pagecache-base8:1.1.1.1 netbsd-5-2:1.1.1.1.0.52 netbsd-6-0-1-RELEASE:1.1.1.1 yamt-pagecache-base7:1.1.1.1 netbsd-5-2-RELEASE:1.1.1.1 netbsd-5-2-RC1:1.1.1.1 matt-nb6-plus-nbase:1.1.1.1 yamt-pagecache-base6:1.1.1.1 netbsd-6-0:1.1.1.1.0.50 netbsd-6-0-RELEASE:1.1.1.1 netbsd-6-0-RC2:1.1.1.1 tls-maxphys:1.1.1.1.0.48 tls-maxphys-base:1.2 matt-nb6-plus:1.1.1.1.0.46 matt-nb6-plus-base:1.1.1.1 netbsd-6-0-RC1:1.1.1.1 yamt-pagecache-base5:1.1.1.1 yamt-pagecache-base4:1.1.1.1 netbsd-6:1.1.1.1.0.44 netbsd-6-base:1.1.1.1 netbsd-5-1-2-RELEASE:1.1.1.1 netbsd-5-1-1-RELEASE:1.1.1.1 yamt-pagecache-base3:1.1.1.1 yamt-pagecache-base2:1.1.1.1 yamt-pagecache:1.1.1.1.0.42 yamt-pagecache-base:1.1.1.1 cherry-xenmp:1.1.1.1.0.40 cherry-xenmp-base:1.1.1.1 bouyer-quota2-nbase:1.1.1.1 bouyer-quota2:1.1.1.1.0.38 bouyer-quota2-base:1.1.1.1 matt-mips64-premerge-20101231:1.1.1.1 matt-nb5-mips64-premerge-20101231:1.1.1.1 matt-nb5-pq3:1.1.1.1.0.36 matt-nb5-pq3-base:1.1.1.1 netbsd-5-1:1.1.1.1.0.34 netbsd-5-1-RELEASE:1.1.1.1 netbsd-5-1-RC4:1.1.1.1 matt-nb5-mips64-k15:1.1.1.1 netbsd-5-1-RC3:1.1.1.1 netbsd-5-1-RC2:1.1.1.1 netbsd-5-1-RC1:1.1.1.1 netbsd-5-0-2-RELEASE:1.1.1.1 matt-nb5-mips64-premerge-20091211:1.1.1.1 matt-premerge-20091211:1.1.1.1 matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.1.1.1 matt-nb4-mips64-k7-u2a-k9b:1.1.1.1 matt-nb5-mips64-u1-k1-k5:1.1.1.1 matt-nb5-mips64:1.1.1.1.0.32 netbsd-5-0-1-RELEASE:1.1.1.1 jym-xensuspend-nbase:1.1.1.1 netbsd-5-0:1.1.1.1.0.30 netbsd-5-0-RELEASE:1.1.1.1 netbsd-5-0-RC4:1.1.1.1 netbsd-5-0-RC3:1.1.1.1 netbsd-5-0-RC2:1.1.1.1 jym-xensuspend:1.1.1.1.0.28 jym-xensuspend-base:1.1.1.1 netbsd-5-0-RC1:1.1.1.1 netbsd-5:1.1.1.1.0.26 netbsd-5-base:1.1.1.1 matt-mips64-base2:1.1.1.1 matt-mips64:1.1.1.1.0.24 mjf-devfs2:1.1.1.1.0.22 mjf-devfs2-base:1.1.1.1 netbsd-4-0-1-RELEASE:1.1.1.1 wrstuden-revivesa-base-3:1.1.1.1 wrstuden-revivesa-base-2:1.1.1.1 wrstuden-fixsa-newbase:1.1.1.1 gcc-4-1-20080831-139820:1.1.1.1 wrstuden-revivesa-base-1:1.1.1.1 yamt-pf42-base4:1.1.1.1 yamt-pf42-base3:1.1.1.1 hpcarm-cleanup-nbase:1.1.1.1 yamt-pf42-baseX:1.1.1.1 yamt-pf42-base2:1.1.1.1 wrstuden-revivesa:1.1.1.1.0.20 wrstuden-revivesa-base:1.1.1.1 yamt-pf42:1.1.1.1.0.18 yamt-pf42-base:1.1.1.1 keiichi-mipv6:1.1.1.1.0.16 keiichi-mipv6-base:1.1.1.1 gcc-4-1-20080202-132073:1.1.1.1 matt-armv6-nbase:1.1.1.1 matt-armv6-prevmlocking:1.1.1.1 wrstuden-fixsa-base-1:1.1.1.1 netbsd-4-0:1.1.1.1.0.14 netbsd-4-0-RELEASE:1.1.1.1 cube-autoconf:1.1.1.1.0.12 cube-autoconf-base:1.1.1.1 netbsd-4-0-RC5:1.1.1.1 netbsd-4-0-RC4:1.1.1.1 netbsd-4-0-RC3:1.1.1.1 netbsd-4-0-RC2:1.1.1.1 netbsd-4-0-RC1:1.1.1.1 matt-armv6:1.1.1.1.0.10 matt-armv6-base:1.1.1.1 matt-mips64-base:1.1.1.1 hpcarm-cleanup:1.1.1.1.0.8 hpcarm-cleanup-base:1.1.1.1 gcc-4-1-20070620:1.1.1.1 wrstuden-fixsa:1.1.1.1.0.6 wrstuden-fixsa-base:1.1.1.1 gcc-4-1-20070110:1.1.1.1 abandoned-netbsd-4-base:1.1.1.1 abandoned-netbsd-4:1.1.1.1.0.2 gcc-4-1-20061021:1.1.1.1 netbsd-4:1.1.1.1.0.4 netbsd-4-base:1.1.1.1 gcc-4-1-20060628:1.1.1.1 gcc-4-1-20060602:1.1.1.1 gcc-4-1-20060420:1.1.1.1 FSF:1.1.1; locks; strict; comment @ * @; 1.2 date 2014.06.13.00.40.51; author mrg; state dead; branches; next 1.1; commitid Ry66zPEmkpEcpiEx; 1.1 date 2006.04.20.10.19.17; author mrg; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2006.04.20.10.19.17; author mrg; state Exp; branches 1.1.1.1.48.1 1.1.1.1.60.1; next ; 1.1.1.1.48.1 date 2014.08.20.00.00.43; author tls; state dead; branches; next ; commitid jTnpym9Qu0o4R1Nx; 1.1.1.1.60.1 date 2014.08.10.07.24.09; author tls; state dead; branches; next ; commitid DBeowRnNzyI2MMLx; desc @@ 1.2 log @delete GCC 4.1 sources. @ text @// { dg-do assemble } // { dg-options "" } // GROUPS passed old-abort const bool FALSE = 0; const bool TRUE = 1; class ListDProto { protected: class link; public: ListDProto(); ListDProto(const ListDProto&); virtual ~ListDProto(); void operator=(const ListDProto&); unsigned length() const; bool empty() const; void clear(); void remove_head(); void remove_tail(); class Vix { public: Vix(); friend int operator==(void *v, const Vix& x) { return v == x.item; } friend int operator==(const Vix& x, void *v) { return v == x.item; } friend int operator!=(void *v, const Vix& x) { return v != x.item; } friend int operator!=(const Vix& x, void *v) { return v != x.item; } friend int operator==(const Vix& x1, const Vix& x2) { return x1.owner == x2.owner && x1.item == x2.item; } friend int operator!=(const Vix& x1, const Vix& x2) { return x1.owner != x2.owner || x1.item != x2.item; } bool first; bool last; protected: friend class ListDProto; Vix(const ListDProto *o, link *i); const ListDProto *owner; private: link *item; }; enum Action { NORMAL, REMOVE_CURRENT }; Vix first() const; void first(Vix& x) const; void next(Vix& x) const; void next(Vix& x, Action a = NORMAL); Vix last() const; void last(Vix& x) const; void prev(Vix& x) const; void prev(Vix& x, Action a = NORMAL); protected: struct link { link *next; link *prev; link(link *n = 0, link *p = 0); virtual ~link(); private: link(const link&); void operator=(const link&); }; unsigned count; link *list_head; link *list_tail; virtual link *copy_item(link *old_item) const = 0; void prepend(link *item); void append(link *item); void prepend(const ListDProto& proto); void append(const ListDProto& proto); void remove(link *item); link *ref(const Vix&) const; }; template class ListD: public ListDProto { public: void prepend(const T& item); void append(const T& item); const T& head() const; T& head(); void head(T& fill) const; void remove_head() { ListDProto::remove_head(); } void remove_head(T& fill); const T& tail() const; T& tail(); void tail(T& fill) const; void remove_tail() { ListDProto::remove_tail(); } void remove_tail(T& fill); class Vix: public ListDProto::Vix { public: Vix(): ListDProto::Vix() { } protected: friend class ListD; Vix(const ListDProto::Vix& x): ListDProto::Vix(x) { } }; Vix first() const { return ListDProto::first(); }; void first(Vix& x) const { ListDProto::first(x); }; void next(Vix& x, ListDProto::Action a = NORMAL) const { ListDProto::next(x, a); }// { dg-error "" } .*// ERROR - .* Vix last() const { return ListDProto::last(); } void last(Vix& x) const { return ListDProto::last(x); } void prev(Vix& x, ListDProto::Action a = NORMAL) const { return ListDProto::prev(x, a); } protected: struct link_item: public ListDProto::link { T item; link_item(const T& i): link(0, 0), item(i) { } private: link_item(const link_item&); void operator=(const link_item&); }; public: T& operator()(const Vix& x) { link_item *li = (link_item *) ref(x); return li->item; } const T& operator()(const Vix& x) const { link_item *li = (link_item *) ref(x); return li->item; } private: ListDProto::link *copy_item(ListDProto::link *old_item) const; }; template class SetLD: private ListD { public: SetLD(); SetLD(const ListD&); void add(const T& item); void add(const ListD& other); void add(const SetLD& other); void remove(const T& item); bool contains(const T& item) const; ListD::length; ListD::empty; ListD::clear; typedef typename ListD::Vix Vix; ListD::first; ListD::next; ListD::operator(); using ListD::NORMAL; using ListD::REMOVE_CURRENT; }; extern "C" { extern void __eprintf (const char *, const char *, unsigned, const char *); } extern "C" { extern void __eprintf (const char *, const char *, unsigned, const char *); } template void ListD::prepend(const T& item) { link *newl = new link_item(item); ListDProto::prepend(newl); } template void ListD::append(const T& item) { link *newl = new link_item(item); ListDProto::append(newl); } template const T& ListD::head() const { ((void) (( 0 != list_head ) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "/home/wbaker/work/include/templates/ListD.body.h" , 50 , "0 != list_head" ), 0) )) ; link_item *h = (link_item *) list_head; return h->item; } template T& ListD::head() { ((void) (( 0 != list_head ) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "/home/wbaker/work/include/templates/ListD.body.h" , 59 , "0 != list_head" ), 0) )) ; link_item *h = (link_item *) list_head; return h->item; } template void ListD::head(T& fill) const { ((void) (( 0 != list_head ) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "/home/wbaker/work/include/templates/ListD.body.h" , 68 , "0 != list_head" ), 0) )) ; link_item *h = (link_item *) list_head; fill = h->item; } template void ListD::remove_head(T& fill) { head(fill); remove_head(); } template const T& ListD::tail() const { ((void) (( 0 != list_tail ) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "/home/wbaker/work/include/templates/ListD.body.h" , 85 , "0 != list_tail" ), 0) )) ; link_item *h = (link_item *) list_tail; return h->item; } template T& ListD::tail() { ((void) (( 0 != list_tail ) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "/home/wbaker/work/include/templates/ListD.body.h" , 94 , "0 != list_tail" ), 0) )) ; link_item *h = (link_item *) list_tail; return h->item; } template void ListD::tail(T& fill) const { ((void) (( 0 != list_tail ) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "/home/wbaker/work/include/templates/ListD.body.h" , 103 , "0 != list_tail" ), 0) )) ; link_item *h = (link_item *) list_tail; fill = h->item; } template void ListD::remove_tail(T& fill) { ((void) (( 0 != list_tail ) ? 0 : (__eprintf ("%s:%u: failed assertion `%s'\n", "/home/wbaker/work/include/templates/ListD.body.h" , 112 , "0 != list_tail" ), 0) )) ; link_item *h = (link_item *) list_tail; fill = h->item; } template ListDProto::link * ListD::copy_item(ListDProto::link *old) const { link_item *old_item = (link_item *) old; link_item *new_item = new link_item(old_item->item); return new_item; } template SetLD::SetLD(): ListD() { } template SetLD::SetLD(const ListD& other): ListD(other) { } template void SetLD::add(const T& item) { if ( ! contains(item) ) append(item); } template void SetLD::add(const ListD& other) { typename ListD::Vix x; for (first(x); 0 != x; next(x)) add(other(x)); } template void SetLD::add(const SetLD& other) { const ListD& lother = other; add(lother); } template void SetLD::remove(const T& item) { typename ListD::Action a = this->NORMAL; Vix x; for (first(x); 0 != x && this->REMOVE_CURRENT != a; next(x, a)) a = operator()(x) == item ? this->REMOVE_CURRENT: this->NORMAL; // { dg-error "" } .* } template bool SetLD::contains(const T& item) const { Vix x; for (first(x); 0 != x; next(x)) { if (operator()(x) == item)// { dg-error "" } .* return TRUE; } return FALSE; } template int operator==(const SetLD& a, const SetLD& b) { if (a.length() != b.length()) return FALSE; typename SetLD::Vix x; for (a.first(x); 0 != x; a.next(x)) { if ( ! b.contains(a(x)) ) return FALSE; } for (b.first(x); 0 != x; b.next(x)) { if ( ! a.contains(b(x)) ) return FALSE; } return TRUE; } template int operator!=(const SetLD& a, const SetLD& b) { return ! (a == b); } template int operator<=(const SetLD& a, const SetLD& b) { if (a.length() > b.length()) return FALSE; typename SetLD::Vix x; for (x=a.first(); 0 != x; a.next(x)) { if ( ! b.contains(a(x)) ) return FALSE; } return TRUE; } template int operator<(const SetLD& a, const SetLD& b) { if (a.length() >= b.length()) return FALSE; return a <= b; } template int operator>(const SetLD& a, const SetLD& b) { return ! (a <= b); } template int operator>=(const SetLD& a, const SetLD& b) { return ! (a < b); } class String { }; class IcaseString: public String { }; template <> class SetLD< IcaseString >: public SetLD< String > { public: SetLD (): SetLD< String >() { }; SetLD (const ListD< IcaseString >& other): SetLD< String >() { ListD< IcaseString >::Vix x; for (other.first(x); 0 != x; other.next(x)) add(other(x)); }; SetLD (const SetLD & other): SetLD< String >(other) { }; const IcaseString & operator()(const Vix& x) const { return ( IcaseString &) SetLD< String >::operator()(x); } }; typedef SetLD< String > SetLD_String_IcaseString_old_tmp99; typedef SetLD< IcaseString > SetLD_String_IcaseString_new_tmp99; inline int operator== (const SetLD_String_IcaseString_new_tmp99& a, const SetLD_String_IcaseString_new_tmp99& b) // { dg-error "operator==" } { const SetLD_String_IcaseString_old_tmp99& oa = a; const SetLD_String_IcaseString_old_tmp99& ob = b; return operator== (oa, ob); } inline int operator!= (const SetLD_String_IcaseString_new_tmp99& a, const SetLD_String_IcaseString_new_tmp99& b) { const SetLD_String_IcaseString_old_tmp99& oa = a; const SetLD_String_IcaseString_old_tmp99& ob = b; return operator!= (oa, ob); } inline int operator< (const SetLD_String_IcaseString_new_tmp99& a, const SetLD_String_IcaseString_new_tmp99& b) { const SetLD_String_IcaseString_old_tmp99& oa = a; const SetLD_String_IcaseString_old_tmp99& ob = b; return operator< (oa, ob); } inline int operator<= (const SetLD_String_IcaseString_new_tmp99& a, const SetLD_String_IcaseString_new_tmp99& b) { const SetLD_String_IcaseString_old_tmp99& oa = a; const SetLD_String_IcaseString_old_tmp99& ob = b; return operator<= (oa, ob); } inline int operator> (const SetLD_String_IcaseString_new_tmp99& a, const SetLD_String_IcaseString_new_tmp99& b) { const SetLD_String_IcaseString_old_tmp99& oa = a; const SetLD_String_IcaseString_old_tmp99& ob = b; return operator> (oa, ob); } inline int operator>= (const SetLD_String_IcaseString_new_tmp99& a, const SetLD_String_IcaseString_new_tmp99& b) { const SetLD_String_IcaseString_old_tmp99& oa = a; const SetLD_String_IcaseString_old_tmp99& ob = b; return operator>= (oa, ob); } typedef SetLD SLDiS; static void nop(int i) { SetLD x, y; nop(x == y); nop(x != y); nop(x < y); nop(x <= y); nop(x > y); nop(x >= y); } template class SetLD; @ 1.1 log @Initial revision @ text @@ 1.1.1.1 log @initial import of GCC 4.1 branch, from 2006-04-20. list of changes way too large to list, but see: http://gcc.gnu.org/gcc-3.4/changes.html http://gcc.gnu.org/gcc-4.0/changes.html http://gcc.gnu.org/gcc-4.1/changes.html for the details. @ text @@ 1.1.1.1.48.1 log @Rebase to HEAD as of a few days ago. @ text @@ 1.1.1.1.60.1 log @Rebase. @ text @@