PR c++/25855
* class.c (resolve_address_of_overloaded_function): Adjust use of
return value from most_specialized_instantiation.
* pt.c (determine_specialization): Avoid multiple calls to
get_bindings.
(most_specialized_instantiation): When a tie occurs, set the
current presumed champion to the next template. Return the
TREE_LIST node containing the template, rather than the template
itself.
(most_specialized): Remove.
* name-lookup.c (push_overloaded_decl): When duplicate_decls
indicates a failed redeclaration, report that to callers.
PR c++/25855
* g++.dg/template/spec29.C: New test.
From-SVN: r110332
2006-01-27 Daniel Berlin <dberlin@dberlin.org>
Kenneth Zadeck <zadeck@naturalbridge.com>
PR rtl-optimization/24762
* doc/tm.texi: Added TARGET_EXTRA_LIVE_ON_ENTRY.
* targhooks.c (hook_void_bitmap): New hook prototype.
* targhoohs.h (hook_void_bitmap): Ditto.
* bitmap.h (bitmap_head_def): Moved to coretypes.h.
* coretypes.h (bitmap_head_def): Moved from bitmap.h.
* target.h (live_on_entry): New function pointer.
* df-scan.c (df_all_hard_regs): Removed.
(df_scan_dump, df_hard_reg_init): Removed df_all_hard_regs.
(df_scan_free_internal): Added df->entry_block_defs.
(df_scan_alloc): Ditto.
(df_scan_dump): Ditto.
(df_uses_record): Plumbed flag field properly thru calls.
Record EH_RETURN_DATA_REGNO in eh blocks unconditionally.
This part fixes PR24762.
(df_bb_refs_record): Added code to make the frame and arg
pointers live in EH blocks.
(df_refs_record): Added call to df_record_entry_block_defs.
(df_record_entry_block_defs): New function.
* df-core.c: Added comments to describe new artifical defs.
* df.h (DF_REF_DIES_AFTER_THIS_USE): New flag in enum df_ref_flags.
(entry_block_defs): New field in struct df.
(df_all_hard_regs): Deleted.
* target-def.h: Added TARGET_EXTRA_LIVE_ON_ENTRY.
* df-problems.c (df_ru_bb_local_compute_process_def):
Added code to handle artifical defs in the entry to a function.
(df_ru_bb_local_compute): Ditto.
(df_rd_bb_local_compute_process_def): Ditto.
(df_rd_bb_local_compute): Ditto.
(df_lr_bb_local_compute): Ditto.
(df_ur_bb_local_compute): Ditto.
(df_urec_bb_local_compute): Ditto.
(df_chain_create_bb): Ditto.
(df_ur_local_finalize): Removed entry.
(df_urec_init): Ditto.
(df_urec_local_finalize): Ditto.
(df_ri_bb_compute): Added detection of last use of pseudos.
* Makefile.in (df-scan.o): Updated dependencies.
* config/mips/mips-protos.h (mips_set_live_on_entry): Added.
* config/mips/mips.c (mips_set_live_on_entry): Added.
* config/mips/mips.c (TARGET_EXTRA_LIVE_ON_ENTRY): Added value
for target hook.
* dce.c (marked_insn_p): Added code to handle artifical defs.
Co-Authored-By: Kenneth Zadeck <zadeck@naturalbridge.com>
From-SVN: r110312
2005-01-27 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25964
* resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
generic_ids exempted from assumed size checking.
2005-01-27 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25964
* gfortran.dg/assumed_size_refs_3.f90: New test.
From-SVN: r110307
PR fortran/25324
* Make-lang.in (fortran/scanner.o): Depend on toplev.h.
* lang.opt (fpreprocessed): New option.
* scanner.c: Include toplev.h.
(gfc_src_file, gfc_src_preprocessor_lines): New variables.
(preprocessor_line): Unescape filename if there were any
backslashes.
(load_file): If initial and gfc_src_file is not NULL,
use it rather than opening the file. If gfc_src_preprocessor_lines
has non-NULL elements, pass it to preprocessor_line.
(unescape_filename, gfc_read_orig_filename): New functions.
* gfortran.h (gfc_option_t): Add flag_preprocessed.
(gfc_read_orig_filename): New prototype.
* options.c (gfc_init_options): Clear flag_preprocessed.
(gfc_post_options): If flag_preprocessed, call
gfc_read_orig_filename.
(gfc_handle_option): Handle OPT_fpreprocessed.
* lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
sources.
From-SVN: r110304
2006-01-27 Jakub Jelinek <jakub@redhat.com>
PR target/25864
* libgcc-std.ver: Add GCC_4.1.0 symbol version.
* config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Only append
-mno-minimal-toc to previous content.
(bispecs): Remove goal.
* config/rs6000/ppc64-fp.c: Define TMODES before including fp-bit.h.
* config/rs6000/darwin-ldouble.c: Don't provide _xlq*@GCC_3.4
compatibility aliases on powerpc-*-*gnu*.
* config/rs6000/libgcc-ppc-glibc.ver: New file.
* config/rs6000/t-ppccomm (SHLIB_MAPFILES): Append
libgcc-ppc-glibc.ver on powerpc*-*-*gnu*.
(TARGET_LIBGCC2_CFLAGS): Append -specs=ldblspecs.
(ldblspecs): New goal.
* config/rs6000/t-linux64 (SHLIB_MAPFILES): Removed.
* mklibgcc.in: If $TPBIT is empty, don't compile _sf_to_tf and
_df_to_tf.
* config/fp-bit.h (TMODES): Don't define if none of TFLOAT,
L_sf_to_tf or L_df_to_tf is defined.
2006-01-27 David Edelsohn <edelsohn@gnu.org>
Alan Modra <amodra@bigpond.net.au>
PR target/25864
* config/rs6000/linux.h (POWERPC_LINUX): Define.
* config/rs6000/linux64.h (POWERPC_LINUX): Define.
* config/rs6000/darwin-ldouble.c: Build on 32-bit PowerPC.
* config/rs6000/darwin.h (TARGET_IEEEQUAD): Define to zero.
* config/rs6000/aix.h (TARGET_IEEEQUAD): Define to zero.
* config/rs6000/rs6000.c (rs6000_ieeequad): New variable.
(rs6000_override_options): Initialize rs6000_ieeequad.
Initialize TFmode format to ibm_extended_format if not
TARGET_IEEEQUAD.
(rs6000_handle_option): Accept -mabi= ibmlongdouble and
ieeelongdouble.
(rs6000_emit_move): Move !TARGET_IEEEQUAD as two parts.
(rs6000_return_in_memory): Only return IEEEQUAD in memory.
(function_arg_advance): IBM long double passed in two FPRs, not
split.
(function_arg): IBM long double passed in FPRs.
(rs6000_pass_by_reference): Only IEEEQUAD passed by reference.
(rs6000_gimplify_va_arg): IBM long double passed in two FPRs.
Only multireg GPR aligned.
(rs6000_init_libfuncs): Enable IBM long double functions if not
IEEEQUAD.
(rs6000_generate_compare): Use IBM long double compare if not
TARGET_IEEEQUAD.
* config/rs6000/rs6000.h (rs6000_ieeequad): Declare.
(TARGET_IEEEQUAD): Define.
(CANNOT_CHANGE_MODE_CLASS): Any mode larger than doubleword if
not TARGET_IEEEQUAD.
* config/rs6000/rs6000.md: Enable TFmode patterns if
!TARGET_IEEEQUAD.
* config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Add darwin-ldouble.c.
* config/rs6000/svr4.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
and -mlong-double-128 are incompatible.
* doc/invoke.texi (-mabi): Collect options together. Add
ibmlongdouble and ieeelongdouble.
From-SVN: r110303
PR other/24829
PR target/24831
* gthr-dce.h: Do not gthrw-ify pthread_once_init,
pthread_key_delete. From John David Anglin. gthrw-ify
pthread_getunique_np only if it it's not a macro. Delete
UNUSED macro.
(__gthread_objc_condition_allocate, __gthread_objc_condition_deallocate,
__gthread_objc_condition_wait, __gthread_objc_condition_broadcast,
__gthread_objc_condition_signal, __gthread_key_delete): Add
"__attribute__ ((__unused__))" to unused arguments.
(__gthread_recursive_mutex_init_function): Add missing return.
* gthr-dce.h, gthr-tpf.h, gthr-solaris.h, gthr-posix.h,
gthr-posix95.h: Use macro-based approach for name redirection
on targets missing weakref.
From-SVN: r110278
* genconditions.c (write_header): In generated code, #ifdef out
all includes and fake declarations, except includes of bconfig.h
and system.h, unless GCC_VERSION >= 3001. Do not include
gensupport.h in any case.
(write_conditions): Generate a definition of struct c_test. Add
a comment to the generated #endif.
(write_one_condition): Escape backslashes in string too.
(write_writer): Generated code must escape backslashes and quote
marks (but not newlines) in the strings it writes.
* Makefile.in (build/gencondmd.o): Update dependencies.
From-SVN: r110275
2005-01-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25964
* resolve.c (resolve_function): Exclude statement functions from
global reference checking.
PR fortran/25084
PR fortran/20852
PR fortran/25085
PR fortran/25086
* resolve.c (resolve_function): Declare a gfc_symbol to replace the
references through the symtree to the symbol associated with the
function expresion. Give error on reference to an assumed character
length function is defined in an interface or an external function
that is not a dummy argument.
(resolve_symbol): Give error if an assumed character length function
is array-valued, pointer-valued, pure or recursive. Emit warning
that character(*) value functions are obsolescent in F95.
PR fortran/25416
* trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
prevents any assumed character length function call from getting here
except intrinsics such as SPREAD. In this case, ensure that no
segfault occurs from referencing non-existent charlen->length->
expr_type and provide a backend_decl for the charlen from the charlen
of the first actual argument.
Cure temp name confusion.
* trans-expr.c (gfc_get_interface_mapping_array): Change name of
temporary from "parm" to "ifm" to avoid clash with temp coming from
trans-array.c.
2005-01-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25964
* gfortran.dg/global_references_2.f90: New test.
PR fortran/25084
PR fortran/20852
PR fortran/25085
PR fortran/25086
* gfortran.dg/assumed_charlen_function_1.f90: New test.
* gfortran.dg/assumed_charlen_function_3.f90: New test.
PR fortran/25416
* gfortran.dg/assumed_charlen_function_2.f90: New test.
From-SVN: r110269
2006-01-26 Paolo Bonzini <bonzini@gnu.org>
* configure.in: Set with_gnu_as, with_gnu_ld, with_newlib earlier.
Set md_exec_prefix. Use ACX_CHECK_INSTALLED_TARGET_TOOL to find
the assembler, linker and binutils.
* configure: Regenerate.
2006-01-26 Paolo Bonzini <bonzini@gnu.org>
* config/acx.m4 (NCN_STRICT_CHECK_TARGET_TOOLS): Test
$with_build_time_tools.
(ACX_PATH_SEP): New.
(ACX_TOOL_DIRS): Move here from the gcc directory.
(ACX_CHECK_INSTALLED_TARGET_TOOL): New.
(GCC_TARGET_TOOL): Do not use a host tool if we found a target tool
with a complete path in either $with_build_time_tools or $exec_prefix.
2006-01-26 Paolo Bonzini <bonzini@gnu.org>
* configure.ac: Expect target tools paths to be passed from the toplevel
and wrap the detection into AS_SET_VAR_IF. Extract side-effects out of
AS_SET_VAR_IF.
* acinclude.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL): Remove.
From-SVN: r110266
2006-01-26 Richard Guenther <rguenther@suse.de>
Andrew Pinski <pinskia@physics.uc.edu>
* tree-ssa-structalias.c (intra_create_variable_infos):
Create heap variables for incoming parameters if
flag_argument_noalias > 1.
(find_what_p_points_to): Look through default defs of
parameter decls.
Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu>
From-SVN: r110262
PR ada/25900
* tree-vrp.c (extract_range_from_assert): When merging a VR_RANGE
with a VR_ANTI_RANGE and the VR_ANTI_RANGEis completely contained
within the VR_RANGE, use the VR_RANGE as the result, not the
VR_ANTI_RANGE.
(adjust_range_with_scev): Reject ranges from SCEV which are out
of bounds for the type.
From-SVN: r110261
2006-01-26 Paolo Carlini <pcarlini@suse.de>
* docs/html/install.html ([Tools you will need beforehand]):
Clarify that the de_DE locale is used by configure; clarify
that missing localedata leads to skipped tests, not fails.
From-SVN: r110258
2006-01-26 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-alias.c (maybe_create_global_var): Change
subvar walking to an assertion that we don't have subvar'd variables.
From-SVN: r110257
2006-01-26 Andrew Pinski <pinskia@physics.uc.edu>
PR C/25861
* c-common.c (c_common_truthvalue_conversion) <case ADDR_EXPR>:
Use a new variable, inner. PARM_DECLs are always non-weak.
2006-01-26 Andrew Pinski <pinskia@physics.uc.edu>
PR C/25861
* gcc.c-torture/compile/pr25861.c: New test.
From-SVN: r110256
2006-01-26 Paul Brook <paul@codesourcery.com>
* gcc.dg/compat/struct-layout-1.exp: Pass -e to generator program
on short-enum targets.
* gcc.dg/compat/struct-layout-1_generate.c (short_enums): New
variable.
(generate_fields): Use short_enums.
(main): Set short_enums. Document -e.
* g++.dg/compat/struct-layout-1.exp: Pass -e to generator program
on short-enum targets.
* g++.dg/compat/struct-layout-1_generate.c (short_enums): New
variable.
(generate_fields): Use short_enums.
(main): Set short_enums. Document -e.
* lib/target-supports.exp (check_effective_target_short_enums): New.
From-SVN: r110247
PR target/25947
* config/cris/cris.c (cris_order_for_addsi3): New function.
* config/cris/cris-protos.h: Prototype it.
* config/cris/cris.md (split for "move.S1 [rx=rx+i],ry")
(split for "move.S1 ry,[rx=rx+i]", split for "clear.[bwd] [rx=rx+i]")
(split for "mov(s|u).S1 [rx=rx+i],ry", split for "op.S1 [rx=rx+i],ry")
(split for "op.S1 [rx=rx+i],ry (swapped)")
(split for "op(s|u).S1 [rx=rx+i],ry")
(split for "op(s|u).S1 [rx=rx+i],ry (swapped, plus or bound)"):
Apply cris_order_for_addsi3 when generating addsi3 insns.
From-SVN: r110245
PR rtl-optimization/25703
* combine.c (try_combine): Handle zero_extract and strict_low_part
of non-lowpart SUBREGs for constant reg_subword_p set optimization.
* gcc.target/i386/20060125-1.c: New test case.
* gcc.target/i386/20060125-2.c: New test case.
From-SVN: r110242