41 lines
634 B
C
41 lines
634 B
C
// { dg-do run }
|
|
// { dg-options "-O2" }
|
|
// Origin: suckfish@ihug.co.nz
|
|
|
|
// DECLARATIONS
|
|
|
|
struct Record {
|
|
Record (int bb) :
|
|
b (bb)
|
|
{ }
|
|
int extra; // Having an extra member in record is crucial.
|
|
int b;
|
|
};
|
|
|
|
struct Container {
|
|
Record record;
|
|
// The const on the next line is crucial.
|
|
Container ( const Record b) : record(b) {}
|
|
};
|
|
|
|
|
|
// TEST FOR CORRECT BEHAVIOR
|
|
|
|
int myArray[3];
|
|
int * intp = myArray;
|
|
|
|
void use_pair (const Container & c)
|
|
{
|
|
*intp++ = c.record.b;
|
|
}
|
|
|
|
extern "C" int printf (const char *,...);
|
|
|
|
int main()
|
|
{
|
|
use_pair (Container (1234));
|
|
|
|
if (myArray[0] != 1234)
|
|
return 1;
|
|
}
|