diff options
Diffstat (limited to 'gcc/c-typeck.c')
-rw-r--r-- | gcc/c-typeck.c | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 2f8428210d7..b52a349ac6f 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -1657,8 +1657,7 @@ default_function_array_conversion (struct c_expr exp) bool lvalue_array_p; while ((TREE_CODE (exp.value) == NON_LVALUE_EXPR - || TREE_CODE (exp.value) == NOP_EXPR - || TREE_CODE (exp.value) == CONVERT_EXPR) + || CONVERT_EXPR_P (exp.value)) && TREE_TYPE (TREE_OPERAND (exp.value, 0)) == type) { if (TREE_CODE (exp.value) == NON_LVALUE_EXPR) @@ -1978,8 +1977,7 @@ build_indirect_ref (tree ptr, const char *errorstring) if (TREE_CODE (type) == POINTER_TYPE) { - if (TREE_CODE (pointer) == CONVERT_EXPR - || TREE_CODE (pointer) == NOP_EXPR + if (CONVERT_EXPR_P (pointer) || TREE_CODE (pointer) == VIEW_CONVERT_EXPR) { /* If a warning is issued, mark it to avoid duplicates from @@ -2398,8 +2396,7 @@ build_function_call (tree function, tree params) expression if necessary. This has the nice side-effect to prevent the tree-inliner from generating invalid assignment trees which may blow up in the RTL expander later. */ - if ((TREE_CODE (function) == NOP_EXPR - || TREE_CODE (function) == CONVERT_EXPR) + if (CONVERT_EXPR_P (function) && TREE_CODE (tem = TREE_OPERAND (function, 0)) == ADDR_EXPR && TREE_CODE (tem = TREE_OPERAND (tem, 0)) == FUNCTION_DECL && !comptypes (fntype, TREE_TYPE (tem))) @@ -2821,13 +2818,13 @@ pointer_diff (tree op0, tree op1) different mode in place.) So first try to find a common term here 'by hand'; we want to cover at least the cases that occur in legal static initializers. */ - if ((TREE_CODE (op0) == NOP_EXPR || TREE_CODE (op0) == CONVERT_EXPR) + if (CONVERT_EXPR_P (op0) && (TYPE_PRECISION (TREE_TYPE (op0)) == TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (op0, 0))))) con0 = TREE_OPERAND (op0, 0); else con0 = op0; - if ((TREE_CODE (op1) == NOP_EXPR || TREE_CODE (op1) == CONVERT_EXPR) + if (CONVERT_EXPR_P (op1) && (TYPE_PRECISION (TREE_TYPE (op1)) == TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (op1, 0))))) con1 = TREE_OPERAND (op1, 0); @@ -3555,13 +3552,11 @@ build_compound_expr (tree expr1, tree expr2) if (warn_unused_value) { if (VOID_TYPE_P (TREE_TYPE (expr1)) - && (TREE_CODE (expr1) == NOP_EXPR - || TREE_CODE (expr1) == CONVERT_EXPR)) + && CONVERT_EXPR_P (expr1)) ; /* (void) a, b */ else if (VOID_TYPE_P (TREE_TYPE (expr1)) && TREE_CODE (expr1) == COMPOUND_EXPR - && (TREE_CODE (TREE_OPERAND (expr1, 1)) == CONVERT_EXPR - || TREE_CODE (TREE_OPERAND (expr1, 1)) == NOP_EXPR)) + && CONVERT_EXPR_P (TREE_OPERAND (expr1, 1))) ; /* (void) a, (void) b, c */ else warning (OPT_Wunused_value, @@ -7125,7 +7120,7 @@ c_finish_return (tree retval) { switch (TREE_CODE (inner)) { - case NOP_EXPR: case NON_LVALUE_EXPR: case CONVERT_EXPR: + CASE_CONVERT: case NON_LVALUE_EXPR: case PLUS_EXPR: inner = TREE_OPERAND (inner, 0); continue; @@ -7138,9 +7133,8 @@ c_finish_return (tree retval) tree op1 = TREE_OPERAND (inner, 1); while (!POINTER_TYPE_P (TREE_TYPE (op1)) - && (TREE_CODE (op1) == NOP_EXPR - || TREE_CODE (op1) == NON_LVALUE_EXPR - || TREE_CODE (op1) == CONVERT_EXPR)) + && (CONVERT_EXPR_P (op1) + || TREE_CODE (op1) == NON_LVALUE_EXPR)) op1 = TREE_OPERAND (op1, 0); if (POINTER_TYPE_P (TREE_TYPE (op1))) |