URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [g++.dg/] [abi/] [pragma-pack1.C] - Rev 308
Go to most recent revision | Compare with Previous | Blame | View Log
// PR c++/7046
extern "C" int printf (const char *, ...);
#pragma pack(4)
template <typename X >
struct T
{
char x1; /* Usually 3 padding bytes are added after x1 member. */
int x2;
};
template <class T>
int f()
{
struct A { char i1; int i2; };
return sizeof (A);
}
#pragma pack(1)
template struct T<int>; /* T<int> is instantiated here */
template int f<int>();
#pragma pack(4)
template struct T<float>; /* T<float> is instantiated here */
template int f<double>();
int main()
{
printf("sizeof T<int> = %d\n", sizeof(T<int>));
printf("sizeof T<float> = %d\n", sizeof(T<float>));
printf("f<int>() = %d\n", f<int>());
printf("f<float>() = %d\n", f<float>());
return (sizeof(T<int>) != sizeof(T<float>)
|| f<int>() != f<float>());
}
Go to most recent revision | Compare with Previous | Blame | View Log