aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPer Bothner <bothner@gcc.gnu.org>1999-03-15 05:09:36 -0800
committerPer Bothner <bothner@gcc.gnu.org>1999-03-15 05:09:36 -0800
commit2728f622015ae0cfdf0461cdc894e6b8745fa708 (patch)
tree96761f52ef23766bac1be77216dae04bc8b5292c /gcc
parent10919149c3c46cc7041964ee2d309d360931336d (diff)
downloadgcc-2728f622015ae0cfdf0461cdc894e6b8745fa708.zip
gcc-2728f622015ae0cfdf0461cdc894e6b8745fa708.tar.gz
gcc-2728f622015ae0cfdf0461cdc894e6b8745fa708.tar.bz2
class.c (make_class): Don't set CLASS_P here (because this function is also called by...
a * class.c (make_class): Don't set CLASS_P here (because this function is also called by build_java_array_type). (push_class): Set CLASS_P here instead. * parse.h (TYPE_CLASS_P): Check for TYPE_ARRAY_P is redundant. * jcf-dump.c (print_access_flags): Take extra parameter to indicate context. If the context is class, perfer "super" over "synchronized". * jcf-write.c (generate_classfile): Don't add ACC_SUPER if interface. * parse.y (create_class): Don't call parser_check_super here; it is not robust. Always wait until later. * parse.y (method_header): For interfaces, set ACC_ABSTRACT (to match what JDK 1.2 does), but don't set ACC_PUBLIC. From-SVN: r25783
Diffstat (limited to 'gcc')
-rw-r--r--gcc/java/jcf-write.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index 7a9cb91..cc90341 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -2696,7 +2696,9 @@ generate_classfile (clas, state)
else
i = 8 + 2 * total_supers;
ptr = append_chunk (NULL, i, state);
- i = get_access_flags (TYPE_NAME (clas)) | ACC_SUPER;
+ i = get_access_flags (TYPE_NAME (clas));
+ if (! (i & ACC_INTERFACE))
+ i |= ACC_SUPER;
PUT2 (i); /* acces_flags */
i = find_class_constant (&state->cpool, clas); PUT2 (i); /* this_class */
if (clas == object_type_node)