diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2017-06-23 11:05:47 +0200 |
---|---|---|
committer | Marc Glisse <glisse@gcc.gnu.org> | 2017-06-23 09:05:47 +0000 |
commit | 2db9b7cd422b63fe0a87218128cc0939b439859e (patch) | |
tree | 8874bb67d61acd34ac953c902f78942ea9e4d604 /gcc/tree.c | |
parent | 70fdc808941016567f8e55caea593324b15df230 (diff) | |
download | gcc-2db9b7cd422b63fe0a87218128cc0939b439859e.zip gcc-2db9b7cd422b63fe0a87218128cc0939b439859e.tar.gz gcc-2db9b7cd422b63fe0a87218128cc0939b439859e.tar.bz2 |
Refactor fileptr_type_node handling
2017-06-23 Marc Glisse <marc.glisse@inria.fr>
gcc/
* tree.h (builtin_structptr_type): New type.
(builtin_structptr_types): Declare new array.
* tree.c (builtin_structptr_types): New array.
(free_lang_data, build_common_tree_nodes): Use it.
gcc/c-family/
* c-common.c (c_common_nodes_and_builtins): Use builtin_structptr_types.
gcc/cp/
* decl.c (duplicate_decls): Use builtin_structptr_types.
gcc/lto/
* lto-lang.c (lto_init): Use builtin_structptr_types.
From-SVN: r249585
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -5983,8 +5983,10 @@ free_lang_data (void) free_lang_data_in_cgraph (); /* Create gimple variants for common types. */ - fileptr_type_node = ptr_type_node; - const_tm_ptr_type_node = const_ptr_type_node; + for (unsigned i = 0; + i < sizeof (builtin_structptr_types) / sizeof (builtin_structptr_type); + ++i) + builtin_structptr_types[i].node = builtin_structptr_types[i].base; /* Reset some langhooks. Do not reset types_compatible_p, it may still be used indirectly via the get_alias_set langhook. */ @@ -10449,8 +10451,10 @@ build_common_tree_nodes (bool signed_char) ptr_type_node = build_pointer_type (void_type_node); const_ptr_type_node = build_pointer_type (build_type_variant (void_type_node, 1, 0)); - fileptr_type_node = ptr_type_node; - const_tm_ptr_type_node = const_ptr_type_node; + for (unsigned i = 0; + i < sizeof (builtin_structptr_types) / sizeof (builtin_structptr_type); + ++i) + builtin_structptr_types[i].node = builtin_structptr_types[i].base; pointer_sized_int_node = build_nonstandard_integer_type (POINTER_SIZE, 1); @@ -14544,6 +14548,16 @@ get_nonnull_args (const_tree fntype) return argmap; } +/* List of pointer types used to declare builtins before we have seen their + real declaration. + + Keep the size up to date in tree.h ! */ +const builtin_structptr_type builtin_structptr_types[2] = +{ + { fileptr_type_node, ptr_type_node, "FILE" }, + { const_tm_ptr_type_node, const_ptr_type_node, "tm" } +}; + #if CHECKING_P namespace selftest { |