* config/rs6000/rs6000.c (rs6000_override_options):
Use TARGET_MACHO inline, move darwin_one_byte_bool from here...
... to darwin_rs6000_override_options.
(rs6000_return_in_memory): Update preceding comment for darwin
64 bit ABI. Use TARGET_MACHO inline.
(rs6000_darwin64_struct_check_p): New.
(function_arg_advance): Use rs6000_darwin64_struct_check_p.
(function_arg): Likewise.
(rs6000_arg_partial_bytes): Likewise.
(rs6000_function_value): Likewise.
* config/darwin-driver.c (SWITCH_TAKES_ARG,
WORD_SWITCH_TAKES_ARG): Remove.
* cppspec.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Remove.
* defaults.h (DEFAULT_SWITCH_TAKES_ARG,
DEFAULT_WORD_SWITCH_TAKES_ARG): Move from gcc.h.
(SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move default
definitions from gcc.c.
* gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move to
defaults.h.
* gcc.h (DEFAULT_SWITCH_TAKES_ARG, DEFAULT_WORD_SWITCH_TAKES_ARG):
Move to defaults.h.
* opts-common.c: Include tm.h.
(decode_cmdline_option): Use SWITCH_TAKES_ARG and
WORD_SWITCH_TAKES_ARG to count arguments to unknown options.
Handle more than one argument. Set canonical_option_num_elements.
(decode_cmdline_options_to_array): Set
canonical_option_num_elements and trailing elements of
canonical_option.
* opts.h (struct cl_decoded_option): Allow four elements in
canonical_option. Add field canonical_option_num_elements.
* Makefile.in (opts-common.o): Update dependencies.
Eric Botcazou [Wed, 28 Jul 2010 07:44:34 +0000 (07:44 +0000)]
re PR middle-end/44790 (Bootstrap fails after MEM-REF merge)
PR middle-end/44790
PR middle-end/44993
* expr.c (expand_expr_real_1) <MEM_REF>: Revert latest change. Make
sure the base has address_mode before adding the offset.
Jason Merrill [Tue, 27 Jul 2010 22:06:03 +0000 (18:06 -0400)]
pt.c (tsubst_expr): Handle getting an AGGR_INIT_EXPR from build_value_init.
* pt.c (tsubst_expr) [DECL_EXPR]: Handle getting an AGGR_INIT_EXPR
from build_value_init.
* init.c (build_value_init_noctor): Give error for unknown array
bound.
Joseph Myers [Tue, 27 Jul 2010 21:23:53 +0000 (22:23 +0100)]
coretypes.h (struct cl_option_handlers): Declare.
* coretypes.h (struct cl_option_handlers): Declare.
* hooks.c (hook_int_size_t_constcharptr_int_0): Remove.
* hooks.h (hook_int_size_t_constcharptr_int_0): Remove.
* langhooks-def.h (lhd_handle_option): Declare.
(LANG_HOOKS_HANDLE_OPTION): Use lhd_handle_option.
* langhooks.c (lhd_handle_option): New.
* langhooks.h (struct lang_hooks): Update prototype and return
value type of handle_option hook.
* optc-gen.awk: Generate target_flags_explicit definition for the
driver.
* opts-common.c: Include diagnostic.h.
(handle_option): Move from opts.c. Update prototype and return
value type. Use handlers structure.
(read_cmdline_option): Move from opts.c. Update prototype. Use
handlers structure.
(set_option): Move from opts.c.
* opts.c (common_handle_option): Update prototype and return value
type. Update calls to handle_option and enable_warning_as_error.
(unknown_option_callback, post_handling_callback,
lang_handle_option, target_handle_option): New.
(handle_option, read_cmdline_option): Move to opts-common.c.
(read_cmdline_options): Update prototype. Update call to
read_cmdline_option.
(decode_options): Initialize and use handlers structure.
(set_option): Move to opts-common.c.
(enable_warning_as_error): Update prototype. Update call to
handle_option.
* opts.h (struct cl_option_handler_func, struct
cl_option_handlers): New.
(handle_option, enable_warning_as_error): Update prototypes.
(read_cmdline_option): Declare.
* Makefile.in (opts-common.o): Update dependencies.
ada:
* gcc-interface/misc.c (gnat_handle_option): Update prototype and
return value type. Don't check for missing arguments here.
c-family:
* c-common.h (c_common_handle_option): Update prototype and return
value type.
* c-opts.c (c_common_handle_option): Update prototype and return
value type. Update calls to handle_option and
enable_warning_as_error.
fortran:
* gfortran.h (gfc_handle_option): Update prototype and return
value type.
* options.c (gfc_handle_option): Update prototype and return value
type.
java:
* lang.c (java_handle_option): Update prototype and return value
type.
lto:
* lto-lang.c (lto_handle_option): Update prototype and return
value type. Remove duplicate assignment to result.
PR target/42495
PR middle-end/42574
* basic-block.h (get_dominated_to_depth): Declare.
* dominance.c (get_dominated_to_depth): New function, use
get_all_dominated_blocks as a base.
(get_all_dominated_blocks): Use get_dominated_to_depth.
PR target/42495
PR middle-end/42574
* config/arm/arm.c (legitimize_pic_address): Use
gen_calculate_pic_address pattern to emit calculation of PIC address.
(will_be_in_index_register): New function.
(arm_legitimate_address_outer_p, thumb2_legitimate_address_p,)
(thumb1_legitimate_address_p): Use it provided !strict_p.
* config/arm/arm.md (calculate_pic_address): New expand and split.
* gcse.c (struct expr:max_distance): New field.
(doing_code_hoisting_p): New static variable.
(want_to_gcse_p): Change signature. Allow constrained hoisting of
simple expressions, don't change behavior for PRE. Set max_distance.
(insert_expr_in_table): Set new max_distance field.
(hash_scan_set): Update.
(hoist_expr_reaches_here_p): Stop search after max_distance
instructions.
(find_occr_in_bb): New static function. Use it in ...
(hoist_code): Calculate sizes of basic block before any changes are
done. Pass max_distance to hoist_expr_reaches_here_p.
(one_code_hoisting_pass): Set doing_code_hoisting_p.
* params.def (PARAM_GCSE_COST_DISTANCE_RATIO,)
(PARAM_GCSE_UNRESTRICTED_COST): New parameters.
* params.h (GCSE_COST_DISTANCE_RATIO, GCSE_UNRESTRICTED_COST): New
macros.
* doc/invoke.texi (gcse-cost-distance-ratio, gcse-unrestricted-cost):
Document.
Jakub Jelinek [Tue, 27 Jul 2010 17:54:32 +0000 (19:54 +0200)]
re PR target/44542 (expand_one_stack_var_at may set DECL_ALIGN to a too high value)
PR target/44542
* cfgexpand.c (expand_one_stack_var_at): Limit align to maximum
of max_used_stack_slot_alignment and PREFERRED_STACK_BOUNDARY
instead of MAX_SUPPORTED_STACK_ALIGNMENT.
(expand_one_var): Don't consider DECL_ALIGN for variables for
which expand_one_stack_var_at has been already called.
postreload.c (try_replace_in_use): New static function.
* postreload.c (try_replace_in_use): New static function.
(reload_combine_recognize_const_pattern): Use it here. Allow
substituting into a final add insn, and substituting into a memory
reference in an insn that sets the reg.
re PR target/35491 (wrong ABI for some struct passing with vector code)
PR target/35491
PR target/29090
Merge from Apple local 4.2.1.
2005-05-11 Stan Shebs <shebs@apple.com>
Fix 64-bit varargs for Darwin (Radar 4028089).
* config/rs6000/rs6000.h (rs6000_args): New field floats_in_gpr.
* config/rs6000/rs6000.c (rs6000_darwin64_record_arg_advance_flush):
Add argument, add case for 8-byte register half-filled with a float.
(rs6000_darwin64_record_arg_advance_recurse): Detect and handle
single-precision floats specially.
Ira Rosen [Tue, 27 Jul 2010 12:26:31 +0000 (12:26 +0000)]
re PR tree-optimization/44152 (ICE on compiling xshow.f of xplor-nih with -O3 -ffast-math -fwhopr)
PR tree-optimization/44152
* tree-vect-slp.c (vect_build_slp_tree): Collect nodes with
complex numbers for further check.
(vect_supported_load_permutation_p): Check nodes with
complex numbers.
re PR fortran/40873 (-fwhole-file -fwhole-program: Wrong decls cause too much to be optimized away)
2010-07-26 Tobias Burnus <burnus@net-b.de>
PR fortran/40873
* trans-decl.c (gfc_get_extern_function_decl): Fix generation
for functions which are later in the same file.
(gfc_create_function_decl, build_function_decl,
build_entry_thunks): Add global argument.
* trans.c (gfc_generate_module_code): Update
gfc_create_function_decl call.
* trans.h (gfc_create_function_decl): Update prototype.
* resolve.c (resolve_global_procedure): Also resolve for
IFSRC_IFBODY.
2010-07-26 Tobias Burnus <burnus@net-b.de>
PR fortran/40873
* gfortran.dg/whole_file_22.f90: New test.
* gfortran.dg/whole_file_23.f90: New test.
14220.cc: XFAIL on Solaris 9/x86, 32-bit Solaris 10/x86 and 64-bit Solaris 10/SPARC.
* testsuite/22_locale/num_put/put/char/14220.cc: XFAIL on Solaris
9/x86, 32-bit Solaris 10/x86 and 64-bit Solaris 10/SPARC.
* testsuite/22_locale/num_put/put/wchar_t/14220.cc: XFAIL on
Solaris 9/x86 and 32-bit Solaris 10/x86.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
Only XFAIL on Solaris 8 and 9.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc:
Likewise.
* testsuite/ext/enc_filebuf/char/13598.cc: XFAIL before Solaris 11.
Richard Guenther [Mon, 26 Jul 2010 12:48:37 +0000 (12:48 +0000)]
re PR tree-optimization/45071 (ICE: tree check: expected ssa_name, have integer_cst in inhibit_phi_insertion, at tree-ssa-pre.c:3278 with -ftree-pre -ftree-vectorize)
re PR fortran/45066 (ICE in namelist read in snapshot of 7/24/2010)
2010-07-26 Tobias Burnus <burnus@net-b.de>
PR fortran/45066
* trans-io.c (build_dt): Use NULL_TREE rather than NULL
for call to transfer_namelist_element.
* trans-decl.c (gfc_get_symbol_decl): Also set sym->backend_decl
for -fwhole-file.
* configure.ac: Support all v850 targets.
* configure: Regenerate.
* config/v850/lib1funcs.asm (save_r2_r31, return_r2_r31,
save_r20_r31, return_r20_r31, save_r21_r31, return_r21_r31,
save_r22_r31, return_r22_r31, save_r23_r31, return_r23_r31,
save_r24_r31, return_r24_r31, save_r25_r31, return_r25_r31,
save_r26_r31, return_r26_r31, save_r27_r31, return_r27_r31,
save_r28_r31, return_r28_r31, save_r29_r31, return_r29_r31,
save_r31, return_r31, save_interrupt, return_interrupt,
save_all_interrupt, return_all_interrupt, L_save_r2_r31,
L_return_interrupt, callt_return_interrupt, L_restore_all_interrupt,
L_save_##START##_r31c, L_callt_save_r31c: Updated as per the
new ABI requirements.
save_r6_r9, L_callt_save_r6_r9: Remove.
* config/v850/predicates.md (even_reg_operand, disp23_operand,
const_float_1_operand const_float_0_operand): New Predicates.
(pattern_is_ok_for_prepare, pattern_is_ok_for_prologue,
pattern_is_ok_for_epilogue): Update as per the ABI requirements.
* config/v850/t-v850: Update multilibs for new target variants.
(save_varargs, callt_save_varargs, callt_save_r6_r9): Remove.
* config/v850/t-v850e: Likewise.
* config/v850/v850.c (v850_issue_rate): New.
(v850_strict_argument_naming): New.
(function_arg): Modify to generate a different ABI.
(print_operand): Update case 'z' to support float modes.
(output_move_single): Modify to generate appropriate and better
assembly.
(v850_float_z_comparison_operator, v850_select_cc_mode,
v850_float_nz_comparison_operator, v850_gen_float_compare,
v850_gen_compare): New functions to support comparison of
float values.
(ep_memory_offset): Add support for V850E2 targets.
(INTERRUPT_FIXED_NUM, INTERRUPT_ALL_SAVE_NUM): Update.
(INTERRUPT_REGPARM_NUM): Remove.
(compute_register_save_size): Add extra case to save/restore
long call.
(use_prolog_function): New function to support prologue.
(expand_prologue): Add support for V850E2 targets and modified
as per the current ABI requirements.
(expand_epilogue): Likewise.
(construct_restore_jr): Modify based on TARGET_LONG_CALLS.
(construct_save_jarl): Likewise.
(construct_dispose_instruction): Update as per the current ABI
requirements.
(construct_prepare_instruction): Likewise.
* config/v850/v850.h(TARGET_CPU_DEFAULT): Add target predefines.
(TARGET_CPU_v850e2, TARGET_CPU_v850e2v3): Define
(CPP_SPEC): Updated to support v850e2 targets.
(STRICT_ALIGNMENT): Modified.
(FIRST_PSEUDO_REGISTER): Updated to add even registers.
(FIXED_REGISTERS): Likewise.
(CALL_USED_REGISTERS): Likewise.
(CONDITIONAL_REGISTER_USAGE): Updated.
(HARD_REGNO_MODE_OK): Updated.
(reg_class): Updated to add even registers.
(REG_CLASS_NAMES): Likewise.
(REG_CLASS_CONTENTS): Likewise.
(REGNO_REG_CLASS): Updated for CC registers.
(REG_CLASS_FROM_LETTER): Added support for even registers.
(REGNO_OK_FOR_BASE_P): Updated for CC registers.
(STACK_POINTER_REGNUM, FRAME_POINTER_REGNUM, LINK_POINTER_REGNUM,
ARG_POINTER_REGNUM): Updated.
(FUNCTION_ARG_ADVANCE): Define.
(REG_PARM_STACK_SPACE): Update as per the current ABI requirements.
(OUTGOING_REG_PARM_STACK_SPACE): Remove.
(EXTRA_CONSTRAINT): Add new constraint 'W' for 23-bit displacement.
(GO_IF_LEGITIMATE_ADDRESS): Updated.
(SELECT_CC_MODE): Define.
(REGISTER_NAMES): Updated to add psw and fcc registers.
(ADDITIONAL_REGISTER_NAMES): Updated.
(ASM_OUTPUT_ADDR_DIFF_ELT): Updated to support new targets.
(JUMP_TABLES_IN_TEXT_SECTION): Updated.
* config/v850/v850.md (define_constants): Define new constants.
(type): Update store,bit1,macc,div,fpu and single attributes.
(cpu): New attribute.
(cc): Add set_z attribute.
(unsign23byte_load, sign23byte_load, unsign23hword_load,
sign23hword_load, 23word_load, 23byte_store, 23hword_store,
23word_store): New instructions for 23-bit displacement load and
store.
(movqi_internal, movhi_internal): Update the attributes.
(movsi, movsi_internal_v850e): Updated to support v850e2 targets.
(movsi_internal_v850e, movsi_internal, movsf_internal): Update
the attributes.
(v850_tst1): Modified using CC_REGNUM.
(tstsi): Remove.
(cmpsi): Modified as define_expand from define_insn.
(cmpsi_insn, cmpsf, cmpdf): New instructions.
(addsi3, subsi3, negsi2, divmodsi4, udivmodsi4, divmodhi4,
udivmodhi4, v850_clr1_1, v850_clr1_2, v850_clr1_3, andsi3,
v850_set1_1, v850_set1_3, iorsi3, v850_not1_1, v850_not1_3, xorsi3,
one_cmplsi2): Clobber the CC_REGNUM register.
(v850_clr1_1, v850_clr1_2, v850_clr1_3, andsi3, v850_set1_1,
v850_set1_2, v850_set1_3, iorsi3, v850_not1_1, v850_not1_2,
v850_not1_3, xorsi3, one_cmplsi2): Update the attributes
accordingly.
(setf_insn, set_z_insn, set_nz_insn): New instructions for
v850e2v3 target.
(movsicc_normal_cc, movsicc_reversed_cc): New instructions.
(movsicc, movsicc_normal, movsicc_reversed): Add support for V850E2
targets.
(sasf_1, sasf_2): Remove.
(sasf): New instruction.
(rotlhi3, rotlhi3_8, rotlsi3, rotlsi3_16): Update to support V850E2
targets. CC_REGNUM register is clobbered and attributes are
updated.
(branch_z_normal, branch_z_invert, branch_nz_normal,
branch_nz_invert): New branch related instructions.
(jump): Updated the attributes.
(switch): Update to support new targets. CC_REGNUM register is
clobbered and attributes are updated.
(call_internal_short, call_internal_long, call_value_internal_short,
call_value_internal_long): Updated the attributes.
(zero_extendhisi2, zero_extendqisi2): CC_REGNUM register is
clobbered and attributes are updated.
(extendhisi_insn, extendhisi2, extendqisi_insn, extendqisi2):
Update to support new targets. CC_REGNUM register is clobbered.
(ashlsi3_v850e2, lshrsi3_v850e2, ashrsi3_v850e2): New shift
instructions.
(lshrsi3, ashrsi3): CC_REGNUM register is clobbered and attributes
are updated.
(ffssi2, addsf3, adddf3, subsf3, subdf3, mulsf3, muldf3, divsf3,
divdf3, minsf3, mindf3, maxsf3, maxdf3, abssf2, absdf2, negsf2,
negdf2, sqrtsf2, sqrtdf2, truncsfsi2, truncdfsi2, floatsisf2,
floatsidf2, extendsfdf2, extenddfsf2, recipsf2, recipdf2,
rsqrtsf2, rsqrtdf2, maddsf4, msubsf4, nmaddsf4, nmsubsf4,
cmpsf_le_insn, cmpsf_lt_insn, cmpsf_ge_insn, cmpsf_gt_insn,
cmpsf_eq_insn, cmpsf_ne_insn, cmpdf_le_insn, cmpdf_lt_insn,
cmpdf_ge_insn, cmpdf_gt_insn, cmpdf_eq_insn, cmpdf_ne_insn, trfsr,
movsfcc, movdfcc, movsfcc_z_insn, movsfcc_nz_insn, movdfcc_z_insn,
movdfcc_nz_insn, movedfcc_z_zero, movedfcc_nz_zero): New floating
point instructions defined for V850e2v3 target.
(callt_save_interrupt, callt_return_interrupt, return_interrupt):
Add support for V850E2 targets and CC_REGNUM register is clobbered.
(callt_save_all_interrupt, callt_restore_all_interrupt): Add
support for new targets.
* config/v850/v850-modes.def: New file.
* config/v850/v850.opt(mstrict-align): Remove.
(mno-strict-align, mjump-tables-in-data-section, mv850e2,
mv850e2v3): New command line options for V850.
* config.gcc: Update the newly added files.
* doc/invoke.texi: Update the newly added command line options for
V850 target.
Eric Botcazou [Sun, 25 Jul 2010 21:32:16 +0000 (21:32 +0000)]
re PR target/44484 (revision 160260 caused sparc64 testsuite failures)
PR target/44484
* config/sparc/predicates.md (memory_reg_operand): Delete.
* config/sparc/sync.md (sync_compare_and_swap): Minor tweaks.
(*sync_compare_and_swap): Encode the address form in the pattern.
(*sync_compare_and_swapdi_v8plus): Likewise.
Mikael Morin [Sun, 25 Jul 2010 17:01:15 +0000 (17:01 +0000)]
re PR fortran/44660 (ICE in resolve_equivalence())
2010-07-25 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/44660
* gfortran.h (gfc_namespace): New field old_equiv.
(gfc_free_equiv_until): New prototype.
* match.c (gfc_free_equiv_until): New, renamed from gfc_free_equiv with
a parameterized stop condition.
(gfc_free_equiv): Use gfc_free_equiv_until.
* parse.c (next_statement): Save equivalence list.
(reject_statement): Restore equivalence list.
Jerry DeLisle [Sun, 25 Jul 2010 15:07:45 +0000 (15:07 +0000)]
re PR fortran/42852 (gfortran -Wall warns about truncated lines when only a continuation character is truncated)
2010-07-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/42852
* scanner.c (gfc_next_char_literal): Move check for truncation earlier
in the function so that it does not get missed by early exits.
(load_line): Add checks for quoted strings and free form comments to
disable warnings on comments. Add check for ampersand as first
character after truncation and don't warn for this case, but warn if
there are subsequent non-whitespace characters.
* options.c (gfc_init_options): Enable -fwhole-file by default.
* interface.c (compare_parameter): Assume a Hollerith constant is
compatible with all other argument types.