aboutsummaryrefslogtreecommitdiff
path: root/libcpp/expr.c
diff options
context:
space:
mode:
authorSteve Ellcey <sje@cup.hp.com>2006-08-14 23:13:54 +0000
committerSteve Ellcey <sje@gcc.gnu.org>2006-08-14 23:13:54 +0000
commitb52dbbf86510c011400a97e204cf9384fef83b0c (patch)
tree3997bb50dfd7d49e1c239b1d5843cf07e8405f16 /libcpp/expr.c
parentac1ed908de999523efc36f38e69bca1aadfe0808 (diff)
downloadgcc-b52dbbf86510c011400a97e204cf9384fef83b0c.zip
gcc-b52dbbf86510c011400a97e204cf9384fef83b0c.tar.gz
gcc-b52dbbf86510c011400a97e204cf9384fef83b0c.tar.bz2
re PR c++/28288 (ICE with min/max operator)
PR c++/28288 PR c++/14556 * operators.def: Remove <?, ?>, <?=, and >?= operators. * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ. (cp_parser_warn_min_max): Remove. * include/cpplib.h: Remove <?, >?, <?=, and >?= tokens. (CPP_LAST_EQ): Change. (CPP_LAST_PUNCTUATOR): Change. * expr.c (cpp_operator): Remove MIN and MAX. (reduce): Remove CPP_MIN and CPP_MAX. (num_binary_op): Ditto. * lex.c (_cpp_lex_direct): Ditto. (cpp_avoid_paste): Remove ? as legal symbol after > or <. From-SVN: r116140
Diffstat (limited to 'libcpp/expr.c')
-rw-r--r--libcpp/expr.c21
1 files changed, 0 insertions, 21 deletions
diff --git a/libcpp/expr.c b/libcpp/expr.c
index a61ff66..574b85f 100644
--- a/libcpp/expr.c
+++ b/libcpp/expr.c
@@ -668,9 +668,6 @@ static const struct cpp_operator
/* RSHIFT */ {13, LEFT_ASSOC},
/* LSHIFT */ {13, LEFT_ASSOC},
- /* MIN */ {10, LEFT_ASSOC | CHECK_PROMOTION},
- /* MAX */ {10, LEFT_ASSOC | CHECK_PROMOTION},
-
/* COMPL */ {16, NO_L_OPERAND},
/* AND_AND */ {6, LEFT_ASSOC},
/* OR_OR */ {5, LEFT_ASSOC},
@@ -882,8 +879,6 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op)
case CPP_MINUS:
case CPP_RSHIFT:
case CPP_LSHIFT:
- case CPP_MIN:
- case CPP_MAX:
case CPP_COMMA:
top[-1].value = num_binary_op (pfile, top[-1].value,
top->value, top->op);
@@ -1309,7 +1304,6 @@ num_binary_op (cpp_reader *pfile, cpp_num lhs, cpp_num rhs, enum cpp_ttype op)
{
cpp_num result;
size_t precision = CPP_OPTION (pfile, precision);
- bool gte;
size_t n;
switch (op)
@@ -1336,21 +1330,6 @@ num_binary_op (cpp_reader *pfile, cpp_num lhs, cpp_num rhs, enum cpp_ttype op)
lhs = num_rshift (lhs, precision, n);
break;
- /* Min / Max. */
- case CPP_MIN:
- case CPP_MAX:
- {
- bool unsignedp = lhs.unsignedp || rhs.unsignedp;
-
- gte = num_greater_eq (lhs, rhs, precision);
- if (op == CPP_MIN)
- gte = !gte;
- if (!gte)
- lhs = rhs;
- lhs.unsignedp = unsignedp;
- }
- break;
-
/* Arithmetic. */
case CPP_MINUS:
rhs = num_negate (rhs, precision);