* opt-functions.awk (var_type_struct): Handle Enum options.
* optc-gen.awk: Don't check range of variables of character type.
* config/rs6000/rs6000.c (rs6000_sched_insert_nops_str,
rs6000_sched_costly_dep_str, rs6000_recip_name, rs6000_abi_name,
rs6000_sdata_name, rs6000_explicit_options): Remove.
(rs6000_option_override_internal): Check for -malign-power here.
Use global_options_set instead of rs6000_explicit_options.
(rs6000_parse_fpu_option): Remove.
(rs6000_handle_option): Access variables via opts and opts_set
pointers. Use error_at and warning_at. Add fall-through
comments. Don't handle OPT_mcmodel_, OPT_maix_struct_return,
OPT_msvr4_struct_return, OPT_mvrsave, OPT_mspe, OPT_mcall_,
OPT_msdata_, OPT_mtls_size_, OPT_mtraceback_, OPT_mfloat_gprs_,
OPT_msched_costly_dep_, OPT_malign_ or OPT_mrecip_ explicitly
here. Don't use rs6000_parse_fpu_option.
* config/rs6000/rs6000.h (fpu_type): Remove declaration.
* config/rs6000/rs6000.opt (rs6000_long_double_type_size,
rs6000_spe, rs6000_float_gprs): Remove TargetVariable entries.
(mrecip=): Use Var.
(mspe): Use Var and Save.
(mtraceback=): Use Enum and Var.
(rs6000_traceback_type): New Enum and EnumValue entries.
(mfloat-gprs=): Use Enum, Var and Save.
(rs6000_float_gprs): New Enum and EnumValue entries.
(mlong-double-): use Var and Save.
(msched-costly-dep=, minsert-sched-nops=): Use Var.
(malign-): Use Enum and Var.
(rs6000_alignment_flags): New Enum and EnumValue entries.
(mfpu=): Use Enum.
(fpu_type_t): New Enum and EnumValue entries.
* config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Use
global_options_set instead of rs6000_explicit_options.
* config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Use
global_options_set instead of rs6000_explicit_options.
* config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Use
global_options_set instead of rs6000_explicit_options.
* config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Use
global_options_set instead of rs6000_explicit_options.
* config/rs6000/e500-double.h (SUB3TARGET_OVERRIDE_OPTIONS): Use
global_options_set instead of rs6000_explicit_options.
* config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
global_options_set instead of rs6000_explicit_options.
(RS6000_DEFAULT_LONG_DOUBLE_SIZE): Remove commented-out
definition.
* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
global_options_set instead of rs6000_explicit_options.
* config/rs6000/linux64.opt (mcmodel=): Use Enum and Var.
(rs6000_cmodel): New Enum and EnumValue entries.
* config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
global_options_set instead of rs6000_explicit_options.
* config/rs6000/sysv4.opt (mcall-, msdata=): Use Var.
(mtls-size=): Use Enum and Var.
(rs6000_tls_size): New Enum and EnumValue entries.
From-SVN: r173434
2011-05-05 Richard Guenther <rguenther@suse.de>
* expmed.c (expand_variable_shift): Rename to ...
(expand_shift_1): ... this. Take an expanded shift amount.
For rotates recurse directly not building trees for the shift amount.
(expand_variable_shift): Wrap around expand_shift_1.
(expand_shift): Adjust.
From-SVN: r173428
2011-05-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/48787
* io/write_float.def (output_float): Adjust up and down rounding for
cases where 'd' = 0. Gather common code to one location.
From-SVN: r173408
PR rtl-optimization/47612
* df-problems.c (can_move_insns_across): Don't pick a cc0 setter
as the last insn of the sequence to be moved.
From-SVN: r173393
don't use TYPE_ARG_TYPES in c-family/
* c-common.c (check_main_parameter_types): Reindent. Don't use
TYPE_ARG_TYPES directly.
(handle_nonnull_attribute): Likewise.
(sync_resolve_params): Likewise.
* c-format.c (handle_format_arg_attribute): Likewise. Adjust call
to check_format_string.
(handle_format_attribute): Likewise.
(check_format_string): Take a function type to examine instead of
a type list. Use a function_arg_iterator to step through argument
types.
From-SVN: r173384
* go-gcc.cc (Gcc_backend::struct_type): Call fill_in_struct.
(Gcc_backend::fill_in_struct): New function.
(Gcc_backend::array_type): Implement.
(Gcc_backend::fill_in_array): New function.
(Gcc_backend::placeholder_pointer_type): New function.
(Gcc_backend::set_placeholder_pointer_type): New function.
(Gcc_backend::set_placeholder_function_type): New function.
(Gcc_backend::placeholder_struct_type): New function.
(Gcc_backend::set_placeholder_struct_type): New function.
(Gcc_backend::placeholder_array_type): New function.
(Gcc_backend::set_placeholder_array_type): New function.
(Gcc_backend::named_type): New function.
(Gcc_backend::circular_pointer_type): New function.
(Gcc_backend::is_circular_pointer_type): New function.
From-SVN: r173380
2011-05-04 Richard Guenther <rguenther@suse.de>
* coverage.c (tree_coverage_counter_ref): Use integer_type_node
for array-ref indices.
(tree_coverage_counter_addr): Likewise.
(build_fn_info_type): Use size_int for index types.
(build_gcov_info): Likewise.
From-SVN: r173379
2011-05-04 Richard Guenther <rguenther@suse.de>
* c-decl.c (check_bitfield_type_and_width): Do not pass NULL
to build_int_cst.
* c-typeck.c (really_start_incremental_init): Use bitsize_int
for constructor indices.
(push_init_level): Likewise.
c-family/
* c-common.c (fix_string_type): Use size_int for index type bounds.
(start_fname_decls): Do not pass NULL to build_int_cst.
(c_init_attributes): Likewise.
* c-lex.c (c_lex_with_flags): Likewise.
From-SVN: r173378
2011-05-04 Richard Guenther <rguenther@suse.de>
* trans-array.c (gfc_trans_array_constructor_value): Use
size_int for bounds of range types.
(gfc_trans_array_constructor_value): Use size_type_node
for memcpy argument.
* trans-common.c (build_field): Use gfc_charlen_type_node
for lengths.
* trans-openmp.c (gfc_trans_omp_clauses): Do not pass NULL
as type to build_int_cst.
* trans-const.c (gfc_build_string_const): Use size_int
for bounds of range types.
(gfc_build_wide_string_const): Likewise.
* trans-stmt.c (gfc_trans_label_assign): Use gfc_charlen_type_node
for lengths.
(gfc_trans_character_select): Likewise.
(gfc_trans_character_select): Do not pass NULL
as type to build_int_cst.
(gfc_trans_character_select): Use size_int for bounds of range types.
* trans-io.c (gfc_build_io_library_fndecls): Likewise.
(add_case): Do not pass NULL as type to build_int_cst.
(transfer_expr): Likewise.
(transfer_array_desc): Likewise.
* trans-decl.c (gfc_add_assign_aux_vars): Use gfc_charlen_type_node
for lengths.
(gfc_trans_assign_aux_var): Likewise.
(create_main_function): Use size_int for bounds of range types.
* trans-intrinsic.c (gfc_conv_intrinsic_minmax_char): Do not pass
NULL as type to build_int_cst.
(gfc_conv_intrinsic_spacing): Likewise.
(gfc_conv_intrinsic_rrspacing): Likewise.
(gfc_conv_intrinsic_len): Use gfc_charlen_type_node for lengths.
From-SVN: r173374