diff options
author | Richard Guenther <rguenther@suse.de> | 2011-06-07 14:34:02 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-06-07 14:34:02 +0000 |
commit | c3c79fc5a5bf930ae6a2ee17b39d5214cbabe861 (patch) | |
tree | e55d792d95d64cb1b5dd110c453a6833dcdc4518 | |
parent | 28628ea69f5eea41ec4e678e7e66924a574943cb (diff) | |
download | gcc-c3c79fc5a5bf930ae6a2ee17b39d5214cbabe861.zip gcc-c3c79fc5a5bf930ae6a2ee17b39d5214cbabe861.tar.gz gcc-c3c79fc5a5bf930ae6a2ee17b39d5214cbabe861.tar.bz2 |
decl.c (java_init_decl_processing): Call build_common_nodes, build_common_nodes_2 at the beginning.
2011-06-07 Richard Guenther <rguenther@suse.de>
* decl.c (java_init_decl_processing): Call build_common_nodes,
build_common_nodes_2 at the beginning. Remove then duplicate
initializations.
From-SVN: r174747
-rw-r--r-- | gcc/java/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/java/decl.c | 51 |
2 files changed, 19 insertions, 38 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index b29e9c2..b88b71f 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,5 +1,11 @@ 2011-06-07 Richard Guenther <rguenther@suse.de> + * decl.c (java_init_decl_processing): Call build_common_nodes, + build_common_nodes_2 at the beginning. Remove then duplicate + initializations. + +2011-06-07 Richard Guenther <rguenther@suse.de> + * decl.c (java_init_decl_processing): Properly initialize size_type_node. diff --git a/gcc/java/decl.c b/gcc/java/decl.c index 0ee2374..e4a3db2 100644 --- a/gcc/java/decl.c +++ b/gcc/java/decl.c @@ -566,13 +566,17 @@ java_init_decl_processing (void) pushlevel (0); /* make the binding_level structure for global names */ global_binding_level = current_binding_level; - /* The code here must be similar to build_common_tree_nodes{,_2} in - tree.c, especially as to the order of initializing common nodes. */ - error_mark_node = make_node (ERROR_MARK); - TREE_TYPE (error_mark_node) = error_mark_node; + /* Build common tree nodes, Java has an unsigned char. */ + build_common_tree_nodes (false); - /* Create sizetype first - needed for other types. */ - initialize_sizetypes (); + /* Build the rest of the common tree nodes. */ + build_common_tree_nodes_2 (0); + + /* ??? Now we continue and override some of the built types again + with Java specific types. As the above generated types are + supposed to match the targets C ABI this isn't really the way + to go and any Java specifics should _not_ use those global types + if the Java ABI does not match the C one. */ byte_type_node = make_signed_type (8); pushdecl (build_decl (BUILTINS_LOCATION, @@ -604,18 +608,6 @@ java_init_decl_processing (void) TYPE_DECL, get_identifier ("unsigned long"), unsigned_long_type_node)); - /* This is not a java type, however tree-dfa requires a definition for - size_type_node. */ - if (strcmp (SIZE_TYPE, "unsigned int") == 0) - size_type_node = make_unsigned_type (INT_TYPE_SIZE); - else if (strcmp (SIZE_TYPE, "long unsigned int") == 0) - size_type_node = make_unsigned_type (LONG_TYPE_SIZE); - else if (strcmp (SIZE_TYPE, "long long unsigned int") == 0) - size_type_node = make_unsigned_type (LONG_LONG_TYPE_SIZE); - else - gcc_unreachable (); - set_sizetype (size_type_node); - /* Define these next since types below may used them. */ integer_type_node = java_type_for_size (INT_TYPE_SIZE, 0); integer_zero_node = build_int_cst (NULL_TREE, 0); @@ -631,39 +623,22 @@ java_init_decl_processing (void) = double_int_to_tree (unsigned_long_type_node, double_int_setbit (double_int_zero, 64)); - size_zero_node = size_int (0); - size_one_node = size_int (1); - bitsize_zero_node = bitsize_int (0); - bitsize_one_node = bitsize_int (1); - bitsize_unit_node = bitsize_int (BITS_PER_UNIT); - long_zero_node = build_int_cst (long_type_node, 0); - void_type_node = make_node (VOID_TYPE); pushdecl (build_decl (BUILTINS_LOCATION, TYPE_DECL, get_identifier ("void"), void_type_node)); - layout_type (void_type_node); /* Uses size_zero_node */ - - ptr_type_node = build_pointer_type (void_type_node); - const_ptr_type_node - = build_pointer_type (build_type_variant (void_type_node, 1, 0)); t = make_node (VOID_TYPE); layout_type (t); /* Uses size_zero_node */ return_address_type_node = build_pointer_type (t); - null_pointer_node = build_int_cst (ptr_type_node, 0); - - char_type_node = make_node (INTEGER_TYPE); + char_type_node = make_unsigned_type (16); TYPE_STRING_FLAG (char_type_node) = 1; - TYPE_PRECISION (char_type_node) = 16; - fixup_unsigned_type (char_type_node); pushdecl (build_decl (BUILTINS_LOCATION, TYPE_DECL, get_identifier ("char"), char_type_node)); - boolean_type_node = make_node (BOOLEAN_TYPE); - TYPE_PRECISION (boolean_type_node) = 1; - fixup_unsigned_type (boolean_type_node); + boolean_type_node = make_unsigned_type (1); + TREE_SET_CODE (boolean_type_node, BOOLEAN_TYPE); pushdecl (build_decl (BUILTINS_LOCATION, TYPE_DECL, get_identifier ("boolean"), boolean_type_node)); |