aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2006-12-19* cse.c (cse_insn): Fix formatting.Ben Elliston2-4/+6
From-SVN: r120019
2006-12-18builtin-pow-mpfr-1.c: New test.Kaveh R. Ghazi2-0/+23
* gcc.dg/torture/builtin-pow-mpfr-1.c: New test. From-SVN: r120018
2006-12-18* gfortran.dg/advance_3.f90: Add dg-do compile directive.Brooks Moses2-0/+5
From-SVN: r120016
2006-12-18invoke.texi (Debugging Options): Document -g0.Geoffrey Keating4-2/+11
* doc/invoke.texi (Debugging Options): Document -g0. * config/darwin.h (LINK_COMMAND_SPEC): Replace -gnone with -g0. * config/darwin9.h (LINK_COMMAND_SPEC): Likewise. From-SVN: r120013
2006-12-18c.opt (Wmissing-declarations): Add C++ and ObjC++.Ian Lance Taylor7-6/+94
./: * c.opt (Wmissing-declarations): Add C++ and ObjC++. * doc/invoke.texi (Warning Options): -Wmissing-declarations now works for C++. cp/: * decl.c (start_preparsed_function): Add support for -Wmissing-declarations. testsuite: * g++.dg/warn/Wmissing-declarations-1.C: New test. From-SVN: r120012
2006-12-18trans-array.c (gfc_conv_array_index_offset): Avoid multiplying index by one, ↵Roger Sayle2-5/+13
or adding zero to it. * trans-array.c (gfc_conv_array_index_offset): Avoid multiplying index by one, or adding zero to it. From-SVN: r120011
2006-12-18Add memory reuse to virtual operands in the operand scanner.Andrew MacLeod4-317/+345
2006-12-18 Andrew MacLeod <amacleod@redhat.com> * tree-ssa-operands.h (struct vdef_optype_d): Rename to voptype_d. (struct vuse_optype_d): Delete. (SSA_OPERAND_MEMORY_SIZE): Delete. (struct ssa_operand_memory_d): Change mem array to size one. (NUM_VOP_FREE_BUCKETS): Define. (free_vuses, free_vdefs): Replace with vop_free_buckets array. (vdef_ops, vuse_ops, struct ssa_operand_iterator_d): Use voptype_d type. * tree-pretty-print.c (dump_vops): Use voptype_d type. * tree-ssa-operands.c (vop_free_bucket_size): New. Number of operands which fit into a chunk of memory from a specific bucket. (vop_free_bucket_index): New. Find correct size memory bucket. (init_vop_buckets): New. Initialize VOP free memory buckets. (add_vop_to_freelist): New. Add a VOP to the correct free list. (ssa_operand_mem_size): New. Current size of an operand memory chunk. (init_ssa_operands): Initialize operand memory and free lists. (fini_ssa_operands): Remove references to free_vuses and free_vdefs. (ssa_operand_alloc): Use graduated size memory allocation. (APPEND_OP_AFTER, MOVE_HEAD_AFTER, MOVE_HEAD_TO_FREELIST, INITIALIZE_USE): Remove. (alloc_vop): New. Allocate a virtual operand. (alloc_vdef, alloc_vuse): Delete. (add_def_op, add_use_op): Directly setup pointers. (add_vop): New. Add a virtual operand. (add_vuse_op, add_vdef_op): Call add_vop. (realloc_vop): New. Reallocate a virtual operand. (realloc_vdef, realloc_vuse): Call realloc_vop. (finalize_ssa_def_ops): Delete. Move content to finalize_ssa_defs. (finalize_ssa_defs): Optimize for common case, remove code based on sorted pointers which was a waste of time. (finalize_ssa_use_ops): Delete. Move content to finalize_ssa_uses. (finalize_ssa_uses): Update last pointer. (finalize_ssa_vdef_ops): Delete. Move content to finalize_ssa_vdefs. (finalize_ssa_vdefs, finalize_ssa_vuse_ops): Use voptype_d and directly manipulate pointers. (copy_virtual_operands): Use voptype_d, and no need to update pointers. From-SVN: r120009
2006-12-18Makefile.am: remove @X_CFLAGS@ from AM_CXXFLAGS...Adam Megacz7-330/+138
2006-12-18 Adam Megacz <megacz@cs.berkeley.edu> * Makefile.am: remove @X_CFLAGS@ from AM_CXXFLAGS; it causes -I/usr/include to wind up in cross-builds * configure: Regenerate. From-SVN: r120006
2006-12-18rs6000.md (*movdf_hardfloat32): Use %X format to determine if memory operand ↵Nathan Sidwell2-6/+11
is an indexed address or not. * config/rs6000/rs6000.md (*movdf_hardfloat32): Use %X format to determine if memory operand is an indexed address or not. From-SVN: r120003
2006-12-18Daily bump.GCC Administrator1-1/+1
From-SVN: r120000
2006-12-17cselib.c (struct cselib_val_struct): Make val_rtx its own field, remove the ↵Steven Bosscher3-26/+29
union that contained it. * cselib.c (struct cselib_val_struct): Make val_rtx its own field, remove the union that contained it. * cselib.c: Update accordingly where necessary. From-SVN: r119994
2006-12-17cse.c (have_eh_succ_edges): New function.Steven Bosscher2-17/+32
* cse.c (have_eh_succ_edges): New function. (cse_insn): Don't remove dead EH edges here (cse_extended_basic_block): Do it here. (rest_of_handle_cse, rest_of_handle_cse2): Don't assert that we have removed all dead edges. From-SVN: r119993
2006-12-17pr27528.c: Use empty templates.Eric Botcazou2-6/+10
* gcc.c-torture/compile/pr27528.c: Use empty templates. From-SVN: r119991
2006-12-17re PR fortran/30207 (ICE in gfc_dep_resolver with where (a < 0) a(:) = 1)Roger Sayle6-20/+79
2006-12-17 Roger Sayle <roger@eyesopen.com> Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/30207 * dependency.c (gfc_full_array_ref_p): New function to test whether the given array ref specifies the entire array. (gfc_dep_resolver): Use gfc_full_array_ref_p to analyze AR_FULL array refs against AR_SECTION array refs, and vice versa. * dependency.h (gfc_full_array_ref_p): Prototype here. * trans-array.c (gfc_conv_expr_descriptor): Use gfc_full_array_ref_p. * gfortran.fortran-torture/execute/where21.f90: New test. From-SVN: r119990
2006-12-17associated.c: Check for associated(NULL,NULL).Tobias Burnus4-0/+12
2006-12-17 Tobias Burnus <burnus@net-b.de> * intrinsics/associated.c: Check for associated(NULL,NULL). 2006-12-17 Tobias Burnus <burnus@net-b.de> * gfortran.dg/associated_2.f90: Add test for associated(NULL,NULL). From-SVN: r119989
2006-12-17re PR libstdc++/11953 (_REENTRANT defined when compiling non-threaded code.)Matthias Klose2-1/+6
2006-12-17 Matthias Klose <doko@debian.org> PR libstdc++/11953 * gcc/config/mips/linux.h (SUBTARGET_CPP_SPEC): Extend. From-SVN: r119986
2006-12-17cse.c (cse_find_path): Don't wrap a gcc_assert in ENABLE_CHECKING.Steven Bosscher2-9/+30
* cse.c (cse_find_path): Don't wrap a gcc_assert in ENABLE_CHECKING. (cse_extended_basic_block): When truncating a path while processing it, make sure to clear the visited bit on the basic blocks in the truncated part of the path. (cse_main): Use reverse completion order, not DFS order, to walk the CFG. (gate_handle_cse): Revert erroneous commit of a counter. From-SVN: r119985
2006-12-17cse.c (this_insn_cc0, [...]): New global variables, moved out from cse_insn.Steven Bosscher2-37/+57
* cse.c (this_insn_cc0, this_insn_cc0_mode): New global variables, moved out from cse_insn. (prev_insn): Remove this global variable). (new_basic_block): Don't set it. (cse_insn): Idem. Also, move code to delete unused CC0-setter insns and code to set prev_insn_cc0 and prev_insn_cc0_mode from here... (cse_extended_basic_block): ...to here. Do not clear prev_insn_cc0 until after recording equivalences from jumps. From-SVN: r119984
2006-12-16gfortran.texi: Added TeX support for document parts...Brooks Moses2-172/+267
* gfortran.texi: Added TeX support for document parts; rearranged existing text into "About GNU Fortran", "Invoking GNU Fortran", and "Language Reference" parts. From-SVN: r119981
2006-12-17* cgraphunit.c (ipa_passes): Clear current_function_decl.Jan Hubicka2-0/+5
From-SVN: r119979
2006-12-17Daily bump.GCC Administrator1-1/+1
From-SVN: r119977
2006-12-16passes.c (verify_curr_properties): Define only for ENABLE_CHECKING.Andreas Tobler2-0/+6
2006-12-16 Andreas Tobler <a.tobler@schweiz.org> * passes.c (verify_curr_properties): Define only for ENABLE_CHECKING. From-SVN: r119971
2006-12-16omp-low.c (expand_omp_parallel): Set function properties.Jan Hubicka5-49/+131
* omp-low.c (expand_omp_parallel): Set function properties. * function.h (struct function): Add curr_properties and last_verified. * passes.c (register_dump_files): Do not set TODO_set_props for the first pass (init_optimization_passes): Set it here; reorder initialization so the dump files appear in more logical order. (last_verified, curr_properties): Kill. (do_per_function): New function. (execute_function_todo): Break out from ... (execute_todo): ... here; handle per-function flags. (clear_last_verified, verify_curr_properties, update_properties_after_pass): New functions. (execute_one_pass): Handle per-function properties. (execute_ipa_pass_list): Use do_per_function; sanity check that cfun and current_function_decls are cleared out. * ipa-cp.c (constant_val_insert): Clear cfun/current_function_decl after use. From-SVN: r119966
2006-12-16howto.html: Fix typos.Ralf Wildenhues12-32/+46
2006-12-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * docs/html/27_io/howto.html: Fix typos. * docs/html/24_iterators/howto.html: Likewise. * docs/html/18_support/howto.html: Likewise. * docs/html/21_strings/howto.html: Likewise. * docs/html/ext/howto.html: Likewise. * docs/html/ext/ballocator_doc.html: Likewise. * docs/html/17_intro/porting-howto.xml: Likewise. * docs/html/17_intro/howto.html: Likewise. * docs/html/22_locale/howto.html: Likewise. * docs/html/faq/index.html: Likewise. * docs/doxygen/tables.html: Likewise. From-SVN: r119964
2006-12-16re PR middle-end/7651 (Define -Wextra strictly in terms of other warning flags)Manuel López-Ibáñez11-13/+45
2006-12-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org> PR middle-end/7651 * c.opt (Wempty-body): New. * doc/invoke.texi (Wempty-body): Document it. (Wextra): Enabled by -Wextra. * c-opts.c (c_common_post_options): Enabled by -Wextra. * c-common.c (empty_body_warning): Replace Wextra with Wempty-body. * c-parser.c (c_parser_c99_block_statement): Likewise. testsuite/ * gcc.dg/20001116-1.c: Replace -Wextra with -Wempty-body. * gcc.dg/if-empty-1.c: Likewise. * gcc.dg/pr23165.c: Likewise. * g++.dg/warn/empty-body.C: Likewise. From-SVN: r119963
2006-12-16re PR c++/29475 (incomplete template diagnostics.)Simon Martin4-131/+265
2006-12-16 Simon Martin <simartin@users.sourceforge.net> PR c++/29475 * cp-tree.h (struct deferred_access_check): New structure to represent a deferred access check. It replaces the previous representation as a tree. (get_deferred_access_checks): Return a vector of struct deferred_access_check instead of a tree list. (perform_access_checks): Take a vector of struct deferred_access_check instead of a tree list. * semantics.c (struct deferred_access): Store the deferred access checks as a vector of struct deferred_access_check instead of a tree list. (push_deferring_access_checks): Handle the change in struct deferred_access. (get_deferred_access_checks): Likewise. (pop_to_parent_deferring_access_checks): Likewise. (perform_or_defer_access_check): Likewise. (perform_access_checks): Take a vector of struct deferred_access_check instead of a tree list. * parser.c (struct tree_check): New structure to store various data associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token. (struct cp_token): Changed the value field to be a union with a pointer to a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID tokens and a tree field for all other tokens. (eof_token): Adjusted due to the change in struct cp_token. (cp_lexer_get_preprocessor_token): Likewise. (cp_lexer_purge_token): Likewise. (cp_lexer_purge_tokens_after): Likewise. (cp_lexer_print_token): Likewise. (cp_parser_error): Likewise. (cp_parser_identifier): Likewise. (cp_parser_string_literal): Likewise. (cp_parser_primary_expression): Likewise. (cp_parser_unqualified_id): Likewise. (cp_parser_parenthesized_expression_list): Likewise. (cp_parser_storage_class_specifier_opt): Likewise. (cp_parser_function_specifier_opt): Likewise. (cp_parser_type_specifier): Likewise. (cp_parser_simple_type_specifier): Likewise. (cp_parser_initializer_list): Likewise. (cp_parser_member_specification_opt): Likewise. (cp_parser_attribute_list): Likewise. (cp_parser_objc_expression): Likewise. (cp_parser_objc_protocol_qualifiers): Likewise. (cp_parser_objc_selector): Likewise. (cp_parser_objc_declaration): Likewise. (cp_parser_objc_statement): Likewise. (cp_parser_omp_clause_name): Likewise. (cp_parser_omp_clause_default): Likewise. (cp_parser_omp_clause_schedule): Likewise. (cp_parser_omp_parallel): Likewise. (cp_parser_initial_pragma): Likewise. (pragma_lex): Likewise. (cp_parser_pre_parsed_nested_name_specifier): Likewise. (cp_parser_nested_name_specifier_opt): Likewise. Use cp_token::u::tree_check_value to save the token's value, the associated deferred checks and its qualifying scope. (cp_parser_template_id): Likewise. (cp_parser_template_declaration_after_export): Adjusted the call to get_deferred_access_checks. (cp_parser_init_declarator): Take the access checks as a vector of struct deferred_access_check instead of a tree list. (cp_parser_single_declaration): Likewise. (cp_parser_perform_template_parameter_access_checks): Likewise. (cp_parser_simple_declaration): Adjusted the call to cp_parser_init_declarator. (cp_parser_explicit_specialization): Adjusted the call to cp_parser_single_declaration. From-SVN: r119961
2006-12-16re PR libfortran/30005 (Open errors (not/already exists etc.): show also the ↵Jerry DeLisle2-0/+36
file name) 2006-12-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/30005 * gfortran.dg/open_errors.f90: New test. From-SVN: r119960
2006-12-15i386-cpuid.h (bit_SSSE3): New.H.J. Lu19-0/+1689
2006-12-15 H.J. Lu <hongjiu.lu@intel.com> * gcc.dg/i386-cpuid.h (bit_SSSE3): New. * gcc.target/i386/ssse3-pabsb.c: New file. * gcc.target/i386/ssse3-pabsd.c: Likewise. * gcc.target/i386/ssse3-pabsw.c: Likewise. * gcc.target/i386/ssse3-palignr.c: Likewise. * gcc.target/i386/ssse3-phaddd.c: Likewise. * gcc.target/i386/ssse3-phaddsw.c: Likewise. * gcc.target/i386/ssse3-phaddw.c: Likewise. * gcc.target/i386/ssse3-phsubd.c: Likewise. * gcc.target/i386/ssse3-phsubsw.c: Likewise. * gcc.target/i386/ssse3-phsubw.c: Likewise. * gcc.target/i386/ssse3-pmaddubsw.c: Likewise. * gcc.target/i386/ssse3-pmulhrsw.c: Likewise. * gcc.target/i386/ssse3-pshufb.c: Likewise. * gcc.target/i386/ssse3-psignb.c: Likewise. * gcc.target/i386/ssse3-psignd.c: Likewise. * gcc.target/i386/ssse3-psignw.c: Likewise. * gcc.target/i386/ssse3-vals.h: Likewise. From-SVN: r119958
2006-12-16Daily bump.GCC Administrator1-1/+1
From-SVN: r119956
2006-12-15gfortran-dg.exp: Don't include fortran-torture.exp.Janis Johnson3-1/+6
* lib/gfortran-dg.exp: Don't include fortran-torture.exp. * lib/fortran-torture.exp: Include target-supports.exp. From-SVN: r119950
2006-12-16re PR target/30185 (ICE with struct and divide)Jakub Jelinek4-1/+40
PR target/30185 * config/rs6000/rs6000.md (div<mode>3): Use correct mode in force_reg call. * gcc.c-torture/execute/pr30185.c: New test. From-SVN: r119947
2006-12-15re PR testsuite/30179 (FAIL: gcc.c-torture/execute/mode-dependent-address.c ↵John David Anglin7-0/+33
compilation, -O0) PR testsuite/30179 PR testsuite/30180 * gcc.dg/builtin-bswap-1.c: Require stdint_types. * gcc.dg/builtin-bswap-2.c: Likewise. * gcc.dg/builtin-bswap-3.c: Likewise. * gcc.dg/builtin-bswap-4.c: Likewise. * lib/target-supports.exp (check_effective_target_stdint_types): New. * cc.c-torture/execute/mode-dependent-address.x: New file. From-SVN: r119945
2006-12-15* MAINTAINERS (Write After Approval): Add myself.Simon Martin2-0/+5
From-SVN: r119944
2006-12-15re PR fortran/30145 (Fortran 90: write statement fails to ignore zero-sized ↵Jerry DeLisle2-0/+22
array...) 2006-12-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/30145 * gfortran.dg/write_zero_array: New test. From-SVN: r119943
2006-12-15re PR fortran/30145 (Fortran 90: write statement fails to ignore zero-sized ↵Jerry DeLisle2-1/+6
array...) 2006-12-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/30145 * io/transfer.c (transfer_array): Check for negative extent. From-SVN: r119942
2006-12-15re PR libfortran/30200 ([4.1 only] write(*,myfmt="(1X,a,'xyz')") "A" prints ↵Jerry DeLisle2-0/+15
Az' instead of Axyz) 2006-12-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/30200 * gfortran.dg/write_fmt_trim.f90: New test. From-SVN: r119941
2006-12-15re PR libfortran/30200 ([4.1 only] write(*,myfmt="(1X,a,'xyz')") "A" prints ↵Jerry DeLisle2-1/+6
Az' instead of Axyz) 2006-12-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/30200 * trans-io.c (build_dt): Move post block for format_expr to end. From-SVN: r119940
2006-12-15re PR tree-optimization/30140 (inliner produces invalid gimple with promoted ↵Andrew Pinski2-1/+8
types) 2006-12-15 Andrew Pinski <pinski@gmail.com> PR tree-opt/30140 * tree-inline.c (setup_one_parameter): Gimplify the statement if the variable is not a gimple register variable. From-SVN: r119883
2006-12-15invoke.texi (mstringop-strategy): Add missing "byte_loop" value.Uros Bizjak2-2/+6
* invoke.texi (mstringop-strategy): Add missing "byte_loop" value. From-SVN: r119877
2006-12-15Daily bump.GCC Administrator1-1/+1
From-SVN: r119874
2006-12-14re PR tree-optimization/30194 (alias set partitioning dependent on SFT ↵Diego Novillo2-1/+11
DECL_UIDs) PR 30194 * gcc.dg/pr19633-1.c: Increase threshold for partitioning temporarily. From-SVN: r119867
2006-12-14Make-lang.in (fortran/options.o): Add $(PARAMS_H) dependency.Richard Guenther3-1/+13
2006-12-14 Richard Guenther <rguenther@suse.de> Diego Novillo <dnovillo@redhat.com> * Make-lang.in (fortran/options.o): Add $(PARAMS_H) dependency. * options.c (params.h): Include. (gfc_post_options): Set MAX_ALIASED_VOPS to 50. Co-Authored-By: Diego Novillo <dnovillo@redhat.com> From-SVN: r119866
2006-12-14tree-flow.h (struct stmt_ann_d): Move bitfield references_memory to proper ↵Jan Hubicka2-4/+9
place. * tree-flow.h (struct stmt_ann_d): Move bitfield references_memory to proper place. From-SVN: r119863
2006-12-14target-supports.exp (check_weak_available): Use istarget "hppa*-*-hpux10*" ↵John David Anglin2-3/+8
instead of regexp. * lib/target-supports.exp (check_weak_available): Use istarget "hppa*-*-hpux10*" instead of regexp. (check_cxa_atexit_available): Likewise. From-SVN: r119861
2006-12-14re PR middle-end/30197 (cexp ( __complex__ ( 0, x ) ) can be folded to cexpi ↵Richard Guenther6-3/+114
(x)) 2006-12-14 Richard Guenther <rguenther@suse.de> PR tree-optimization/30197 * builtins.c (fold_builtin_cexp): New function to fold cexp to cexpi and exp parts. * tree-ssa-pre.c (try_combine_conversion): Also handle REALPART_EXPR and IMAGPART_EXPR. * gcc.c-torture/execute/complex-1.c: Fix function name. * gcc.dg/builtins-61.c: New testcase. From-SVN: r119860
2006-12-14re PR middle-end/30172 (Operations with partly constant complex values not ↵Richard Guenther4-0/+84
folded) 2006-12-14 Richard Guenther <rguenther@suse.de> PR middle-end/30172 * fold-const.c (fold_binary): Fold __complex__ ( x, 0 ) + __complex__ ( 0, y ) to __complex__ ( x, y ). Fold __complex__ (x, y) * +-I to __complex__ (-+y, +-x). * gcc.dg/pr30172-1.c: New testcase. From-SVN: r119859
2006-12-14re PR middle-end/30198 (__real / __imag cexpi (x) can be folded to cos (x) / ↵Richard Guenther4-0/+53
sin (x)) 2006-12-14 Richard Guenther <rguenther@suse.de> PR tree-optimization/30198 * fold-const.c (fold_unary): Fold REALPART_EXPR of cexpi to cos. Fold IMAGPART_EXPR of cexpi to sin. * gcc.dg/builtins-60.c: New testcase. From-SVN: r119858
2006-12-14spu.c (TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD): Defined.Dorit Nuzman6-2/+110
* spu.c (TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD): Defined. (spu_init_builtins): Mark the SPU_MASK_FOR_LOAD builtin decl as read only. (spu_expand_builtin_1): Handle the SPU_MASK_FOR_LOAD builtin. (spu_builtin_mask_for_load): New. * spu-builtins.def (SPU_MASK_FOR_LOAD): Define new builtin. * spu.md (UNSPEC_SPU_REALIGN_LOAD, UNSPEC_SPU_MASK_FOR_LOAD):New. (vec_realign_load_<mode>, spu_lvsr): New. Co-Authored-By: Trevor Smigiel <Trevor_Smigiel@playstation.sony.com> From-SVN: r119857
2006-12-14configure.ac: Add TARGET for x86_64-*-darwin*.Andreas Tobler10-77/+509
2006-12-14 Andreas Tobler <a.tobler@schweiz.org> * configure.ac: Add TARGET for x86_64-*-darwin*. * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources for X86_DARWIN. * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*. * src/x86/darwin64.S: New file for x86_64-*-darwin* support. * configure: Regenerate. * Makefile.in: Regenerate. * include/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for ffi_call only. From-SVN: r119856
2006-12-14re PR c++/19564 (-Wparentheses does not work with the C++ front-end)Ian Lance Taylor36-141/+1633
PR c++/19564 PR c++/19756 gcc/: * c-typeck.c (parser_build_binary_op): Move parentheses warnings to warn_about_parentheses in c-common.c. * c-common.c (warn_about_parentheses): New function. * c-common.h (warn_about_parentheses): Declare. * doc/invoke.texi (Warning Options): Update -Wparentheses description. gcc/cp/: * parser.c (cp_parser_expression_stack_entry): Add field lhs_type. (cp_parser_binary_expression): Track tree code of left hand side of expression. Use it when calling build_x_binary_op. (cp_parser_selection_statement): Add if_p parameter. Change all callers. Warn about ambiguous else. (cp_parser_statement): Add if_p parameter. Change all callers. (cp_parser_implicitly_scoped_statement): Likewise. * typeck.c (build_x_binary_op): Add parameters arg1_code and arg2_code. Change all callers. Call warn_about_parentheses. * cp-tree.h (build_x_binary_op): Update declaration. gcc/testsuite/: * g++.dg/warn/Wparentheses-5.C: New test. * g++.dg/warn/Wparentheses-6.C: New test. * g++.dg/warn/Wparentheses-7.C: New test. * g++.dg/warn/Wparentheses-8.C: New test. * g++.dg/warn/Wparentheses-9.C: New test. * g++.dg/warn/Wparentheses-10.C: New test. * g++.dg/warn/Wparentheses-11.C: New test. * g++.dg/warn/Wparentheses-12.C: New test. * g++.dg/warn/Wparentheses-13.C: New test. * g++.dg/warn/Wparentheses-14.C: New test. * g++.dg/warn/Wparentheses-15.C: New test. * g++.dg/warn/Wparentheses-16.C: New test. * g++.dg/warn/Wparentheses-17.C: New test. * g++.dg/warn/Wparentheses-18.C: New test. * g++.dg/warn/Wparentheses-19.C: New test. * g++.dg/warn/Wparentheses-20.C: New test. * g++.dg/warn/Wparentheses-21.C: New test. libstdc++-v3/: * include/bits/locale_facets.tcc (num_get<>::_M_extract_float): Add parentheses around && within || to avoid warning. (num_get<>::_M_extract_int): Likewise. (money_get<>::_M_extract): Likewise. (num_get<>::do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&)): Add parentheses around & within | to avoid warning. (num_put<>::do_put(iter_type, ios_base&, char_type, const void*)): Likewise. * include/bits/streambuf_iterator.h (istreambuf_iterator::equal): Add parentheses around && within || to avoid warning. * libsupc++/tinfo.cc (__do_dyncast): Likewise. * src/locale.cc (locale::_S_normalize_category): Likewise. * include/bits/stl_tree.h (_Rb_tree<>::_M_insert_unique): Add braces to avoid ambiguous else warning. * src/strstream.cc (strstreambuf::_M_free): Likewise. * src/tree.cc (_Rb_tree_rebalance_for_erase): Likewise. From-SVN: r119855