diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/920810-1.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/920810-1.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/920810-1.c b/gcc/testsuite/gcc.c-torture/execute/920810-1.c new file mode 100644 index 000000000..9565bfc1a --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/920810-1.c @@ -0,0 +1,23 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +typedef struct{void*super;int name;int size;}t; +t*f(t*clas,int size) +{ + t*child=(t*)malloc(size); + memcpy(child,clas,clas->size); + child->super=clas; + child->name=0; + child->size=size; + return child; +} +main() +{ + t foo,*bar; + memset(&foo,37,sizeof(t)); + foo.size=sizeof(t); + bar=f(&foo,sizeof(t)); + if(bar->super!=&foo||bar->name!=0||bar->size!=sizeof(t))abort(); + exit(0); +} |