* gcc.c-torture/compile/20080625-1.c: Skip for AVR target.
* gcc.dg/torture/pr36373-10.c: Correct test where target pointer is not same size as unsigned long.
PR fortran/36341
PR fortran/34670
* gfortran.dg/matmul_bounds_2.f90: New test.
* gfortran.dg/matmul_bounds_3.f90: New test.
* gfortran.dg/matmul_bounds_4.f90: New test.
* gfortran.dg/matmul_bounds_5.f90: New test.
Martin Jambor [Mon, 7 Jul 2008 19:06:28 +0000 (21:06 +0200)]
cgraph.c (cgraph_edge_max_uid): New variable.
2008-07-07 Martin Jambor <mjambor@suse.cz>
* cgraph.c (cgraph_edge_max_uid): New variable.
(struct cgraph_edge_hook_list): New type.
(struct cgraph_node_hook_list): New type.
(struct cgraph_2edge_hook_list): New type.
(struct cgraph_2node_hook_list): New type.
(first_cgraph_edge_removal_hook): New variable.
(first_cgraph_node_removal_hook): New variable.
(first_cgraph_edge_duplicated_hook): New variable.
(first_cgraph_node_duplicated_hook): New variable.
(cgraph_add_edge_removal_hook): New function.
(cgraph_remove_edge_removal_hook): New function.
(cgraph_call_edge_removal_hooks): New function.
(cgraph_add_node_removal_hook): New function.
(cgraph_remove_node_removal_hook): New function.
(cgraph_call_node_removal_hooks): New function.
(cgraph_add_edge_duplication_hook): New function.
(cgraph_remove_edge_duplication_hook): New function.
(cgraph_call_edge_duplication_hooks): New function.
(cgraph_add_node_duplication_hook): New function.
(cgraph_remove_node_duplication_hook): New function.
(cgraph_call_node_duplication_hooks): New function.
(cgraph_create_edge): Assign to edge uid.
(cgraph_remove_edge): Call edge removal hooks.
(cgraph_node_remove_callees): Call edge removal hooks.
(cgraph_node_remove_callers): Call edge removal hooks.
(cgraph_remove_node): Call node removal hooks.
(cgraph_clone_edge): Call edge duplication hooks.
(cgraph_clone_node): Call node duplication hooks.
* cgraph.h (cgraph_edge): New field uid.
(cgraph_edge_hook): New type.
(cgraph_node_hook): New type.
(cgraph_2edge_hook): New type.
(cgraph_2node_hook): New type.
* tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
(new_var_info): Set it to false.
(solution_set_add): Correctly handle pointers outside a var and
inside a field.
(type_safe): Treat variables with is_full_var properly.
(do_sd_constraint): Likewise.
(do_ds_constraint): Likewise.
(process_constraint): Remove zeroing offset for !use_field_sensitive.
(get_constraint_for_ptr_offset): New function.
(get_constraint_for_component_ref): For addresses at least include
the last field of the variable. Handle is_full_vars properly.
(get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
(handle_ptr_arith): Remove.
(find_func_aliases): Simplify assignment handling.
(create_function_info_for): For parameter and result varinfos set
is_full_var flag.
(create_variable_info_for): Set is_full_var flag whenever we
just created a single varinfo for a decl.
(init_alias_vars): Initialize use_field_sensitive from
max-fields-for-field-sensitive parameter.
* gcc.dg/torture/pta-ptrarith-1.c: New testcase.
* gcc.dg/torture/pta-ptrarith-2.c: Likewise.
* gcc.dg/torture/ipa-pta-1.c: Likewise.
re PR target/36713 (r137252 breaks -O2 optimization on x86_64-unknown-linux-gnu)
2008-07-07 Richard Guenther <rguenther@suse.de>
PR tree-optimization/36713
* tree-flow-inline.h (is_call_used): New function.
* tree-nrv.c (dest_safe_for_nrv_p): Use it.
* tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
* tree-outof-ssa.c (create_temp): Set call-used flag if required.
mips.h (TARGET_CPU_CPP_BUILTINS): Check mips_base_mips16 instead of TARGET_MIPS16.
gcc/
* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
mips_base_mips16 instead of TARGET_MIPS16.
(mips_base_mips16): Declare.
* config/mips/mips.c (mips_base_mips16): Make global.
(was_mips16_p): Remove GTY marker.
(was_mips16_pch_p): New variable.
(mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
(mips_override_options): Force to non-MIPS16 mode initially.
Do not complain about MIPS16 PIC incompatibilities here.
Only allow -mgpopt if -mexplicit-relocs is in force for
non-MIPS16 code.
gcc/testsuite/
* gcc.target/mips/gcc-have-sync-compare-and-swap-1.c: Expect the
macros to be defined for MIPS16 too.
* gcc.target/mips/gcc-have-sync-compare-and-swap-2.c: Likewise.
* gcc.target/mips/gcc-have-sync-compare-and-swap-3.c: New test.
* gcc.target/mips/gcc-have-sync-compare-and-swap-4.c: Likewise.
* tree-ssa-structalias.c (struct variable_info): Remove has_union.
(new_var_info): Deal with it.
(solution_set_add): Likewise.
(bitpos_of_field): Make signed, fix.
(struct fieldoff): Remove type and decl fields. Make size field
unsigned HOST_WIDE_INT. Add has_unknown_size and may_have_pointers
flags.
(fieldoff_compare): Deal with it.
(push_fields_onto_fieldstack): Remove has_union argument, glob
adjacent non-pointer fields together.
(create_function_info_for): Do not set has_union.
(create_variable_info_for): Simplify.
Roger Sayle [Sun, 6 Jul 2008 17:38:08 +0000 (17:38 +0000)]
system_error (is_error_code_enum): Use identifier _Tp instead of _T to avoid conflict with system macro on Darwin.
* include/std/system_error (is_error_code_enum): Use identifier
_Tp instead of _T to avoid conflict with system macro on Darwin.
(is_error_condition_enum): Likewise.
Joseph Myers [Fri, 4 Jul 2008 14:58:14 +0000 (15:58 +0100)]
crontab: Remove 4.1 snapshots job.
* crontab: Remove 4.1 snapshots job.
* update_version: Remove.
* gcc_release: Remove support for g77 and release status in
version.c.
* update_version_svn: Ignore 4.1 branch. Remove support for
updating files other than DATESTAMP.
* update_web_docs_svn: Remove support for g77 manual.
Jakub Jelinek [Fri, 4 Jul 2008 09:57:59 +0000 (11:57 +0200)]
tree-switch-conversion.c (build_one_array, [...]): Use build_gimple_modify_stmt.
* tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
build_gimple_modify_stmt.
(build_arrays, gen_inbound_check): Likewise. Force RHS to be
gimple operand. Use fold_build* instead of build*.
* tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
(do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
properly to compute the reachability set if we do field-sensitive PTA.
* invoke.texi (max-fields-for-field-sensitive): Document default.
* opts.c (decode_options): Set max-fields-for-field-sensitive to
100 for optimize >= 2.
Alan Modra [Fri, 4 Jul 2008 02:32:01 +0000 (02:32 +0000)]
re PR target/36634 (-msecure-plt combine gives invalid call insn)
PR target/36634
* config/rs6000/rs6000.md (call, call_value): Don't arrange for
pic_offset_table_rtx to be marked as used here.
(call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
(call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
(sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
!TARGET_SECURE_PLT.
Eric Botcazou [Thu, 3 Jul 2008 22:02:18 +0000 (22:02 +0000)]
tree-flow.h (loop_only_exit_p): Declare.
* tree-flow.h (loop_only_exit_p): Declare.
* tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
* tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
the number of iterations if it is constant. Otherwise, if this is the
only possible exit of the loop, use the conservative estimate on the
number of iterations of the entire loop if available.
Andrew Haley [Thu, 3 Jul 2008 10:31:03 +0000 (10:31 +0000)]
re PR bootstrap/33304 (Bootstrap failure on solaris2 using cc due to empty macro arguments)
2008-07-03 Andrew Haley <aph@redhat.com>
PR bootstrap/33304
* vec.h (VEC_TA): New.
(DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
* c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
(C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
(C_COMMON_FIXED_TYPES): Remove first arg.
(C_COMMON_FIXED_MODE_TYPES): Likewise.
* tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
not to use empty macro arguments.
sfp-machine.h (FP_HANDLE_EXCEPTIONS): Initialize f with 0.0.
* config/i386/32/sfp-machine.h (FP_HANDLE_EXCEPTIONS) [FP_EX_INVALID]:
Initialize f with 0.0.
* config/i386/32/sfp-machine.h (FP_HANDLE_EXCEPTIONS) [FP_EX_INVALID]:
Initialize f with 0.0.
* config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
i[34567]86-*-linux*, x86_64-*-linux*. Add
i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
x86_64-*-linux*. Add i386/t-linux to tmake_file for
i[34567]86-*-linux*, x86_64-*-linux*.
* libgcc-std.ver: Add empty GCC_4.4.0.
* mkmap-symver.awk: Support multiple versions per symbol.
* config/i386/i386.c (ix86_init_builtins): Always define
__builtin_fabsq and __builtin_copysignq with fallbacks.
(ix86_expand_builtin): Emit normal call for __builtin_fabsq
and __builtin_copysignq if SSE2 isn't available.
Jason Merrill [Wed, 2 Jul 2008 15:38:50 +0000 (11:38 -0400)]
Implement WG21 N2672, Initializer List proposed wording
gcc/cp/ChangeLog:
2008-07-02 Jason Merrill <jason@redhat.com>
Implement WG21 N2672, Initializer List proposed wording
* cp-tree.h (enum cp_tree_index): Add CPTI_INIT_LIST_TYPE.
(struct lang_type_class): Add has_list_ctor bitfield.
(TYPE_HAS_LIST_CTOR): New macro.
(BRACE_ENCLOSED_INITIALIZER_P): Expect init_list_type_node.
(CONSTRUCTOR_IS_DIRECT_INIT): New macro.
(LOOKUP_NO_NARROWING): New macro.
(LOOKUP_NO_COPY_CTOR_CONVERSION): New macro.
* parser.c (cp_parse_braced_list): Split out from...
(cp_parser_initializer_clause): ...here.
(cp_parser_postfix_expression): Build up CONSTRUCTOR for compound
literal here.
(cp_lexer_next_token_is_not_keyword): New fn.
(cp_parser_parenthesized_expression_list): Handle { }.
(cp_parser_new_expression, cp_parser_new_initializer): Likewise.
(cp_parser_assignment_expression, cp_parser_condition): Likewise.
(cp_parser_jump_statement, cp_parser_simple_declaration): Likewise.
(cp_parser_mem_initializer, cp_parser_init_declarator): Likewise.
(cp_parser_initializer, cp_parser_functional_cast): Likewise.
(cp_parser_omp_for_loop, cp_parser_cache_group): Likewise.
(cp_parser_save_member_function_body): Likewise.
* call.c (conversion_kind): Add ck_list, ck_aggr.
(struct conversion): Add check_narrowing bitfield, conversion list.
(build_list_conv): New fn.
(build_aggr_conv): New fn.
(implicit_conversion): Call them.
(standard_conversion): Set check_narrowing if appropriate.
(add_function_candidate): Handle LOOKUP_NO_COPY_CTOR_CONVERSION.
(build_user_type_conversion_1): When converting from an init list,
we allow additional conversions except when calling a copy ctor.
(convert_like_real): Calling an explicit ctor for an init list is
ill-formed. Handle ck_list and ck_addr. Check narrowing.
(build_new_method_call): If CONSTRUCTOR_IS_DIRECT_INIT is set and
class doesn't have a list ctor, break the {} into a TREE_LIST.
(compare_ics): ck_list is better than other UDCs.
(set_up_extended_ref_temp): Split out from initialize_reference.
(is_std_init_list): New fn.
(is_list_ctor): New fn.
* decl.c (cxx_init_decl_processing): Create init_list_type_node.
(reshape_init_array_1): Pass it to build_constructor.
(reshape_init_class): Ditto.
(initialize_artificial_var): Pass the appropriate type.
(build_aggr_init_full_exprs): Split out from...
(check_initializer): ...here. Handle new semantics.
(build_init_list_var_init): New subroutine of check_initializer.
(grokdeclarator): Converting constructors can have more than one parm.
(grok_special_member_properties): Set TYPE_HAS_LIST_CTOR.
* init.c (expand_default_init): Only do digest_init for aggregates.
* rtti.c (tinfo_base_init): Pass init_list_type_node to
build_constructor_from_list.
(generic_initializer, ptr_initializer): Ditto.
(ptm_initializer, class_initializer): Ditto.
(get_pseudo_ti_init): Ditto.
* error.c (dump_type): Handle init_list_type_node.
(maybe_warn_cpp0x): New fn.
(maybe_varn_variadic_templates): Call it.
* cvt.c (ocp_convert): Handle conversion from { }.
* tree.c (build_array_of_n_type): New fn.
* typeck2.c (store_init_value): Use init_list_type_node.
(digest_init): Likewise.
(check_narrowing): New fn.
* semantics.c: (finish_compound_literal): Take CONSTRUCTOR instead
of vector of constructor elts. Handle non-aggregate types. Make
constant literals static.
* pt.c: (tsubst_copy_and_build): Adjust.
(unify): Handle { }.
* name-lookup.c (arg_assoc_type): Handle init_list_type_node.
gcc/ChangeLog:
2008-07-02 Jason Merrill <jason@redhat.com>
* tree.c (ctor_to_list): New fn.
* tree.h: Declare it.
(CONSTRUCTOR_ELT): New macro.
(CONSTRUCTOR_NELTS): New macro.
libstdc++-v3/ChangeLog:
2008-07-02 Jason Merrill <jason@redhat.com>
* libsupc++/initializer_list: New file.
* include/bits/stl_map.h (insert(initializer_list)): New method.
SPU single-precision FP does not support subnormals:
* gcc.c-torture/execute/ieee/mul-subnormal-single-1.x: New file.
SPU single-precision FP does not support Inf or Nan:
* gcc.c-torture/execute/ieee/inf-1.c: Disable "float" Inf test on SPU.
* gcc.c-torture/execute/ieee/compare-fp-1.x: New file.
* gcc.c-torture/execute/ieee/compare-fp-4.x: Disable test on SPU.
* gcc.c-torture/execute/ieee/fp-cmp-2.x: Disable test on SPU.
* gcc.c-torture/execute/ieee/fp-cmp-4f.x: New file.
* gcc.c-torture/execute/ieee/fp-cmp-8f.x: New file.
* gcc.dg/pr15784-3.c: Disable test on SPU.
* gcc.dg/pr28796-2.c: Likewise.
* gcc.dg/float-range-1.c: Likewise.
* gcc.dg/float-range-3.c: Likewise.
* gcc.dg/float-range-4.c: Likewise.
* gcc.dg/float-range-5.c: Likewise.
* gcc.dg/fold-overflow-1.c: Likewise.
* gcc.dg/builtins-1.c: SPU does not support __builtin_inff.
* gcc.dg/builtin-inf-1.c: SPU does not support __builtin_inff.
Check for error instead of warning "does not support infinity".
* gcc.dg/builtins-43.c: Disable "float" Inf/Nan tests on SPU.
* gcc.dg/builtins-44.c: Likewise.
* gcc.dg/builtins-45.c: Likewise.
* gcc.dg/torture/builtin-math-2.c: Likewise.
* gcc.dg/torture/builtin-logb-1.c: Likewise.
* gcc.dg/torture/builtin-modf-1.c: Likewise.
* gcc.dg/torture/builtin-ldexp-1.c: Likewise.
* gcc.dg/torture/builtin-frexp-1.c: Likewise.
* gcc.dg/torture/type-generic-1.c: Disable test on SPU.
* g++.dg/torture/type-generic-1.C: Likewise.
SPU single-precision FP always rounds towards zero:
* gcc.c-torture/execute/ieee/920518-1.x: New file.
* gcc.c-torture/execute/ieee/20010114-2.x: New file.
* gcc.c-torture/execute/ieee/20030331-1.x: New file.
* gcc.dg/torture/fp-int-convert-float.c: Disable test on SPU.
* gcc.dg/torture/fp-int-convert-timode.c: Disable "float" test on SPU.