aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-12-07 17:51:45 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-12-07 17:51:45 -0500
commit47ee6837900a6f7b22f13da0db83cd5923ff9fe8 (patch)
treed41746d7219cbcabd09d8f31ff05ed7de6d0b9b2 /gcc
parente78a3b4249fb70a97ac87b55b612553d19da36a3 (diff)
downloadgcc-47ee6837900a6f7b22f13da0db83cd5923ff9fe8.zip
gcc-47ee6837900a6f7b22f13da0db83cd5923ff9fe8.tar.gz
gcc-47ee6837900a6f7b22f13da0db83cd5923ff9fe8.tar.bz2
(build_binary_op): Likewise.
(build_conditional_expr): op1 now always nonnull. From-SVN: r13234
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-typeck.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index fa647db..a5a5b00 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -2107,7 +2107,7 @@ build_binary_op (code, orig_op0, orig_op1, convert_p)
case RSHIFT_EXPR:
if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
{
- if (TREE_CODE (op1) == INTEGER_CST)
+ if (TREE_CODE (op1) == INTEGER_CST && skip_evaluation == 0)
{
if (tree_int_cst_sgn (op1) < 0)
warning ("right shift count is negative");
@@ -2139,7 +2139,7 @@ build_binary_op (code, orig_op0, orig_op1, convert_p)
case LSHIFT_EXPR:
if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
{
- if (TREE_CODE (op1) == INTEGER_CST)
+ if (TREE_CODE (op1) == INTEGER_CST && skip_evaluation == 0)
{
if (tree_int_cst_sgn (op1) < 0)
warning ("left shift count is negative");
@@ -2167,7 +2167,7 @@ build_binary_op (code, orig_op0, orig_op1, convert_p)
case LROTATE_EXPR:
if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
{
- if (TREE_CODE (op1) == INTEGER_CST)
+ if (TREE_CODE (op1) == INTEGER_CST && skip_evaluation == 0)
{
if (tree_int_cst_sgn (op1) < 0)
warning ("shift count is negative");
@@ -2469,7 +2469,7 @@ build_binary_op (code, orig_op0, orig_op1, convert_p)
converted = 1;
resultcode = xresultcode;
- if (warn_sign_compare)
+ if (warn_sign_compare && skip_evaluation == 0)
{
int op0_signed = ! TREE_UNSIGNED (TREE_TYPE (orig_op0));
int op1_signed = ! TREE_UNSIGNED (TREE_TYPE (orig_op1));
@@ -3377,15 +3377,6 @@ build_conditional_expr (ifexp, op1, op2)
register tree result_type = NULL;
tree orig_op1 = op1, orig_op2 = op2;
- /* If second operand is omitted, it is the same as the first one;
- make sure it is calculated only once. */
- if (op1 == 0)
- {
- if (pedantic)
- pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
- ifexp = orig_op1 = op1 = save_expr (ifexp);
- }
-
ifexp = truthvalue_conversion (default_conversion (ifexp));
#if 0 /* Produces wrong result if within sizeof. */