Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.old-deja/g++.mike/p12306.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do run } // prms-id: 12306 void *ptr1, *ptr2; int fail = 0; extern "C" int printf(const char *...); class RWSlist { }; class RWSlistIterator { public: RWSlist *slist; RWSlistIterator(RWSlist& s) { } void toLast() { if (ptr1 != (RWSlistIterator*)this) fail = 5; if (ptr2 != &(*this).slist) fail = 6; if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist); } }; class RWCollectable { }; class RWSlistCollectables : public RWSlist { public: RWSlistCollectables() { } RWSlistCollectables(RWCollectable* a) { } }; class RWIterator { }; class RWSlistCollectablesIterator : public RWIterator, public RWSlistIterator { public: RWSlistCollectablesIterator(RWSlistCollectables& s) : RWSlistIterator(s) { } }; class Sim_Event_Manager { public: RWSlistCollectables scheduled_events_; RWSlistCollectablesIterator last_posted_event_position_; Sim_Event_Manager(); void post_event(); }; Sim_Event_Manager::Sim_Event_Manager () :last_posted_event_position_(scheduled_events_) { } void Sim_Event_Manager::post_event () { ptr1 = (RWSlistIterator*)&last_posted_event_position_; ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist; if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_, &((RWSlistIterator*)&last_posted_event_position_)->slist); if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) fail = 1; if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) fail = 2; if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_, &((RWSlistIterator&)last_posted_event_position_).slist); if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) fail = 3; if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) fail = 4; last_posted_event_position_.toLast(); } int main(int argc, char **argv) { Sim_Event_Manager foo; foo.post_event(); return fail; }