// Special g++ Options: -felide-constructors
// GROUPS passed temps
// temps file
// Message-Id: <9311102043.AA22871@ses.com>
// From: jamshid@ses.com (Jamshid Afshar)
// Subject: elide-constructors (aka return value optimization)
// Date: Wed, 10 Nov 93 14:43:54 CST

// execution test - XFAIL *-*-*

#include <stdio.h>
#include <stdlib.h>

class X {
    int i;
  public:
    X();
    X(const X&);
    X(int);
    ~X();
};

int did_it = 0;

X::X() { ; }
X::X(const X&) { did_it = 1; }
X::X(int) { ; }
X::~X() { ; }

X foo() {
    X x(1);
    return x;
}

main() {
    X x = foo();
    if (did_it)
	abort ();
    else
	printf ("PASS\n");
}
