aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2005-05-12 13:06:15 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2005-05-12 13:06:15 +0000
commitfeea5b18cc9fb53a22f9a57e941f45e75a8b0203 (patch)
tree4e17142256d0c3131e7b10149f5c50c1ea1b9850 /gcc/cp
parent5a8c20ce52bf512a5578b3eae578ecc7b86f8cb8 (diff)
downloadgcc-feea5b18cc9fb53a22f9a57e941f45e75a8b0203.zip
gcc-feea5b18cc9fb53a22f9a57e941f45e75a8b0203.tar.gz
gcc-feea5b18cc9fb53a22f9a57e941f45e75a8b0203.tar.bz2
c-common.h (statement_code_p): Don't declare.
./: * c-common.h (statement_code_p): Don't declare. (STATEMENT_CODE_P): Don't define. (INIT_STATEMENT_CODES): Don't define. * c-common.c (statement_code_p): Don't define. cp/: * cp-tree.h (cp_stmt_codes): Don't define. (statement_code_p): Declare. (STATEMENT_CODE_P): Define. * lex.c (statement_code_p): Define. (cxx_init): Use actual codes in stmt_codes initializer, not cp_stmt_codes macro. Initialize statement_code_p directly, rather than using INIT_STATEMENT_CODES. From-SVN: r99615
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog10
-rw-r--r--gcc/cp/cp-tree.h11
-rw-r--r--gcc/cp/lex.c15
3 files changed, 28 insertions, 8 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 8241534..e3e43b7 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,13 @@
+2005-05-12 Ian Lance Taylor <ian@airs.com>
+
+ * cp-tree.h (cp_stmt_codes): Don't define.
+ (statement_code_p): Declare.
+ (STATEMENT_CODE_P): Define.
+ * lex.c (statement_code_p): Define.
+ (cxx_init): Use actual codes in stmt_codes initializer, not
+ cp_stmt_codes macro. Initialize statement_code_p directly, rather
+ than using INIT_STATEMENT_CODES.
+
2005-05-09 Mark Mitchell <mark@codesourcery.com>
* typeck.c (build_unary_op): Do not resort to address arithmetic
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index b5eab93..39d472b 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -843,12 +843,11 @@ enum cplus_tree_code {
};
#undef DEFTREECODE
-#define cp_stmt_codes \
- CTOR_INITIALIZER, TRY_BLOCK, HANDLER, \
- EH_SPEC_BLOCK, USING_STMT, TAG_DEFN, \
- IF_STMT, CLEANUP_STMT, FOR_STMT, \
- WHILE_STMT, DO_STMT, BREAK_STMT, \
- CONTINUE_STMT, SWITCH_STMT, EXPR_STMT
+/* TRUE if a tree code represents a statement. */
+extern bool statement_code_p[MAX_TREE_CODES];
+
+#define STATEMENT_CODE_P(CODE) statement_code_p[(int) (CODE)]
+
enum languages { lang_c, lang_cplusplus, lang_java };
/* Macros to make error reporting functions' lives easier. */
diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c
index 0af3381..dacac18 100644
--- a/gcc/cp/lex.c
+++ b/gcc/cp/lex.c
@@ -312,6 +312,10 @@ init_cp_pragma (void)
c_register_pragma ("GCC", "java_exceptions", handle_pragma_java_exceptions);
}
+/* TRUE if a code represents a statement. */
+
+bool statement_code_p[MAX_TREE_CODES];
+
/* Initialize the C++ front end. This function is very sensitive to
the exact order that things are done here. It would be nice if the
initialization done by this routine were moved to its subroutines,
@@ -319,11 +323,18 @@ init_cp_pragma (void)
bool
cxx_init (void)
{
+ unsigned int i;
static const enum tree_code stmt_codes[] = {
- cp_stmt_codes
+ CTOR_INITIALIZER, TRY_BLOCK, HANDLER,
+ EH_SPEC_BLOCK, USING_STMT, TAG_DEFN,
+ IF_STMT, CLEANUP_STMT, FOR_STMT,
+ WHILE_STMT, DO_STMT, BREAK_STMT,
+ CONTINUE_STMT, SWITCH_STMT, EXPR_STMT
};
- INIT_STATEMENT_CODES (stmt_codes);
+ memset (&statement_code_p, 0, sizeof (statement_code_p));
+ for (i = 0; i < ARRAY_SIZE (stmt_codes); i++)
+ statement_code_p[stmt_codes[i]] = true;
/* We cannot just assign to input_filename because it has already
been initialized and will be used later as an N_BINCL for stabs+