aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/decl.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-05-25 18:19:11 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2010-05-25 18:19:11 +0200
commit6bb0a66a9932e8f03e43edb007cb407ac45dbcbd (patch)
treec5d52ec0a97fd0f5d2874395be7e0a89136c2a9a /gcc/java/decl.c
parent9602a7a9c8f9ab271f4672a080c17c8b21d0dc14 (diff)
downloadgcc-6bb0a66a9932e8f03e43edb007cb407ac45dbcbd.zip
gcc-6bb0a66a9932e8f03e43edb007cb407ac45dbcbd.tar.gz
gcc-6bb0a66a9932e8f03e43edb007cb407ac45dbcbd.tar.bz2
re PR debug/43260 (Java static class members lack DWARF location info)
PR debug/43260 * java-tree.h (pending_static_fields): New extern declaration. (java_write_globals): New prototype. * lang.c (LANG_HOOKS_WRITE_GLOBALS): Define. * decl.c (java_mark_class_local): When clearing DECL_EXTERNAL of a static field push it into pending_static_fields vector. * class.c (pending_static_fields): New variable. (add_field): If static field is not DECL_EXTERNAL, push it into pending_static_fields vector. (java_write_globals): New function. From-SVN: r159828
Diffstat (limited to 'gcc/java/decl.c')
-rw-r--r--gcc/java/decl.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/java/decl.c b/gcc/java/decl.c
index 9cb3c75..f78d683 100644
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -2000,7 +2000,11 @@ java_mark_class_local (tree klass)
for (t = TYPE_FIELDS (klass); t ; t = TREE_CHAIN (t))
if (FIELD_STATIC (t))
- java_mark_decl_local (t);
+ {
+ if (DECL_EXTERNAL (t))
+ VEC_safe_push (tree, gc, pending_static_fields, t);
+ java_mark_decl_local (t);
+ }
for (t = TYPE_METHODS (klass); t ; t = TREE_CHAIN (t))
if (!METHOD_ABSTRACT (t))