aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.brendan/crash47.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.brendan/crash47.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/crash47.C94
1 files changed, 1 insertions, 93 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash47.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash47.C
index daf2bd8b74b..b5287f33795 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash47.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash47.C
@@ -1,93 +1 @@
-// Build don't link:
-// GROUPS passed old-abort
-const int TRUE = 1;
-const int FALSE = 0;
-
-class Rep {
-protected:
- Rep(): count(0)
- { }
- Rep(const Rep& other): count(0)
- { }
-
- Rep& operator=(const Rep& other)
- { /* DO NOT copy over other.count */
- return *this; }
-
-public: // TODO - for now
- // Because it is to hard to restrict these operations to the descendants
- // of Rep<REP> that we haven't named yet. So we just make them public.
- void inc()
- { count++; }
- void dec()
- { if (0 == --count) delete this; }
-private:
- unsigned count;
-};
-
-template<class REP>
-class Ref {
-public:
- Ref(): rep(0)
- { }
- Ref(const Ref<REP>& other): rep(other.rep)
- { if (rep) rep->inc(); }
- ~Ref()
- { if (rep) rep->dec();
- rep = 0; }
-
- Ref<REP>& operator=(const Ref<REP>& other)
- { if (rep != other.rep) {
- if (rep) rep->dec();
- rep = other.rep;
- if (rep) rep->inc(); }
- return *this; }
-
- bool null() const
- { return 0 == rep ? TRUE: FALSE; }
- bool valid() const
- { return 0 != rep ? TRUE: FALSE; }
-
- REP* operator->() const // should be a valid() reference
- { return rep; }
- operator REP*() const; // should be a valid() reference
-
-protected:
- REP *rep;
-
- Ref(REP *r): rep(r)
- { if (rep) rep->inc(); }
-
- Ref<REP>& operator=(REP *r)
- { if (rep != r) {
- if (rep) rep->dec();
- rep = r;
- if (rep) rep->inc(); }
- return *this; }
-};
-
-template<class REP>
-Ref<REP>::operator REP*() const // should be a valid() reference
-{ return rep; }
-
-template<class REP>
-inline int
-operator==(const Ref<REP>& a, const Ref<REP>& b)
-{ return (REP *) a == (REP *) b; }
-
-template<class REP>
-inline int
-operator!=(const Ref<REP>& a, const Ref<REP>& b)
-{ return (REP *) a != (REP *) b; }
-
-class XRep: public Rep {
-public:
- int i;
-};
-
-main()
-{
- Ref<XRep> y;
-
- return y != y;
-}
+int