2008-06-02 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/vector.tcc (vector<>::_M_insert_aux): In C++0x mode,
avoid a memory leak if the first __uninitialized_move_a throws.
(vector<>::_M_fill_insert): Do not always copy to __x_copy, similarly
to _M_insert_aux.
* testsuite/23_containers/vector/modifiers/moveable.cc: Adjust.
* testsuite/23_containers/vector/resize/moveable.cc: Likewise.
From-SVN: r136277
gcc/
* config/mips/mips.c (mips_valid_offset_p): New function.
(mips_valid_lo_sum_p): Likewise.
(mips_classify_address): Use them.
(mips_force_address): New function.
(mips_legitimize_address): Use it.
* config/mips/mips.md (MOVE128): New mode iterator.
(movtf): Require TARGET_64BIT. Remove empty strings.
(*movtf_internal): Rename to...
(*movtf): ...this and require !TARGET_MIPS16. Use "m" instead
of "R" and use {,fp}{load,store} attributes instead of "multi".
Use a separate define_split.
(*movtf_mips16): New pattern.
gcc/testsuite/
* gcc.target/mips/fpr-moves-7.c: New test.
* gcc.target/mips/fpr-moves-8.c: New test.
From-SVN: r136253
gcc/
* config/mips/mips-protos.h (mips_expand_before_return): Declare.
* config/mips/mips.c (mips_expand_before_return): New function.
(mips_expand_epilogue): Call it.
* config/mips/mips.md (return): Turn into a define_expand.
(*return): New insn.
From-SVN: r136252
2008-05-31 Paolo Carlini <paolo.carlini@oracle.com>
Chris Jefferson <chris@bubblescope.net>
PR libstdc++/36338
* include/bits/stl_heap.h (sort_heap): Use __pop_heap directly.
(pop_heap): Slightly tweak.
Co-Authored-By: Chris Jefferson <chris@bubblescope.net>
From-SVN: r136242
2008-05-31 Steven G. Kargl <kargls@comcast.net>
* arith.c (gfc_arith_init_1): Remove now unused r and c variables.
Cleanup numerical inquiry function initialization.
(gfc_arith_done_1): Replace multiple mpfr_clear() invocations with
a single mpfr_clears().
(gfc_check_real_range): Re-arrange logic to eliminate multiple
unnecessary branching and assignments.
(gfc_arith_times): Use mpfr_clears() in preference to multiple
mpfr_clear().
(gfc_arith_divide): Ditto.
(complex_reciprocal): Eliminate now unused variables a, re, im.
Cleanup the mpfr abuse. Use mpfr_clears() in preference to
multiple mpfr_clear().
(complex_pow): Fix comment whitespace. Use mpfr_clears() in
preference to multiple mpfr_clear().
* simplify.c (gfc_simplify_and): Remove blank line.
(gfc_simplify_atan2): Move error checking earlier to eliminate
a now unnecessay gfc_free_expr().
(gfc_simplify_bessel_j0): Remove unnecessary gfc_set_model_kind().
(gfc_simplify_bessel_j1): Ditto.
(gfc_simplify_bessel_jn): Ditto.
(gfc_simplify_bessel_y0): Ditto.
(gfc_simplify_bessel_y1): Ditto.
(gfc_simplify_bessel_yn): Ditto.
(only_convert_cmplx_boz): Eliminate unnecessary duplicate code, and
combine nested if statement rational expressions.
(gfc_simplify_cos): Use mpfr_clears() in preference to multiple
mpfr_clear().
(gfc_simplify_exp): Ditto.
(gfc_simplify_fraction): Move gfc_set_model_kind() to after the
special case of 0. Use mpfr_clears() in preference to multiple
mpfr_clear().
(gfc_simplify_gamma): Eliminate unnecessary gfc_set_model_kind().
(gfc_simplify_lgamma): Ditto.
(gfc_simplify_log10): Ditto.
(gfc_simplify_log): Move gfc_set_model_kind () inside switch
statement. Use mpfr_clears() in preference to multiple mpfr_clear().
(gfc_simplify_mod): Eliminate now unused variables quot, iquot,
and term. Simplify the mpfr magic.
(gfc_simplify_modulo): Ditto.
(gfc_simplify_nearest): Eliminate unnecessary gfc_set_model_kind().
(gfc_simplify_scale): Use mpfr_clears() in preference to multiple
mpfr_clear().
(gfc_simplify_sin): Ditto
(gfc_simplify_sqrt): Ditto
(gfc_simplify_set_exponent): Move gfc_set_model_kind() to after the
special case of 0. Use mpfr_clears() in preference to multiple
mpfr_clear().
From-SVN: r136239
* config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
(UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
(movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
* config/avr/avr.c (expand_prologue, expand_epilogue): Use
movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
stack pointer register.
(output_movhi): Remove code for interrupt specific writing to the
stack pointer register.
From-SVN: r136238
* config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
*fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
mode iterator.
(*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
*fop_df_comm_sse insn patterns using MODEF mode iterator.
(*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
*fop_df_comm_i387 insn patterns using MODEF mode iterator.
(*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
*fop_df_1_mixed insn patterns using MODEF mode iterator.
(*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
*fop_df_1_sse insn patterns using MODEF mode iterator.
(*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
*fop_df_1_i387 insn patterns using MODEF mode iterator.
(*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
*fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
(*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
*fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
(*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
(*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
(*fop_xf_4_i387): Use <MODE> for mode attribute.
(*fop_xf_5_i387): Ditto.
(*fop_xf_6_i387): Ditto.
From-SVN: r136235
2008-05-30 Steven Bosscher <stevenb.gcc@gmail.com>
* config/rs6000/rs6000.c (rs6000_legitimize_address,
rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
rtx is a SYMBOL_REF before calling get_pool_constant.
From-SVN: r136216
* configure.ac (arm*-*-linux-gnueabi): Don't disable building
of libobjc for ARM EABI Linux.
* configure: Regenerate.
libobjc/
* exception.c (__objc_exception_class): Initialise as constant
array for ARM EABI. Change macro to static const for non-ARM EABI.
(ObjcException): Add note about structure layout. Remove landingPad
and handlerSwitchValue for ARM EABI.
(get_ttype_entry): Add __ARM_EABI_UNWINDER__ version
of function.
(CONTINUE_UNWINDING): Define for ARM EABI/otherwise cases.
(PERSONALITY_FUNCTION): Use ARM EABI-specific arguments, and add
ARM EABI unwinding support.
(objc_exception_throw): Use memcpy to initialise exception class.
From-SVN: r136215
libcpp/ChangeLog
* include/cpplib.h (struct cpp_dir): Add new field, canonical_name.
gcc/ChangeLog
* incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
rather than OS names to choose INO_T_EQ definition.
(DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
(add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
From-SVN: r136196
/cp
2008-05-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/35243
* pt.c (tsubst_initializer_list): Consistently check the tree
returned by tsubst_pack_expansion for error_mark_node.
/testsuite
2008-05-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/35243
* g++.dg/cpp0x/vt-35243.C: New.
From-SVN: r136174
2008-05-29 Paolo Carlini <paolo.carlini@oracle.com>
* include/debug/bitset (bitset(const char*)): Implement DR 778
in debug-mode too.
* include/bits/cpp_type_traits.h (__is_integer): In C++0x mode
deal with char16_t and char32_t.
From-SVN: r136158
2008-05-29 Richard Guenther <rguenther@suse.de>
PR tree-optimization/36343
PR tree-optimization/36346
PR tree-optimization/36347
* tree-flow.h (clobber_what_p_points_to): Declare.
* tree-ssa-structalias.c (set_uids_in_ptset): Whether the
pointed-to variable is dereferenced is irrelevant to whether
the pointer can access the pointed-to variable.
(clobber_what_p_points_to): New function.
* tree-ssa-alias.c (set_initial_properties): Use it.
* tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
call clobber check for NMTs.
* gcc.c-torture/execute/pr36343.c: New testcase.
From-SVN: r136152
PR ada/864
* osint.ads, osint.adb (Program_Name): New parameter "Prog" to
allow recognition of program suffix in addition to prefix.
* gnatchop.adb (Locate_Executable): Add support for prefix.
* make.adb, gnatcmd.adb, gnatlink.adb, prj-makr.adb,
mlib-utl.adb: Adjust calls to Program_Name.
From-SVN: r136149
2008-05-29 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Analyze_Subprogram_Specification): if the return type
is abstract, do not apply abstractness check on subprogram if this is
a renaming declaration.
From-SVN: r136148
2008-05-28 Seongbae Park <seongbae.park@gmail.com>
* value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
for printing gcov_type.
From-SVN: r136131
PR fortran/36319
* intrinsic.c (gfc_convert_chartype): Don't mark conversion
function as pure.
* trans-array.c (gfc_trans_array_ctor_element): Divide element
size by the size of one character to obtain length.
* iresolve.c (gfc_resolve_cshift): Call the _char4 variant when
appropriate.
(gfc_resolve_eoshift): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Minor beautification.
(gfc_conv_intrinsic_fdate): Minor beautification.
(gfc_conv_intrinsic_ttynam): Minor beautification.
(gfc_conv_intrinsic_minmax_char): Allow all character kinds.
(size_of_string_in_bytes): New function.
(gfc_conv_intrinsic_size): Call size_of_string_in_bytes for
character expressions.
(gfc_conv_intrinsic_sizeof): Likewise.
(gfc_conv_intrinsic_array_transfer): Likewise.
(gfc_conv_intrinsic_trim): Allow all character kinds. Minor
beautification.
(gfc_conv_intrinsic_repeat): Fix comment typo.
* simplify.c (gfc_convert_char_constant): Take care of conversion
of array constructors.
* intrinsics/string_intrinsics_inc.c (string_index): Return
correct value for zero-length substring.
* intrinsics/cshift0.c: Add _char4 variant.
* intrinsics/eoshift0.c (eoshift0): Allow filler to be a pattern
wider than a single byte. Add _char4 variant and use above
functionality.
* intrinsics/eoshift2.c (eoshift2): Likewise.
* m4/eoshift1.m4: Likewise.
* m4/eoshift3.m4: Likewise.
* m4/cshift1.m4: Add _char4 variants.
* gfortran.map (GFORTRAN_1.1): Add _gfortran_cshift0_1_char4,
_gfortran_cshift0_2_char4, _gfortran_cshift0_4_char4,
_gfortran_cshift0_8_char4, _gfortran_cshift1_16_char4,
_gfortran_cshift1_4_char4, _gfortran_cshift1_8_char4,
_gfortran_eoshift0_1_char4, _gfortran_eoshift0_2_char4,
_gfortran_eoshift0_4_char4, _gfortran_eoshift0_8_char4,
_gfortran_eoshift1_16_char4, _gfortran_eoshift1_4_char4,
_gfortran_eoshift1_8_char4, _gfortran_eoshift2_1_char4,
_gfortran_eoshift2_2_char4, _gfortran_eoshift2_4_char4,
_gfortran_eoshift2_8_char4, _gfortran_eoshift3_16_char4,
_gfortran_eoshift3_4_char4 and _gfortran_eoshift3_8_char4.
* generated/eoshift3_4.c: Regenerate.
* generated/eoshift1_8.c: Regenerate.
* generated/eoshift1_16.c: Regenerate.
* generated/cshift1_4.c: Regenerate.
* generated/eoshift1_4.c: Regenerate.
* generated/eoshift3_8.c: Regenerate.
* generated/eoshift3_16.c: Regenerate.
* generated/cshift1_8.c: Regenerate.
* generated/cshift1_16.c: Regenerate.
* gfortran.dg/widechar_5.f90: New file.
* gfortran.dg/widechar_6.f90: New file.
* gfortran.dg/widechar_7.f90: New file.
* gfortran.dg/widechar_intrinsics_5.f90: Uncomment the lines
testing the SPREAD intrinsic.
* gfortran.dg/widechar_intrinsics_6.f90: New file.
* gfortran.dg/widechar_intrinsics_7.f90: New file.
* gfortran.dg/widechar_intrinsics_8.f90: New file.
* gfortran.dg/widechar_intrinsics_9.f90: New file.
* gfortran.dg/widechar_intrinsics_10.f90: New file.
From-SVN: r136129