From: Alexandre Petit-Bianco Date: Sat, 2 Jun 2001 16:44:11 +0000 (-0700) Subject: re PR java/2605 (gcj crashes on .java file containing byte.class.getClass()) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=12e248d6429f601c030512b0174f514400a303fb;p=gcc.git re PR java/2605 (gcj crashes on .java file containing byte.class.getClass()) 2001-06-01 Alexandre Petit-Bianco * parse.y (type_literals:): Use `build_incomplete_class_ref' with builtin type. (patch_incomplete_class_ref): Build the class ref, build the class init if necessary, complete the tree. Fixes PR java/2605 (http://gcc.gnu.org/ml/gcc-patches/2001-06/msg00044.html ) From-SVN: r42807 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index f13bfbe6f2e..5fc8f8f61e8 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,11 @@ +2001-06-01 Alexandre Petit-Bianco + + * parse.y (type_literals:): Use `build_incomplete_class_ref' with + builtin type. + (patch_incomplete_class_ref): Build the class ref, build the class + init if necessary, complete the tree. + Fixes PR java/2605 + 2001-05-31 Alexandre Petit-Bianco * parse.y (lookup_field_wrapper): Test `name' code. diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 4ae8812e668..e766479ba3e 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -1954,9 +1954,12 @@ type_literals: | array_type DOT_TK CLASS_TK { $$ = build_incomplete_class_ref ($2.location, $1); } | primitive_type DOT_TK CLASS_TK - { $$ = build_class_ref ($1); } + { $$ = build_incomplete_class_ref ($2.location, $1); } | VOID_TK DOT_TK CLASS_TK - { $$ = build_class_ref (void_type_node); } + { + $$ = build_incomplete_class_ref ($2.location, + void_type_node); + } ; class_instance_creation_expression: @@ -13773,8 +13776,11 @@ patch_incomplete_class_ref (node) if (!flag_emit_class_files || JPRIMITIVE_TYPE_P (ref_type)) { + tree dot = build_class_ref (ref_type); /* A class referenced by `foo.class' is initialized. */ - return build_class_init (ref_type, build_class_ref (ref_type)); + if (!flag_emit_class_files) + dot = build_class_init (ref_type, dot); + return java_complete_tree (dot); } /* If we're emitting class files and we have to deal with non