c-tree.h (struct c_expr): Define.
authorJoseph Myers <jsm@polyomino.org.uk>
Mon, 19 Jul 2004 08:38:52 +0000 (09:38 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Mon, 19 Jul 2004 08:38:52 +0000 (09:38 +0100)
commit487a92fed227132325f624811a4eb80c47da8aca
tree435cb0f3950c18eee6ce95cc4156e770e0aac344
parent2de7ffa72b74d7a9a20379a3f121962c6ee8077e
c-tree.h (struct c_expr): Define.

* c-tree.h (struct c_expr): Define.
(C_SET_EXP_ORIGINAL_CODE): Remove.
(parser_build_binary_op, build_compound_expr): Update prototypes.
* c-parse.in (%union): Add exprtype.
(FUNC_NAME): Mark as ttype.
(expr, expr_no_commas, cast_expr, unary_expr, primary): Change to
exprtype.
(expr): Update.  Define directly in terms of expr_no_commas
instead of using nonnull_exprlist.
(nonnull_exprlist, unary_expr, cast_expr, expr_no_commas, primary,
offsetof_member_designator, typespec_nonreserved_nonattr, init,
initval, designator, component_declarator,
component_notype_declarator, enumerator, array_declarator,
condition, exexpr, switch_statement, stmt_nocomp, stmt,
nonnull_asm_operands, ivar_declarator, receiver): Update.  Don't
set C_EXP_ORIGINAL_CODE.  Use TREE_NO_WARNING for assignments
where appropriate.
* c-common.h (C_EXP_ORIGINAL_CODE): Remove.
* c-common.c (c_common_truthvalue_conversion): Don't check
C_EXP_ORIGINAL_CODE.
* c-typeck.c (parser_build_binary_op): Use c_expr structures.
Don't use C_EXP_ORIGINAL_CODE.
(default_conversion, default_function_array_conversion): Don't use
C_EXP_ORIGINAL_CODE.  Preserve TREE_NO_WARNING.
(internal_build_compound_expr): Merge into build_compound_expr.
(build_compound_expr): Take two operands instead of a TREE_LIST.
* objc/objc-act.c (get_super_receiver): Update calls to
build_compound_expr.

cp:
* typeck.c (build_modify_expr, build_x_modify_expr): Set
TREE_NO_WARNING on assignments with an operator other than '='.

testsuite:
* g++.dg/warn/Wparentheses-1.C, g++.dg/warn/Wparentheses-2.C,
gcc.dg/Wparentheses-10.c: New tests.
* gcc.dg/Wparentheses-5.c: Remove XFAILs.

From-SVN: r84911
14 files changed:
gcc/ChangeLog
gcc/c-common.c
gcc/c-common.h
gcc/c-parse.in
gcc/c-tree.h
gcc/c-typeck.c
gcc/cp/ChangeLog
gcc/cp/typeck.c
gcc/objc/objc-act.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Wparentheses-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/warn/Wparentheses-2.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/Wparentheses-10.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/Wparentheses-5.c