diff options
author | Per Bothner <per@bothner.com> | 2001-08-30 14:08:32 -0700 |
---|---|---|
committer | Per Bothner <bothner@gcc.gnu.org> | 2001-08-30 14:08:32 -0700 |
commit | 1b9ee7233caa4e6ff8f964318f0762bf2df6639b (patch) | |
tree | 0a3e102f4903a3458ca1b8037ffd7d48b66c1484 /gcc/java/jcf-write.c | |
parent | b8ec576419e8dd1e335dd16d22a0cd7a9b1865e0 (diff) | |
download | gcc-1b9ee7233caa4e6ff8f964318f0762bf2df6639b.zip gcc-1b9ee7233caa4e6ff8f964318f0762bf2df6639b.tar.gz gcc-1b9ee7233caa4e6ff8f964318f0762bf2df6639b.tar.bz2 |
jcf-write.c (generate_classfile): Don't write ConstantValue attribute if field is not final...
* jcf-write.c (generate_classfile): Don't write ConstantValue
attribute if field is not final, for compatibility with jdk.
* jcf-write.c (generate_classfile): Convert ConstantValue values
to correct type. Work-around for front-end bug.
* class.c (set_constant_value): Error if constant has wrong type.
From-SVN: r45298
Diffstat (limited to 'gcc/java/jcf-write.c')
-rw-r--r-- | gcc/java/jcf-write.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index 31493fd..d090b56 100644 --- a/gcc/java/jcf-write.c +++ b/gcc/java/jcf-write.c @@ -2884,7 +2884,8 @@ generate_classfile (clas, state) build_java_signature (TREE_TYPE (part))); PUT2(i); have_value = DECL_INITIAL (part) != NULL_TREE - && FIELD_STATIC (part) && CONSTANT_VALUE_P (DECL_INITIAL (part)); + && FIELD_STATIC (part) && CONSTANT_VALUE_P (DECL_INITIAL (part)) + && FIELD_FINAL (part); if (have_value) attr_count++; @@ -2896,6 +2897,8 @@ generate_classfile (clas, state) { tree init = DECL_INITIAL (part); static tree ConstantValue_node = NULL_TREE; + // This conversion is a work-around for front-end bug. + init = convert (TREE_TYPE (part), init); ptr = append_chunk (NULL, 8, state); if (ConstantValue_node == NULL_TREE) ConstantValue_node = get_identifier ("ConstantValue"); |