diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2004-11-26 18:04:45 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-11-26 10:04:45 -0800 |
commit | 532815a787849962ca2f2101aef12ec1d57b2cfd (patch) | |
tree | fd510bfba4be46b5f8449a5f32932ed69e327402 /gcc/java/decl.c | |
parent | e57df6fed97f4e7dd58dd00a1946c698b5a22d92 (diff) | |
download | gcc-532815a787849962ca2f2101aef12ec1d57b2cfd.zip gcc-532815a787849962ca2f2101aef12ec1d57b2cfd.tar.gz gcc-532815a787849962ca2f2101aef12ec1d57b2cfd.tar.bz2 |
re PR java/18305 (Class initialization optimization is not done when compiled from .class)
2004-11-26 Andrew Pinski <pinskia@physics.uc.edu>
PR java/18305
* decl.c (end_java_method): Call
attach_init_test_initialization_flags on all the init_decls.
* parse.y (attach_init_test_initialization_flags): Move to ...
* expr.c (attach_init_test_initialization_flags): here and
support BIND_EXPR also.
* java-tree.h (attach_init_test_initialization_flags): Prototype.
* jcf-parse.c (parse_class_file): Don't disable class init
optimization.
From-SVN: r91343
Diffstat (limited to 'gcc/java/decl.c')
-rw-r--r-- | gcc/java/decl.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/java/decl.c b/gcc/java/decl.c index 54f788e..103a112 100644 --- a/gcc/java/decl.c +++ b/gcc/java/decl.c @@ -1931,6 +1931,17 @@ end_java_method (void) poplevel (1, 0, 1); BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl; + + if (DECL_SAVED_TREE (fndecl)) + { + tree fbody, block_body; + /* Before we check initialization, attached all class initialization + variable to the block_body */ + fbody = DECL_SAVED_TREE (fndecl); + block_body = BIND_EXPR_BODY (fbody); + htab_traverse (DECL_FUNCTION_INIT_TEST_TABLE (fndecl), + attach_init_test_initialization_flags, block_body); + } flag_unit_at_a_time = 0; finish_method (fndecl); |