-
- Downloads
cppexp.c (lex): Update to use state.skip_eval.
* cppexp.c (lex): Update to use state.skip_eval. (struct op): Remove prio and flags members. (FLAG_BITS, FLAG_MASK, PRIO_SHIFT, EXTRACT_PRIO, EXTRACT_FLAGS, SHORT_CIRCUIT, RIGHT_ASSOC, ..._PRIO, op_to_prio): Remove. (LEFT_ASSOC): New macro. (optab): New table of operator priorities and flags. (SHIFT): Update. (_cpp_parse_expr): Clean up logic. Return bool. Use a malloc-ed parser stack. (reduce): New; reduce the operator stack. (_cpp_expand_op_stack): Expand the operator stack as necessary. * cpphash.h (struct op): Predeclare. (struct cpp_reader): New members op_stack, op_limit. (struct lexer_state): New member skip_eval. (_cpp_parse_expr): Update. (_cpp_expand_op_stack): New. * cpplib.c (do_if): Update. * cppinit.c (cpp_create_reader): Create op stack. (cpp_destroy): And destroy it. * cpplib.h (CPP_LAST_CPP_OP): Correct. (TTYPE_TABLE): Correct. testsuite: * gcc.dg/cpp/if-mop.c: Update. * gcc.dg/cpp/if-mpar.c: Add test. * gcc.dg/cpp/if-oppr.c: Update. From-SVN: r52853
Showing
- gcc/ChangeLog 24 additions, 0 deletionsgcc/ChangeLog
- gcc/cppexp.c 306 additions, 331 deletionsgcc/cppexp.c
- gcc/cpphash.h 9 additions, 1 deletiongcc/cpphash.h
- gcc/cppinit.c 4 additions, 0 deletionsgcc/cppinit.c
- gcc/cpplib.c 1 addition, 1 deletiongcc/cpplib.c
- gcc/cpplib.h 3 additions, 3 deletionsgcc/cpplib.h
- gcc/testsuite/ChangeLog 6 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/gcc.dg/cpp/if-mop.c 1 addition, 1 deletiongcc/testsuite/gcc.dg/cpp/if-mop.c
- gcc/testsuite/gcc.dg/cpp/if-mpar.c 3 additions, 0 deletionsgcc/testsuite/gcc.dg/cpp/if-mpar.c
- gcc/testsuite/gcc.dg/cpp/if-oppr.c 1 addition, 1 deletiongcc/testsuite/gcc.dg/cpp/if-oppr.c
Loading
Please register or sign in to comment