aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2012-04-22 18:51:44 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2012-04-22 18:51:44 +0000
commitf12e8bd5c3e7063f4e616bda3cab540ea73ac446 (patch)
treedc74fb1f36cb378bbb8295d9aa9daefe37eff0f2 /gcc
parent970aa0b9a95103d518c7e96c70794ba32d074368 (diff)
downloadgcc-f12e8bd5c3e7063f4e616bda3cab540ea73ac446.zip
gcc-f12e8bd5c3e7063f4e616bda3cab540ea73ac446.tar.gz
gcc-f12e8bd5c3e7063f4e616bda3cab540ea73ac446.tar.bz2
godump.c (go_output_typedef): Dump size of structs.
* godump.c (go_output_typedef): Dump size of structs. mksysinfo, syscall: Change Sizeof names from var to const. From-SVN: r186678
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/godump.c20
2 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7a59d01..6756c5d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2012-04-22 Ian Lance Taylor <iant@google.com>
+
+ * godump.c (go_output_typedef): Dump size of structs.
+
2012-04-22 Razya Ladelsky <razya@il.ibm.com>
Correcting transform_to_exit_first_loop + fix to PR46886
diff --git a/gcc/godump.c b/gcc/godump.c
index a42e641..ab1edc6 100644
--- a/gcc/godump.c
+++ b/gcc/godump.c
@@ -1024,12 +1024,25 @@ go_output_typedef (struct godump_container *container, tree decl)
fprintf (go_dump_file, "type _%s ",
IDENTIFIER_POINTER (DECL_NAME (decl)));
go_output_type (container);
+
+ if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (decl)))
+ {
+ HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (decl));
+
+ if (size > 0)
+ fprintf (go_dump_file,
+ "\nconst _sizeof_%s = " HOST_WIDE_INT_PRINT_DEC,
+ IDENTIFIER_POINTER (DECL_NAME (decl)),
+ size);
+ }
+
pointer_set_insert (container->decls_seen, decl);
}
else if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (decl)))
{
void **slot;
const char *type;
+ HOST_WIDE_INT size;
type = IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE ((decl))));
/* If type defined already, skip. */
@@ -1047,6 +1060,13 @@ go_output_typedef (struct godump_container *container, tree decl)
fprintf (go_dump_file, "type _%s ",
IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (decl))));
go_output_type (container);
+
+ size = int_size_in_bytes (TREE_TYPE (decl));
+ if (size > 0)
+ fprintf (go_dump_file,
+ "\nconst _sizeof_%s = " HOST_WIDE_INT_PRINT_DEC,
+ IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (decl))),
+ size);
}
else
return;