1. 30 Mar, 2009 9 commits
    • cfglayout.c (pass_into_cfg_layout_mode, [...]): Provide/destroy PROP_cfglayout respectively. · 9c9e26f5
      2009-03-09  Paolo Bonzini  <bonzini@gnu.org>
      
              * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
              Provide/destroy PROP_cfglayout respectively.
              * gcse.c (pass_jump_bypass, pass_gcse): Require it.
              * tree-pass.h (PROP_cfglayout): New.
      
      From-SVN: r145282
      Paolo Bonzini committed
    • fold-const.c (const_binop, [...]): Do not set TREE_CONSTANT_OVERFLOW. · 28ddeea1
      2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
      
              * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
              fold_convert_const_fixed_from_fixed,
              fold_convert_const_fixed_from_int,
              fold_convert_const_fixed_from_real, fold_negate_const): Do not
              set TREE_CONSTANT_OVERFLOW.
              * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
              * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
      
      From-SVN: r145281
      Paolo Bonzini committed
    • tree-vect-loop-manip.c: New file. · ebfd146a
      	* tree-vect-loop-manip.c: New file.
      	* tree-vectorizer.c: Update documentation and included files.
      	(vect_loop_location): Make extern.
      	(rename_use_op): Move to tree-vect-loop-manip.c
      	(rename_variables_in_bb, rename_variables_in_loop, 
      	slpeel_update_phis_for_duplicate_loop, 
      	slpeel_update_phi_nodes_for_guard1,
      	slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
      	slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
      	slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
      	set_prologue_iterations, slpeel_tree_peel_loop_to_edge, 
      	find_loop_location): Likewise.
      	(new_stmt_vec_info): Move to tree-vect-stmts.c.
      	(init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
      	get_vectype_for_scalar_type, vect_is_simple_use,
      	supportable_widening_operation, supportable_narrowing_operation):
      	Likewise.
      	(bb_in_loop_p): Move to tree-vect-loop.c.
      	(new_loop_vec_info, destroy_loop_vec_info, 
      	reduction_code_for_scalar_code, report_vect_op, 
      	vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
      	(vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
      	(vect_supportable_dr_alignment): Likewise.
      	* tree-vectorizer.h (tree-data-ref.h): Include.
      	(vect_loop_location): Declare.
      	Reorganize function declarations according to the new file structure.
      	* tree-vect-loop.c: New file.
      	* tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c, 
      	tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
      	* tree-vect-data-refs.c: New file.
      	* tree-vect-patterns.c (timevar.h): Don't include.
      	* tree-vect-stmts.c: New file.
      	* tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c, 
      	tree-vect-slp.c, tree-vect-loop.c.
      	* Makefile.in (OBJS-common): Remove tree-vect-analyze.o and 
      	tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o, 
      	tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
      	(tree-vect-analyze.o): Remove.
      	(tree-vect-transform.o): Likewise.
      	(tree-vect-data-refs.o): Add rule.
      	(tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o, 
      	tree-vect-slp.o): Likewise.
      	(tree-vect-patterns.o): Remove redundant dependencies.
      	(tree-vectorizer.o): Likewise.
      	* tree-vect-slp.c: New file.
      
      From-SVN: r145280
      Ira Rosen committed
    • optc-gen.awk: Warn if an option flag has multiple different help strings. · 40a1cfba
      gcc/
      	* optc-gen.awk: Warn if an option flag has multiple different
      	help strings.
      
      From-SVN: r145278
      Ralf Wildenhues committed
    • Merge botch fixed. · 7bd36a9c
      	* decNumber.c, decNumber.h, decNumberLocal.h, decDouble.c,
      	decDouble.h, decSingle.c, decContext.c, decSingle.h, decPacked.c,
      	decCommon.c, decContext.h, decQuad.c, decPacked.h, decQuad.h,
      	decDPD.h, decBasic.c: Upgrade to decNumber 3.61.
      	* dpd/decimal128.h, dpd/decimal32.c, dpd/decimal32.h,
      	dpd/decimal64.c, dpd/decimal128.c, dpd/decimal64.h: Likewise.
      
      From-SVN: r145274
      Ben Elliston committed
    • invoke.texi (-floop-interchange, [...]): Document dependences on PPL, CLooG and Graphite. · a9a7a9a2
      2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* doc/invoke.texi (-floop-interchange, -floop-strip-mine,
      	-floop-block): Document dependences on PPL, CLooG and Graphite.
      
      From-SVN: r145273
      Sebastian Pop committed
    • re PR middle-end/323 (optimized code gives strange floating point results) · 8ce94e44
      	PR rtl-optimization/323
      	* c-common.c (c_fully_fold, convert_and_check,
      	c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
      	(c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
      	* c-common.def (EXCESS_PRECISION_EXPR): New.
      	* c-cppbuiltin.c (builtin_define_float_constants): Define
      	constants with enough digits for long double.
      	* c-lex.c (interpret_float): Interpret constant with excess
      	precision where appropriate.
      	* c-opts.c (c_common_post_options): Set
      	flag_excess_precision_cmdline.  Give an error for
      	-fexcess-precision=standard for C++ for processors where the
      	option is significant.
      	* c-parser.c (c_parser_conditional_expression): Handle excess
      	precision in condition.
      	* c-typeck.c (convert_arguments): Handle arguments with excess
      	precision.
      	(build_unary_op): Move excess precision outside operation.
      	(build_conditional_expr): Likewise.
      	(build_compound_expr): Likewise.
      	(build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
      	(build_modify_expr): Handle excess precision in RHS.
      	(convert_for_assignment): Handle excess precision in converted
      	value.
      	(digest_init, output_init_element, process_init_element): Handle
      	excess precision in initializer.
      	(c_finish_return): Handle excess precision in return value.
      	(build_binary_op): Handle excess precision in operands and add
      	excess precision as needed for operation.
      	* common.opt (-fexcess-precision=): New option.
      	* config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
      	* config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
      	For standard excess precision, output explicit conversion to and
      	truncation from XFmode.
      	(*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
      	*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
      	*float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
      	define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
      	define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
      	floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
      	divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
      	*fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
      	*fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
      	define_splits, sqrt<mode>2): Disable where appropriate for
      	standard excess precision.
      	* convert.c (convert_to_real): Do not shorten arithmetic to type
      	for which excess precision would be used.
      	* defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
      	* doc/invoke.texi (-fexcess-precision=): Document option.
      	(-mfpmath=): Correct index entry.
      	* flags.h (enum excess_precision, flag_excess_precision_cmdline,
      	flag_excess_precision): New.
      	* langhooks.c (lhd_post_options): Set
      	flag_excess_precision_cmdline.
      	* opts.c (common_handle_option): Handle -fexcess-precision=.
      	* toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
      	init_excess_precision): New.
      	(lang_dependent_init_target): Call init_excess_precision.
      	* tree.c (excess_precision_type): New.
      	* tree.h (excess_precision_type): Declare.
      
      ada:
      	* gcc-interface/misc.c (gnat_post_options): Set
      	flag_excess_precision_cmdline.  Give an error for
      	-fexcess-precision=standard for processors where the option is
      	significant.
      
      fortran:
      	* options.c (gfc_post_options): Set
      	flag_excess_precision_cmdline.  Give an error for
      	-fexcess-precision=standard for processors where the option is
      	significant.
      
      java:
      	* lang.c (java_post_options): Set flag_excess_precision_cmdline.
      	Give an error for -fexcess-precision=standard for processors where
      	the option is significant.
      
      testsuite:
      	* gcc.target/i386/excess-precision-1.c,
      	gcc.target/i386/excess-precision-2.c,
      	gcc.target/i386/excess-precision-3.c,
      	gcc.target/i386/excess-precision-4.c,
      	gcc.target/i386/excess-precision-5.c,
      	gcc.target/i386/excess-precision-6.c: New tests.
      
      From-SVN: r145272
      Joseph Myers committed
    • re PR c/35235 (struct/union rvalue qualifiers must not propagate to members) · 1e57bf47
      	PR c/35235
      	* c-typeck.c (build_component_ref): Do not copy qualifiers from
      	non-lvalue to component.
      
      testsuite:
      	* gcc.dg/c99-array-lval-8.c: New test.
      
      From-SVN: r145271
      Joseph Myers committed
    • Daily bump. · 25d4deb1
      From-SVN: r145268
      GCC Administrator committed
  2. 29 Mar, 2009 23 commits
    • Temporarily revert revision 145222. · 8a1c0f0c
      From-SVN: r145264
      Ben Elliston committed
    • re PR preprocessor/34695 (Preprocessor warning->error conversion from -Werror is silent) · 148e4216
      	PR preprocessor/34695
      
      gcc:
      	* Makefile.in (c-opts.o): Depend on c-tree.h.
      	* c-common.c: Move down include of diagnostic.h.
      	(done_lexing, c_cpp_error): New.
      	* c-common.h (done_lexing): Declare.
      	* c-decl.c (c_write_global_declarations): Don't check cpp_errors
      	(parse_in).
      	* c-opts.c: Include c-tree.h.
      	(c_common_init_options): Set preprocessor error callback.
      	(c_common_handle_option): Do not set preprocessor
      	inhibit_warnings, warnings_are_errors, warn_system_headers,
      	pedantic_errors or inhibit_warnings flags.
      	(c_common_post_options): Do not check cpp_errors (parse_in).
      	(c_common_finish): Do not output dependencies if there were
      	errors.  Do not check return value of cpp_finish.
      	* c-ppoutput.c (pp_file_change): Set input_location.
      	* c-tree.h (c_cpp_error): Declare.
      	* diagnostic.c (diagnostic_set_info_translated): Also initialize
      	override_column.
      	(diagnostic_build_prefix): Check override_column.
      	* diagnostic.h (diagnostic_info): Add override_column field.
      	(diagnostic_override_column): Define.
      
      gcc/cp:
      	* cp-tree.h (cp_cpp_error): Remove.
      	* error.c (cp_cpp_error): Remove.
      	* parser.c (cp_lexer_new_main): Set done_lexing instead of
      	client_diagnostic and error callback.
      
      gcc/fortran:
      	* cpp.c (cb_cpp_error): New.
      	(gfc_cpp_post_options): Don't set cpp_option->inhibit_warnings.
      	Don't check cpp_errors (cpp_in).
      	(gfc_cpp_init_0): Set cb->error.
      
      gcc/testsuite:
      	* gcc.dg/builtin-redefine.c, gcc.dg/cpp/redef2.c,
      	gcc.dg/cpp/redef3.c, gcc.dg/cpp/trad/redef2.c: Use dg-message
      	instead of dg-warning for "previous definition" messages.
      	* gcc.dg/cpp/Wvariadic-1.c, gcc.dg/cpp/Wvariadic-3.c: Expect
      	"warnings being treated as errors" message.
      	* gcc.dg/fltconst-1.c: Use -fshow-column.
      
      libcpp:
      	* makedepend.c: Remove.
      	* Makefile.in (makedepend_OBJS, makedepend$(EXEEXT)): Remove.
      	(all, clean, TAGS_SOURCES, include): Remove makedepend handling.
      	* directives.c (cpp_errors): Remove.
      	* errors.c (print_location, _cpp_begin_message, v_message):
      	Remove.
      	(cpp_error, cpp_error_with_line): Always use error callback.
      	(cpp_error, cpp_error_with_line, cpp_errno): Return bool.
      	* include/cpplib.h (cpp_options): Remove pedantic_errors,
      	inhibit_warnings, warn_system_headers, inhibit_errors,
      	warnings_are_errors, client_diagnostic.
      	(cpp_callbacks): Add extra arguments to error callback; make it
      	return bool.
      	(cpp_finish): Return void.
      	(cpp_destroy): Remove inaccurate comment about return value.
      	(cpp_errors, CPP_DL_EXTRACT, CPP_DL_WARNING_P): Remove.
      	(CPP_DL_NOTE): Define.
      	* include/line-map.h (linemap_print_containing_files): Remove.
      	* init.c (cpp_finish): Do not check for or return number of
      	errors.
      	* internal.h (cpp_reader): Remove errors field.
      	* line-map.c (linemap_print_containing_files): Remove.
      	* macro.c (_cpp_create_definition): Use CPP_DL_NOTE for message
      	about previous definition.  Only emit it if previous diagnostic
      	was emitted.
      
      From-SVN: r145263
      Joseph Myers committed
    • ChangeLog: Fix whitespace. · ba20e309
      	* gcc/ChangeLog: Fix whitespace.
      	* gcc/testsuite/ChangeLog: Ditto.
      
      From-SVN: r145262
      Uros Bizjak committed
    • re PR fortran/38823 (Diagnose and treat (-2.0)**2.0 properly) · 6bb62671
      2009-03-29  Steven G. Kargl  <kargl@gcc.gnu.org>
      
              PR fortran/38823
              * gfortran.dg/power1.f90: New test.
      
      2009-03-29  Steven G. Kargl  <kargl@gcc.gnu.org>
      
              PR fortran/38823
              * gfortran.h: Add ARITH_PROHIBIT to arith enum.
              expr.c (gfc_match_init_expr): Add global variable init_flag to
              flag matching an initialization expression.
              (check_intrinsic_op): Move no longer reachable error message to ...
              * arith.c (arith_power): ... here.  Remove gfc_ prefix in
              gfc_arith_power.  Use init_flag.  Allow constant folding of x**y
              when y is REAL or COMPLEX.
              (eval_intrinsic): Remove restriction that y in x**y must be INTEGER
              for constant folding.
              * gfc_power: Update gfc_arith_power to arith_power
      
      From-SVN: r145261
      Steven G. Kargl committed
    • math.h, [...]: Update. · 615ce5fd
      	* tests/base/math.h, tests/base/pthread.h, tests/base/sys/wait.h:
      	Update.
      
      From-SVN: r145257
      Joseph Myers committed
    • c-common.c (c_expand_expr, c_staticp): Remove. · 2ec5deb5
      2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
      
              * c-common.c (c_expand_expr, c_staticp): Remove.
              * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
              * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
              COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
              * c-gimplify.c (gimplify_compound_literal_expr,
              optimize_compound_literals_in_ctor): Remove.
              (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
              * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
              * c-semantics.c (emit_local_var): Remove.
      
              * langhooks-def.h (lhd_expand_expr): Remove.
              * langhooks.c (lhd_expand_expr): Remove.
              * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
      
              * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
              handling from c-semantics.c; don't call into langhook.
              (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
              * gimplify.c (gimplify_compound_literal_expr,
              optimize_compound_literals_in_ctor): Move from c-gimplify.c.
              (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
              (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
              as was done in c-gimplify.c.
              * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
              * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
              Move from c-common.h.
              * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
      
      	* tree.c (staticp): Do not call langhook.
      	* langhooks.c (lhd_staticp): Delete.
      	* langhooks-def.h (lhd_staticp): Delete prototype.
      	(LANG_HOOKS_STATICP): Delete.
      	(LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
      
              * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
              instead of DECL_STMTs.
      
      cp:
      2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
      
      	* cp/cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
      	* cp/cp-objcp-common.c (cxx_staticp): Remove.
      	* cp/cp-tree.h (cxx_staticp): Remove.
      
      From-SVN: r145256
      Paolo Bonzini committed
    • re PR c/456 (constant expressions constraints (gcc.dg/c90-const-expr-1)) · 928c19bb
      	PR c/456
      	PR c/5675
      	PR c/19976
      	PR c/29116
      	PR c/31871
      	PR c/35198
      
      fixincludes:
      	* inclhack.def (glibc_tgmath): New fix.
      	* fixincl.x: Regenerate.
      	* tests/base/tgmath.h: New.
      
      gcc:
      	* builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
      	void_type_node.
      	(fold_call_expr): Return a NOP_EXPR from folding rather than the
      	contained expression.
      	* c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr):
      	New.
      	(c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
      	conditional expressions for C.
      	(decl_constant_value_for_optimization): Move from
      	decl_constant_value_for_broken_optimization in c-typeck.c.  Check
      	whether optimizing and that the expression is a VAR_DECL not of
      	array type instead of doing such checks in the caller.  Do not
      	check pedantic.  Call gcc_unreachable for C++.
      	* c-common.def (C_MAYBE_CONST_EXPR): New.
      	* c-common.h (c_fully_fold, c_save_expr,
      	decl_constant_value_for_optimization): New prototypes.
      	(C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
      	C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
      	EXPR_INT_CONST_OPERANDS): Define.
      	* c-convert.c (convert): Strip nops from expression.
      	* c-decl.c (groktypename): Take extra parameters expr and
      	expr_const_operands.  Update call to grokdeclarator.
      	(start_decl): Update call to grokdeclarator.  Add statement for
      	expressions used in type of decl.
      	(grokparm): Update call to grokdeclarator.
      	(push_parm_decl): Update call to grokdeclarator.
      	(build_compound_literal): Add parameter non_const and build a
      	C_MAYBE_COSNT_EXPR if applicable.
      	(grokdeclarator): Take extra parameters expr and
      	expr_const_operands.  Track expressions used in declaration
      	specifiers and declarators.  Fold array sizes and track whether
      	they are constant expressions and whether they are integer
      	constant expressions.
      	(parser_xref_tag): Set expr and expr_const_operands fields in
      	return value.
      	(grokfield): Update call to grokdeclarator.
      	(start_function): Update call to grokdeclarator.
      	(build_null_declspecs): Set expr and expr_const_operands fields in
      	return value.
      	(declspecs_add_type): Handle expressions in typeof specifiers.
      	* c-parser.c (c_parser_declspecs): Set expr and
      	expr_const_operands fields for declaration specifiers.
      	(c_parser_enum_specifier): Likewise.
      	(c_parser_struct_or_union_specifier): Likewise.
      	(c_parser_typeof_specifier): Likewise.  Update call to
      	groktypename.  Fold expression as needed.  Return expressions with
      	type instead of adding statements.
      	(c_parser_attributes): Update calls to c_parser_expr_list.
      	(c_parser_statement_after_labels): Fold expression before passing
      	to objc_build_throw_stmt.
      	(c_parser_condition): Fold expression.
      	(c_parser_asm_operands): Fold expression.
      	(c_parser_conditional_expression): Use c_save_expr.  Update call
      	to build_conditional_expr.
      	(c_parser_alignof_expression): Update call to groktypename.
      	(c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
      	original_code.  Fold expression argument of va_arg.  Create
      	C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
      	argument to va_arg.  Update calls to groktypename.  Fold array
      	index for offsetof.  Verify that first argument to
      	__builtin_choose_expr has integer type.
      	(c_parser_postfix_expression_after_paren_type): Update calls to
      	groktypename and build_compound_literal.  Handle expressions with
      	side effects in type name.
      	(c_parser_postfix_expression_after_primary): Update call to
      	c_parser_expr_list.  Set original_code for calls to
      	__builtin_constant_p.
      	(c_parser_expr_list): Take extra parameter fold_p.  Fold
      	expressions if requested.
      	(c_parser_objc_type_name): Update call to groktypename.
      	(c_parser_objc_synchronized_statement): Fold expression.
      	(c_parser_objc_receiver): Fold expression.
      	(c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
      	(c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
      	c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
      	* c-tree.h (CONSTRUCTOR_NON_CONST): Define.
      	(struct c_typespec): Add elements expr and expr_const_operands.
      	(struct c_declspecs): Add elements expr and expr_const_operands.
      	(groktypename, build_conditional_expr, build_compound_literal):
      	Update prototypes.
      	(in_late_binary_op): Declare.
      	* c-typeck.c (note_integer_operands): New function.
      	(in_late_binary_op): New variable.
      	(decl_constant_value_for_broken_optimization): Move to c-common.c
      	and rename to decl_constant_value_for_optimization.
      	(default_function_array_conversion): Do not strip nops.
      	(default_conversion): Do not call
      	decl_constant_value_for_broken_optimization.
      	(build_array_ref): Do not fold result.
      	(c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
      	result when operand is a VLA.
      	(c_expr_sizeof_type): Update call to groktypename.  Handle
      	expressions included in type name.  Use C_MAYBE_CONST_EXPR for
      	result when operand names a VLA type.
      	(build_function_call): Update call to build_compound_literal.
      	Only fold result for calls to __builtin_* functions.  Strip
      	NOP_EXPR from INTEGER_CST returned from such functions.  Fold
      	the function designator.
      	(convert_arguments): Fold arguments.  Update call to
      	convert_for_assignment.
      	(build_unary_op): Handle increment and decrement of
      	C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
      	decrement earlier.  Fold operand of increment and decrement.
      	Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
      	built for integer operand.  Wrap returns that are INTEGER_CSTs
      	without being integer constant expressions or that have integer
      	constant operands without being INTEGER_CSTs.
      	(lvalue_p): Handle C_MAYBE_CONST_EXPR.
      	(build_conditional_expr): Add operand ifexp_bcp.  Track whether
      	result is an integer constant expression or can be used in
      	unevaluated parts of one and avoid folding and wrap as
      	appropriate.  Fold operands before possibly doing -Wsign-compare
      	warnings.
      	(build_compound_expr): Wrap result for C99 if operands can be used
      	in integer constant expressions.
      	(build_c_cast): Update call to digest_init.  Do not ignore
      	overflow from casting floating-point constants to integers.  Wrap
      	results that could be confused with integer constant expressions,
      	null pointer constants or floating-point constants.
      	(c_cast_expr): Update call to groktypename.  Handle expressions
      	included in type name.
      	(build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
      	lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
      	Update calls to convert_for_assignment.
      	(convert_for_assignment): Take new parameter
      	null_pointer_constant.  Do not strip nops or call
      	decl_constant_value_for_broken_optimization.  Set
      	in_late_binary_op for conversions to boolean.
      	(store_init_value): Update call to digest_init.
      	(digest_init): Take new parameter null_pointer_constant.  Do not
      	call decl_constant_value_for_broken_optimization.  pedwarn for
      	initializers not constant expressions.  Update calls to
      	convert_for_assignment.
      	(constructor_nonconst): New.
      	(struct constructor_stack): Add nonconst element.
      	(really_start_incremental_init, push_init_level, pop_init_level):
      	Handle constructor_nonconst and nonconst element.
      	(set_init_index): Call constant_expression_warning for array
      	designators.
      	(output_init_element): Fold value.  Set constructor_nonconst as
      	applicable.  pedwarn for initializers not constant expressions.
      	Update call to digest_init.  Call constant_expression_warning
      	where constant initializers are required.
      	(process_init_element): Use c_save_expr.
      	(c_finish_goto_ptr): Fold expression.
      	(c_finish_return): Fold return value.  Update call to
      	convert_for_assignment.
      	(c_start_case): Fold switch expression.
      	(c_process_expr_stmt): Fold expression.
      	(c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
      	ensure statement expression is not evaluated in constant
      	expression.
      	(build_binary_op): Track whether results are integer constant
      	expressions or may occur in such, disable folding and wrap results
      	as applicable.  Fold operands for -Wsign-compare warnings unless
      	in_late_binary_op.
      	(c_objc_common_truthvalue_conversion): Handle results folded to
      	integer constants that are not integer constant expressions.
      	* doc/extend.texi: Document when typeof operands are evaluated,
      	that condition of __builtin_choose_expr is an integer constant
      	expression, and more about use of __builtin_constant_p in
      	initializers.
      
      gcc/objc:
      	* objc-act.c (objc_finish_try_stmt): Set in_late_binary_op.
      
      gcc/testsuite:
      	* gcc.c-torture/compile/20081108-1.c,
      	gcc.c-torture/compile/20081108-2.c,
      	gcc.c-torture/compile/20081108-3.c, gcc.dg/bconstp-2.c,
      	gcc.dg/bconstp-3.c, gcc.dg/bconstp-4.c, gcc.dg/c90-const-expr-6.c,
      	gcc.dg/c90-const-expr-7.c, gcc.dg/c90-const-expr-8.c,
      	gcc.dg/c90-const-expr-9.c, gcc.dg/c90-const-expr-10.c,
      	gcc.dg/c90-const-expr-11.c, gcc.dg/c99-const-expr-6.c,
      	gcc.dg/c99-const-expr-7.c, gcc.dg/c99-const-expr-8.c,
      	gcc.dg/c99-const-expr-9.c, gcc.dg/c99-const-expr-10.c,
      	gcc.dg/c99-const-expr-11.c, gcc.dg/c99-const-expr-12.c,
      	gcc.dg/c99-const-expr-13.c, gcc.dg/compare10.c,
      	gcc.dg/gnu89-const-expr-1.c, gcc.dg/gnu89-const-expr-2.c,
      	gcc.dg/gnu99-const-expr-1.c, gcc.dg/gnu99-const-expr-2.c,
      	gcc.dg/gnu99-const-expr-3.c, gcc.dg/vla-12.c, gcc.dg/vla-13.c,
      	gcc.dg/vla-14.c, gcc.dg/vla-15.c, gcc.dg/vla-16.c: New tests.
      	* gcc.dg/c90-const-expr-1.c, gcc.dg/c90-const-expr-2.c,
      	gcc.dg/c90-const-expr-3.c, gcc.dg/c99-const-expr-2.c,
      	gcc.dg/c99-const-expr-3.c, gcc.dg/c99-static-1.c: Remove XFAILs.
      	* gcc.dg/c90-const-expr-2.c: Use ZERO in place of 0 in another
      	case.
      	* gcc.dg/overflow-warn-1.c, gcc.dg/overflow-warn-2.c,
      	gcc.dg/overflow-warn-3.c, gcc.dg/overflow-warn-4.c: Remove
      	XFAILs.  Update expected messages.
      	* gcc.dg/pr14649-1.c, gcc.dg/pr19984.c, gcc.dg/pr25682.c: Update
      	expected messages.
      	* gcc.dg/real-const-1.c: Replace with test from original PR.
      	* gcc.dg/vect/pr32230.c: Use intermediate cast to __PTRDIFF_TYPE__
      	when casting from non-constant integer to pointer.
      
      From-SVN: r145254
      Joseph Myers committed
    • tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly propagate… · 5babbcc0
      tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly propagate addresses of array references.
      
      2009-03-29  Richard Guenther  <rguenther@suse.de>
      
      	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
      	propagate addresses of array references.
      
      	* gcc.dg/tree-ssa/forwprop-11.c: New testcase.
      
      From-SVN: r145250
      Richard Guenther committed
    • re PR fortran/37423 (Fortran 2003: DEFERRED bindings not yet implemented) · b0e5fa94
      2009-03-29  Daniel Kraft  <d@domob.eu>
      
      	PR fortran/37423
      	* gfortran.h (struct gfc_typebound_proc): Added new flag `deferred' and
      	added a comment explaining DEFERRED binding handling.
      	* decl.c (match_binding_attributes): Really match DEFERRED attribute.
      	(match_procedure_in_type): Really match PROCEDURE(interface) syntax
      	and do some validity checks for DEFERRED and this construct.
      	* module.c (binding_overriding): New string constant for DEFERRED.
      	(mio_typebound_proc): Module-IO DEFERRED flag.
      	* resolve.c (check_typebound_override): Ensure that a non-DEFERRED
      	binding is not overridden by a DEFERRED one.
      	(resolve_typebound_procedure): Allow abstract interfaces as targets
      	for DEFERRED bindings.
      	(ensure_not_abstract_walker), (ensure_not_abstract): New methods.
      	(resolve_fl_derived): Use new `ensure_not_abstract' method for
      	non-ABSTRACT types extending ABSTRACT ones to ensure each DEFERRED
      	binding is overridden.
      	(check_typebound_baseobject): New method.
      	(resolve_compcall), (resolve_typebound_call): Check base-object of
      	the type-bound procedure call.
      	* gfc-internals.texi (Type-bound procedures): Document a little bit
      	about internal handling of DEFERRED bindings.
      
      2009-03-29  Daniel Kraft  <d@domob.eu>
      
      	PR fortran/37423
      	* gfortran.dg/typebound_proc_4.f03: Remove not-implemented check for
      	DEFERRED bindings.
      	* gfortran.dg/typebound_proc_9.f03: New test.
      	* gfortran.dg/typebound_proc_10.f03: New test.
      	* gfortran.dg/typebound_proc_11.f03: New test.
      	* gfortran.dg/abstract_type_5.f03: New test.
      
      From-SVN: r145248
      Daniel Kraft committed
    • regmove.c (perhaps_ends_bb_p): Remove. · 0340f2ba
      	* regmove.c (perhaps_ends_bb_p): Remove.
      	(optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
      	from INSN and check that the main loop stays within that basic block.
      	(optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
      	(regmove_forward_pass): Split out from regmove_optimize.  Use
      	FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
      	(regmove_backward_pass): Split out from regmove_optimize.  Use
      	FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
      	(regmove_optimize): Simplify.
      
      From-SVN: r145247
      Steven Bosscher committed
    • re PR fortran/38507 (Bogus Warning: Deleted feature: GOTO jumps to END of construct) · d80c695f
      fortran/
      PR fortran/38507
      * gfortran.h (gfc_st_label): Fix comment.
      (gfc_exec_op): Add statement code EXEC_END_BLOCK for end of block.
      * parse.c (accept_statement): Use EXEC_END_BLOCK for END IF and
      END SELECT with labels.
      (check_do_closure): Fix formatting.
      (parse_do_block): Fix typo in error message.
      * resolve.c (code_stack): Remove tail member.  Update comment to
      new use of reachable_labels.
      (reachable_labels): Rename to ...
      (find_reachable_labels): ... this.  Overhaul.  Update preceding
      comment.
      (resolve_branch): Fix comment preceding function.  Rewrite.
      (resolve_code): Update call to find_reachable_labels.  Add code to
      deal with EXEC_END_BLOCK.
      * st.c (gfc_free_statement): Add code to deal with EXEC_END_BLOCK.
      * trans.c (gfc_trans_code): Likewise.
      testsuite/
      * do_4.f: New.
      * goto_2.f90: Correct expected warnings.
      * goto_4.f90: Likewise.
      * goto_5.f90: New.
      
      From-SVN: r145245
      Tobias Schlüter committed
    • re PR target/39545 (Structures with flexible array member passed/returned incorrectly) · eeae74a1
      gcc/
      
      2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR target/39545
      	* config/i386/i386.c (classify_argument): Ignore flexible array
      	member in struct and warn ABI change.
      
      gcc/testsuite/
      
      2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR target/39545
      	* gcc.c-torture/compile/pr16566-2.c: Add -Wno-psabi for x86-64.
      
      	* gcc.target/i386/pr39545-1.c: New.
      	* gcc.target/i386/pr39545-2.c: Likewise.
      
      	* gcc.target/x86_64/abi/test_passing_structs.c (flex1_struct): New.
      	(flex2_struct): Likewise.
      	(check_struct_passing7): Likewise.
      	(check_struct_passing8): Likewise.
      	(f1s): Likewise.
      	(f2s): Likewise.
      	(main): Call check_struct_passing7 and check_struct_passing8.
      
      From-SVN: r145237
      H.J. Lu committed
    • i386-protos.h (ix86_agi_dependent): New. · a24078b2
      2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* config/i386/i386-protos.h (ix86_agi_dependent): New.
      
      	* config/i386/i386.c (ix86_agi_dependent): Rewrite.
      	(ix86_adjust_cost): Updated.
      
      From-SVN: r145235
      H.J. Lu committed
    • 20090113-1.c: New testcase. · 3379ae7f
      2009-03-29  Richard Guenther  <rguenther@suse.de>
      
      	* gcc.c-torture/execute/20090113-1.c: New testcase.
      	* gcc.c-torture/execute/20090113-2.c: Likewise.
      	* gcc.c-torture/execute/20090113-3.c: Likewise.
      	* gcc.c-torture/execute/20090207-1.c: Likewise.
      	* gcc.c-torture/compile/20090114-1.c: Likewise.
      	* gcc.c-torture/compile/20090328-1.c: Likewise.
      	* gcc.dg/noncompile/920507-1.c: Fix out-of-bounds array access.
      
      From-SVN: r145234
      Richard Guenther committed
    • re PR tree-optimization/28850 (missed call -> jmp transformation; redundant… · a8da523f
      re PR tree-optimization/28850 (missed call -> jmp transformation; redundant unwind stuff with empty finally)
      
      
      	PR middle-end/28850
      	* tree-pass.h (pass_cleanup_eh): New function.
      	(remove_unreachable_regions): Break code handling RTL
      	to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
      	that can not be reached by runtime.
      	(can_be_reached_by_runtime): New function.
      	(label_to_region_map): New function.
      	(num_eh_regions): New function.
      	(rtl_remove_unreachable_regions): New function.
      	(convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
      	(remove_eh_region): New function.
      	* except.h: Include sbitmap and vecprim.
      	(remove_eh_region, remove_unreachable_regions, label_to_region_map,
      	num_eh_regions): Declare.
      	* passes.c (init_optimization_passes): Schedule cleanup_eh.
      	* Makefile.in (EXCEPT_H): New; replace all uses of except.h
      	by it.
      	* tree-eh.c (tree_remove_unreachable_handlers): New function.
      	(tree_empty_eh_handler_p): New function.
      	(cleanup_empty_eh): New function.
      	(cleanup_eh): New function.
      	(pass_cleanup_eh): New function.
      
      From-SVN: r145233
      Jan Hubicka committed
    • except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready for removed regions. · 98f358e5
      	* except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
      	for removed regions.
      
      From-SVN: r145232
      Jan Hubicka committed
    • * except.c (dump_eh_tree): Dump all datastructures. · 13a9fa44
      From-SVN: r145231
      Jan Hubicka committed
    • except.c (duplicate_eh_regions_0): Handle AKA bitmap. · e38cf733
      	* except.c (duplicate_eh_regions_0): Handle AKA bitmap.
      	(duplicate_eh_regions_1): Likewise.
      	(duplicate_eh_regions): Likewise; cleanup code gorwing the region
      	vector; call EH verification.
      	(foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
      	Be ready for region being removed.
      
      From-SVN: r145230
      Jan Hubicka committed
    • bitmap.c (bitmap_last_set_bit): New function. · 12802c2b
      	* bitmap.c (bitmap_last_set_bit): New function.
      	* bitmap.h (bitmap_last_set_bit): Declare.
      
      From-SVN: r145229
      Jan Hubicka committed
    • re PR objc/27377 (false compiler warnings generated in Objective-C code) · 4ea80a41
      gcc/
      2009-03-00  David Ayers  <ayers@fsfe.org>
      
      	PR objc/27377
      	* c-typeck.c (build_conditional_expr): Emit ObjC warnings
      	by calling objc_compare_types and surpress warnings about
      	incompatible C pointers that are compatible ObjC pointers.
      	
      testsuite/
      2009-03-00  David Ayers  <ayers@fsfe.org>
      
      	PR objc/27377
      	* objc.dg/conditional-1.m: New tests.
      
      From-SVN: r145225
      David Ayers committed
    • decNumber.c, [...]: Upgrade to decNumber 3.61. · f988ec96
      	* decNumber.c, decNumber.h, decNumberLocal.h, decDouble.c,
      	decDouble.h, decSingle.c, decContext.c, decSingle.h, decPacked.c,
      	decCommon.c, decContext.h, decQuad.c, decPacked.h, decQuad.h,
      	decDPD.h, decBasic.c: Upgrade to decNumber 3.61.
      	* dpd/decimal128.h, dpd/decimal32.c, dpd/decimal32.h,
      	dpd/decimal64.c, dpd/decimal128.c, dpd/decimal64.h: Likewise.
      
      From-SVN: r145222
      Ben Elliston committed
    • Daily bump. · 7cdc1972
      From-SVN: r145219
      GCC Administrator committed
    • cgraphbuild.c (build_cgraph_edges, [...]): Don't call initialize_inline_failed. · 3dc9eaa6
      	* cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
      	call initialize_inline_failed.
      	(initialize_inline_failed): Move it from here ...
      	* cgraph.c (initialize_inline_failed): ... to here.
      	(cgraph_create_edge): Call initialize_inline_failed rather than
      	setting inline_failed directly.
      
      testsuite/
      	* gcc.dg/winline-10.c: New test.
      
      From-SVN: r145215
      Adam Nemet committed
  3. 28 Mar, 2009 8 commits