re GNATS gcj/164 (compiler permits "volatile final" variables)
* parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter. * parse.y (check_modifiers_consistency): Check for final/volatile clash. Fixes PR gcj/164. From-SVN: r32955
This commit is contained in:
parent
24969f074e
commit
e0fc4118fe
@ -1,3 +1,9 @@
|
||||
2000-04-05 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
|
||||
* parse.y (check_modifiers_consistency): Check for final/volatile
|
||||
clash. Fixes PR gcj/164.
|
||||
|
||||
2000-04-05 Alexandre Petit-Bianco <apbianco@cygnus.com>
|
||||
|
||||
* class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
|
||||
|
@ -2387,7 +2387,7 @@ static const short yycheck[] = { 3,
|
||||
#define YYPURE 1
|
||||
|
||||
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
|
||||
#line 3 "/home/apbianco/install/intel-java-alpha/install-x86//share/bison.simple"
|
||||
#line 3 "/usr/share/misc/bison.simple"
|
||||
|
||||
/* Skeleton output parser for bison,
|
||||
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
|
||||
@ -2404,7 +2404,7 @@ static const short yycheck[] = { 3,
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* As a special exception, when this file is copied by Bison into a
|
||||
Bison output file, you may use that output file without restriction.
|
||||
@ -2538,8 +2538,10 @@ int yydebug; /* nonzero means print parse trace */
|
||||
|
||||
/* Prevent warning if -Wstrict-prototypes. */
|
||||
#ifdef __GNUC__
|
||||
#ifndef YYPARSE_PARAM
|
||||
int yyparse (void);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
|
||||
#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
|
||||
@ -2580,7 +2582,7 @@ __yy_memcpy (char *to, char *from, int count)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#line 196 "/home/apbianco/install/intel-java-alpha/install-x86//share/bison.simple"
|
||||
#line 196 "/usr/share/misc/bison.simple"
|
||||
|
||||
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
||||
into yyparse. The argument should have type void *.
|
||||
@ -4976,7 +4978,7 @@ case 503:
|
||||
break;}
|
||||
}
|
||||
/* the action file gets copied in in place of this dollarsign */
|
||||
#line 498 "/home/apbianco/install/intel-java-alpha/install-x86//share/bison.simple"
|
||||
#line 498 "/usr/share/misc/bison.simple"
|
||||
|
||||
yyvsp -= yylen;
|
||||
yyssp -= yylen;
|
||||
@ -7200,12 +7202,22 @@ check_modifiers_consistency (flags)
|
||||
int acc_count = 0;
|
||||
tree cl = NULL_TREE;
|
||||
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PUBLIC, 0, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PRIVATE, 1, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PROTECTED, 2, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PUBLIC, PUBLIC_TK, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PRIVATE, PRIVATE_TK, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PROTECTED, PROTECTED_TK, acc_count, cl);
|
||||
if (acc_count > 1)
|
||||
parse_error_context
|
||||
(cl, "Inconsistent member declaration. At most one of `public', `private', or `protected' may be specified");
|
||||
(cl, "Inconsistent member declaration. At most one of `public', `private', or `protected' may be specified");
|
||||
|
||||
acc_count = 0;
|
||||
cl = NULL_TREE;
|
||||
THIS_MODIFIER_ONLY (flags, ACC_FINAL, FINAL_TK - PUBLIC_TK,
|
||||
acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_VOLATILE, VOLATILE_TK - PUBLIC_TK,
|
||||
acc_count, cl);
|
||||
if (acc_count > 1)
|
||||
parse_error_context (cl,
|
||||
"Inconsistent member declaration. At most one of `final' or `volatile' may be specified");
|
||||
}
|
||||
|
||||
/* Check the methode header METH for abstract specifics features */
|
||||
|
@ -89,7 +89,7 @@ extern tree stabilize_reference PARAMS ((tree));
|
||||
#define THIS_MODIFIER_ONLY(f, m, v, count, l) \
|
||||
if ((f) & (m)) \
|
||||
{ \
|
||||
tree node = ctxp->modifier_ctx [v]; \
|
||||
tree node = MODIFIER_WFL (v); \
|
||||
if ((l) \
|
||||
&& ((EXPR_WFL_COLNO (node) > EXPR_WFL_COLNO (l)) \
|
||||
|| (EXPR_WFL_LINENO (node) > EXPR_WFL_LINENO (l)))) \
|
||||
|
@ -4570,12 +4570,22 @@ check_modifiers_consistency (flags)
|
||||
int acc_count = 0;
|
||||
tree cl = NULL_TREE;
|
||||
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PUBLIC, 0, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PRIVATE, 1, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PROTECTED, 2, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PUBLIC, PUBLIC_TK, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PRIVATE, PRIVATE_TK, acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_PROTECTED, PROTECTED_TK, acc_count, cl);
|
||||
if (acc_count > 1)
|
||||
parse_error_context
|
||||
(cl, "Inconsistent member declaration. At most one of `public', `private', or `protected' may be specified");
|
||||
(cl, "Inconsistent member declaration. At most one of `public', `private', or `protected' may be specified");
|
||||
|
||||
acc_count = 0;
|
||||
cl = NULL_TREE;
|
||||
THIS_MODIFIER_ONLY (flags, ACC_FINAL, FINAL_TK - PUBLIC_TK,
|
||||
acc_count, cl);
|
||||
THIS_MODIFIER_ONLY (flags, ACC_VOLATILE, VOLATILE_TK - PUBLIC_TK,
|
||||
acc_count, cl);
|
||||
if (acc_count > 1)
|
||||
parse_error_context (cl,
|
||||
"Inconsistent member declaration. At most one of `final' or `volatile' may be specified");
|
||||
}
|
||||
|
||||
/* Check the methode header METH for abstract specifics features */
|
||||
|
Loading…
Reference in New Issue
Block a user