From b9c74b4dc40904cbb3882d1c245d4eeae24139f4 Mon Sep 17 00:00:00 2001
From: ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 20 Apr 2009 19:35:00 +0000
Subject: gcc/: 	Fix enum conversions which are invalid in C++: 	*
 auto-inc-dec.c (attempt_change): Change 0 to SET in function 	call. 	*
 calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function 	call. 
 * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call. 	* dbgcnt.c
 (dbg_cnt_set_limit_by_name): Add cast to enum type. 	* dbxout.c
 (dbxout_symbol): Change 0 to VOIDmode in function 	call. 
 (dbxout_parms): Likewise. 	* df-core.c (df_set_flags): Change
 changeable_flags parameter to 	int. 	(df_clear_flags): Likewise. 	*
 df-problems.c (df_rd_bb_local_compute_process_def): Change 	top_flag
 parameter to int. 	(df_chain_create_bb_process_use): Likewise. 
 (df_chain_add_problem): Change chain_flags parameter to unsigned 	int. 
 Remove cast. 	* df-scan.c (df_ref_create): Change ref_flags parameter to
 int. 	(df_ref_create_structure, df_def_record_1): Likewise. 
 (df_defs_record, df_uses_record, df_get_call_refs): Likewise. 
 (df_notes_rescan): Change 0 to VOIDmode in function call. 
 (df_get_call_refs, df_insn_refs_collect): Likewise. 	(df_bb_regs_collect):
 Likewise. 	(df_entry_block_defs_collect): Likewise. 
 (df_exit_block_uses_collect): Likewise. 	* df.h: Update declarations. 
 * double-int.c (double_int_divmod): Add cast to enum type. 	* dse.c
 (replace_inc_dec): Reverse parameters to gen_int_mode. 	* dwarf2out.c
 (new_reg_loc_descr): Add casts to enum type. 	(based_loc_descr): Likewise. 
 (loc_descriptor_from_tree_1): Change first_op and second_op to 	enum
 dwarf_location_atom.  Add cast to enum type. 	* expmed.c (init_expmed):
 Change 0 to SET in function call. 	* expr.c (init_expr_target): Change 0
 to VOIDmode in function 	call. 	(expand_expr_real_1): Change 0 to
 EXPAND_NORMAL in function call. 	(do_store_flag): Likewise. 	*
 fixed-value.h (struct fixed_value): Change mode to enum 	machine_mode. 
 * function.c (assign_parms): Change 0 to VOIDmode in function 	call. 	*
 genautomata.c (insert_automaton_decl): Change 1 to INSERT in 	function call.
 	(insert_insn_decl, insert_decl, insert_state): Likewise. 
 (automata_list_finish): Likewise. 	* genrecog.c
 (process_define_predicate): Add cast to enum type. 	* gensupport.c
 (init_predicate_table): Add cast to enum type. 	* gimple.c
 (gimple_build_return): Change 0 to ERROR_MARK in 	function call. 
 (gimple_build_call_1, gimple_build_label): Likewise. 	(gimple_build_goto,
 gimple_build_asm_1): Likewise. 	(gimple_build_switch_1,
 gimple_build_cdt): Likewise. 	* gimple.h (GIMPLE_CHECK): Change 0 to
 ERROR_MARK in function 	call. 	(enum fallback): Rename from enum
 fallback_t. 	(fallback_t): Typedef as int. 	* gimple-low.c
 (lower_builtin_setjmp): Change TSI_SAME_STMT to 	GSI_SAME_STMT in
 function call. 	* ira.c (setup_class_subset_and_memory_move_costs):
 Add casts to 	enum type. 	(setup_reg_class_relations): Likewise. 
 (setup_reg_class_nregs): Change cl to int.  Add casts to enum 	type. 
 (setup_prohibited_class_mode_regs): Add cast to enum type. 
 (setup_prohibited_mode_move_regs): Likewise. 	* ira-costs.c
 (record_reg_classes): Change rclass to enum 	reg_class. 
 (record_address_regs): Change i to enum reg_class. 	* lists.c
 (alloc_EXPR_LIST): Add cast to enum type. 	* machmode.h (GET_MODE_CLASS):
 Cast value to enum mode_class. 	(GET_MODE_WIDER_MODE): Cast value to
 enum machine_mode. 	(GET_MODE_2XWIDER_MODE): Likewise. 
 (GET_CLASS_NARROWEST_MODE): Likewise. 	* omp-low.c (expand_omp_for): Add cast
 to enum type. 	* optabs.c (debug_optab_libfuncs): Add casts to enum type. 
 * opts.c (enable_warning_as_error): Change kind to diagostic_t. 	*
 postreload.c (reload_cse_simplify_operands): Change rclass local 	to
 enum reg_class. 	* predict.c (combine_predictions_for_insn): Change
 best_predictor 	and predictor to enum br_predictor. 
 (combine_predictions_for_bb): Likewise. 	(build_predict_expr): Change
 assignment to PREDICT_EXPR_OUTCOME to 	use SET_PREDICT_EXPR_OUTCOME. 	*
 real.c (real_arithmetic): Change icode to code in function 	call. 	*
 reginfo.c (init_move_cost): Add casts to enum type. 	(init_reg_sets_1,
 init_fake_stack_mems): Likewise. 	* regmove.c (regclass_compatible_p):
 Change class0 and class1 to 	enum reg_class. 	* reload.c
 (find_valid_class): Add casts to enum type. 	(push_reload): Change 0 to
 NO_REGS in function call. 	(find_reloads): Change this_alternative to
 array of enum 	reg_class.  Remove some now-unnecessary casts. 	(make_memloc):
 Change 0 to VOIDmode in function call. 	* reload1.c (reload): Change 0
 to VOIDmode in function call. 	(eliminate_regs_1, elimination_effects):
 Likewise. 	(eliminate_regs_in_insn): Likewise. 
 (emit_input_reload_insns): Add cast to enum type. 
 (delete_output_reload): Change 0 to VOIDmode in function call. 	*
 reorg.c (insn_sets_resource_p): Convert include_delayed_effects 	to
 enum type in function call. 	* tree.h (PREDICT_EXPR_OUTCOME): Add cast to
 enum type. 	(SET_PREDICT_EXPR_OUTCOME): Define. 	* tree-dump.c
 (get_dump_file_info): Change phase parameter to 	int. 
 (get_dump_file_name, dump_begin, dump_enabled_p): Likewise. 
 (dump_initialized_p, dump_flag_name, dump_end): Likewise. 
 (dump_function): Likewise. 	* tree-dump.h: Update declarations. 	*
 tree-pass.h: Update declarations. 	* varasm.c (assemble_integer): Change
 mclass to enum mode_class. 	* config/arm/arm.c
 (thumb_legitimize_reload_address): Add cast to 	enum type. 
 (arm_rtx_costs_1): Correct parenthesization. 	(arm_rtx_costs): Add casts to
 enum type. 	(adjacent_mem_locations): Reverse arguments to
 const_ok_for_op. 	(vfp_emit_fstmd): Use add_rg_note. 
 (emit_multi_reg_push, emit_sfm): Likewise. 	(thumb_set_frame_pointer):
 Likewise. 	(arm_expand_prologue): Likewise. 	(arm_regno_class):
 Change return type to enum reg_class. 	(thumb1_expand_prologue): Use
 add_reg_note. 	* config/arm/arm-protos.h (arm_regno_class): Update
 declaration. 	* config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to
 LCT_NORMAL 	in function call. 	* config/arm/gentune.sh: Add cast to
 enum type. 	* config/arm/arm-tune.md: Rebuild. 	* config/i386/i386.c
 (ix86_expand_prologue): Use add_reg_note. 	(ix86_split_fp_branch,
 predict_jump): Likewise. 	(ix86_expand_multi_arg_builtin): Change
 sub_code from enum 	insn_code to enum rtx_code. 
 (ix86_builtin_vectorized_function): Add cast to enum type. 	*
 config/i386/i386.md (truncdfsf2): Change slot to enum 	ix86_stack_slot. 
 (truncxf<mode>2, isinf<mode>2): Likewise. 	* config/i386/i386-c.c
 (ix86_pragma_target_parse): Add cast to 	enum type. 	*
 config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note. 
 (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise. 
 (insert_bundle_state): Change 1 to INSERT in function call. 
 (ia64_add_bundle_selector_before): Likewise. 	* config/ia64/ia64.md (cpu
 attr): Add cast to enum type. 	(save_stack_nonlocal): Change 0 to LCT_NORMAL
 in function call. 	(restore_stack_nonlocal): Likewise. 	*
 config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in 
 function call. 	* config/mips/mips.c (mips_binary_cost): Change 0 to
 SET in 	function call. 	(mips_rtx_costs): Likewise. 
 (mips_override_options): Add casts to enum type. 	* config/mips/sdemtk.h
 (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL 	in function call. 	*
 config/pa/pa.c (legitimize_pic_address): Use add_reg_note. 	(store_reg,
 set_reg_plus_d): Likewise. 	(hppa_expand_prologue, hppa_profile_hook):
 Likewise. 	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
 	cast to enum type. 	(altivec_expand_vec_set_builtin): Change 0 to
 EXPAND_NORMAL in 	function call. 	(emit_unlikely_jump): Use
 add_reg_note. 	(rs6000_emit_allocate_stack): Likewise. 
 (rs6000_frame_related, rs6000_emit_prologue): Likewise. 	(output_toc):
 Change 1 to INSERT in function call. 	(output_profile_hook): Change 0 to
 LCT_NORMAL in function call. 	(rs6000_initialize_trampoline): Likewise. 
 (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in 
 function call. 	* config/s390/s390.c (s390_rtx_costs): Add cast to
 enum type. 	(s390_expand_movmem): Change 0 to OPTAB_DIRECT in function
 call. 	(s390_expand_setmem, s390_expand_cmpmem): Likewise. 	(save_gprs):
 Use add_reg_note. 	(s390_emit_prologue): Likewise. 
 (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function 	call. 	*
 config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note. 
 (sparc_fold_builtin): Add cast to enum type. 	* config/spu/spu.c
 (spu_emit_branch_or_set): Change ior_code to 	enum insn_code. 
 (spu_expand_prologue): Use add_reg_note. 	(expand_builtin_args): Change
 0 to EXPAND_NORMAL in function 	call.

	* c-parser.c (c_parser_attributes): Change VEC back to tree list.
	(c_parser_postfix_expression_after_primary): Get VEC for list of
	arguments.  Get original types of arguments.  Call
	build_function_call_vec.
	(cached_expr_list_1, cached_expr_list_2): New static variables.
	(c_parser_expr_list): Change return type to VEC *.  Add
	p_orig_types parameter.  Change all callers.
	(c_parser_release_expr): New static function.
	(c_parser_vec_to_tree_list): New static function.
	* c-typeck.c (build_function_call): Rewrite to build a VEC and
	call build_function_call_vec.
	(build_function_call_vec): New function, based on old
	build_function_call.
	(convert_arguments): Remove nargs and argarray parameters.  Change
	values to a VEC.  Add origtypes parameter.
	(build_modify_expr): Add rhs_origtype parameter.  Change all
	callers.
	(convert_for_assignment): Add origtype parameter.  Change all
	callers.  If warn_cxx_compat, check for conversion to an enum
	type when calling a function.
	(store_init_value): Add origtype parameter.  Change all callers.
	(digest_init): Likewise.
	(struct init_node): Add origtype field.
	(add_pending_init): Add origtype parameter.  Change all callers.
	(output_init_element): Likewise.
	(output_pending_init_elements): Pass origtype from init_node to
	output_init_element.
	(process_init_elemnt): Pass origtype from c_expr to
	output_init_element.
	(c_finish_return): Add origtype parameter.  Change all callers.
	* c-common.c (sync_resolve_size): Change params to VEC *.  Change
	caller.
	(sync_resolve_params): Likewise.
	(sync_resolve_return): Change params to first_param.  Change
	caller.
	(resolve_overloaded_builtins): Change params to VEC *.  Change
	callers.   Save first parameter around call to
	build_function_call_vec.
	* c-decl.c (finish_decl): Add origtype parameter.  Change all
	callers.  Call build_function_call_vec rather than
	build_function_call for cleanup.
	* c-tree.h: Update declarations.
	* c-common.h: Update declarations.
	* stub-objc.c (objc_rewrite_function_call): Change parameter from
	params to first_param.
	* target.h (struct gcc_target): Change resolve_overloaded_builtin
	params parameter from tree to void *.
	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
	Change arglist parameter to have type void *, and to be a pointer
	to a VEC.
	* config/rs6000/rs6000-protos.h
	(altivec_resolve_overloaded_builtin): Update declaration.
	* config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
	fnargs parameter to have type void *, and to be a pointer to a
	VEC.  Call build_function_call_vec instead of
	build_function_call.
	* config/spu/spu-protos.h (spu_expand_builtin): Update
	declaration.

gcc/cp/:
	* typeck.c (build_function_call_vec): New function.
	(cp_build_function_call): Only pass first parameter to
	objc_rewrite_function_call.
	(build_modify_expr): Add rhs_origtype parameter.  Change all
	callers.
	* decl.c (finish_decl): Add origtype parameter.  Change all
	callers.
	* semantics.c (finish_call_expr): Pass VEC to
	resolve_overloaded_builtin.

gcc/objc:
	* objc-act.c (objc_rewrite_function_call): Change parameter from
	params to first_param.  Change all callers.

gcc/testsuite:
	* gcc.dg/Wcxx-compat-3.c: New testcase.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146451 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/predict.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

(limited to 'gcc/predict.c')

diff --git a/gcc/predict.c b/gcc/predict.c
index 22e71ceab8d..e3fc6cedf75 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -1,5 +1,5 @@
 /* Branch prediction routines for the GNU compiler.
-   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -654,7 +654,7 @@ combine_predictions_for_insn (rtx insn, basic_block bb)
   rtx *pnote;
   rtx note;
   int best_probability = PROB_EVEN;
-  int best_predictor = END_PREDICTORS;
+  enum br_predictor best_predictor = END_PREDICTORS;
   int combined_probability = REG_BR_PROB_BASE / 2;
   int d;
   bool first_match = false;
@@ -677,7 +677,7 @@ combine_predictions_for_insn (rtx insn, basic_block bb)
   for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
     if (REG_NOTE_KIND (note) == REG_BR_PRED)
       {
-	int predictor = INTVAL (XEXP (XEXP (note, 0), 0));
+	enum br_predictor predictor = INTVAL (XEXP (XEXP (note, 0), 0));
 	int probability = INTVAL (XEXP (XEXP (note, 0), 1));
 
 	found = true;
@@ -723,7 +723,7 @@ combine_predictions_for_insn (rtx insn, basic_block bb)
     {
       if (REG_NOTE_KIND (*pnote) == REG_BR_PRED)
 	{
-	  int predictor = INTVAL (XEXP (XEXP (*pnote, 0), 0));
+	  enum br_predictor predictor = INTVAL (XEXP (XEXP (*pnote, 0), 0));
 	  int probability = INTVAL (XEXP (XEXP (*pnote, 0), 1));
 
 	  dump_prediction (dump_file, predictor, probability, bb,
@@ -765,7 +765,7 @@ static void
 combine_predictions_for_bb (basic_block bb)
 {
   int best_probability = PROB_EVEN;
-  int best_predictor = END_PREDICTORS;
+  enum br_predictor best_predictor = END_PREDICTORS;
   int combined_probability = REG_BR_PROB_BASE / 2;
   int d;
   bool first_match = false;
@@ -813,7 +813,7 @@ combine_predictions_for_bb (basic_block bb)
 	 by predictor with smallest index.  */
       for (pred = (struct edge_prediction *) *preds; pred; pred = pred->ep_next)
 	{
-	  int predictor = pred->ep_predictor;
+	  enum br_predictor predictor = pred->ep_predictor;
 	  int probability = pred->ep_probability;
 
 	  if (pred->ep_edge != first)
@@ -888,7 +888,7 @@ combine_predictions_for_bb (basic_block bb)
     {
       for (pred = (struct edge_prediction *) *preds; pred; pred = pred->ep_next)
 	{
-	  int predictor = pred->ep_predictor;
+	  enum br_predictor predictor = pred->ep_predictor;
 	  int probability = pred->ep_probability;
 
 	  if (pred->ep_edge != EDGE_SUCC (bb, 0))
@@ -2185,7 +2185,7 @@ build_predict_expr (enum br_predictor predictor, enum prediction taken)
 {
   tree t = build1 (PREDICT_EXPR, void_type_node,
 		   build_int_cst (NULL, predictor));
-  PREDICT_EXPR_OUTCOME (t) = taken;
+  SET_PREDICT_EXPR_OUTCOME (t, taken);
   return t;
 }
 
-- 
cgit v1.2.1