// { dg-do run  }
// GROUPS passed destructors
#include <stdio.h>

int destruct = 0;

class bla {

public:

        inline bla(const char * jim) { ; };

        inline ~bla() { destruct++; if (destruct == 2) printf ("PASS\n");};
};

class ulk {

public:

        inline ulk() {};
        inline ~ulk() {};

        void funk(const bla & bob) { ;};
             //       ^ interestingly, the code compiles right if
             //         this & is deleted (and therefore the parameter
             //         passed as value)
};

int main() {

        ulk dumm;

        dumm.funk(bla("laberababa"));  // this compiles correctly

        dumm.funk((bla)"laberababa");  // this produces incorrect code -
                                       // the temporary instance of
                                       // the class "bla" is constructed
                                       // but never destructed...


}
