diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/builtin-object-size-10.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.dg/builtin-object-size-10.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-object-size-10.c b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-object-size-10.c new file mode 100644 index 000000000..956d4a860 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-object-size-10.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-objsz1-details" } */ +// { dg-skip-if "packed attribute missing for drone_source_packet" { "epiphany-*-*" } { "*" } { "" } } + +typedef struct { + char sentinel[4]; + char data[0]; +} drone_packet; +typedef struct { + char type_str[16]; + char channel_hop; +} drone_source_packet; +drone_packet * +foo(char *x) +{ + drone_packet *dpkt = __builtin_malloc(sizeof(drone_packet) + + sizeof(drone_source_packet)); + drone_source_packet *spkt = (drone_source_packet *) dpkt->data; + __builtin___snprintf_chk (spkt->type_str, 16, + 1, __builtin_object_size (spkt->type_str, 1), + "%s", x); + return dpkt; +} + +/* { dg-final { scan-tree-dump "maximum object size 21" "objsz1" } } */ +/* { dg-final { scan-tree-dump "maximum subobject size 16" "objsz1" } } */ +/* { dg-final { cleanup-tree-dump "objsz1" } } */ |