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.
From-SVN: r137361
* gcc.c-torture/execute/20030222-1.x: New file.
* gcc.dg/tree-ssa/ssa-fre-3.c: Disable test on SPU.
* gcc.dg/lower-subreg-1.c: Likewise.
From-SVN: r137360
* 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.
From-SVN: r137357
2008-07-02 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/36590
PR fortran/36681
* iresolve.c (resolve_mask_arg): Don't convert mask to
kind=1 logical if it is of that type already.
2008-07-02 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/36590
PR fortran/36681
* gfortran.dg/count_mask_1.f90: New test.
From-SVN: r137355
2008-07-02 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (struct variable_info): Reorder
to fill padding on 64bit hosts. Make collapsed_to an int.
(get_varinfo_fc): Deal with that.
(new_var_info): Likewise.
(collapse_rest_of_var): Likewise.
From-SVN: r137354
2008-07-02 Martin Jambor <mjambor@suse.cz>
* tree-switch-conversion.c: Included timevar.h
(pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
* timevar.def: Added TV_TREE_SWITCH_CONVERSION.
From-SVN: r137349
2008-07-02 Richard Guenther <rguenther@suse.de>
* bitmap.h (bitmap_set_bit): Return bool.
(bitmap_clear_bit): Likewise.
* bitmap.c (bitmap_set_bit): Return if the bit changed. Only
write to the bitmap if it would.
(bitmap_clear_bit): Likewise.
* tree-ssa-structalias.c (add_implicit_graph_edge): Use
bitmap_set_bit return value.
(add_pred_graph_edge): Likewise.
(add_graph_edge): Likewise.
(do_sd_constraint): Likewise.
(do_ds_constraint): Likewise.
From-SVN: r137345
* gcc.dg/vect/costmodel/spu/costmodel-vect-iv-9.c: Add noinline
attribute to main1().
* gcc.dg/vect/costmodel/spu/costmodel-vect-33.c: Increase the loop
bound in order to make it worth to vectorize the loop.
* gcc.dg/vect/costmodel/spu/costmodel-vect-76b.c: Likewise.
From-SVN: r137342
* function.c (assign_parm_remove_parallels): New.
(assign_parm_setup_block_p): Do not return true for non-BLKmode
PARALLELs.
(assign_parm_setup_block): Do not handle them.
(assign_parm_setup_reg, assign_parm_setup_stack): Call
assign_parm_remove_parallels.
From-SVN: r137326
* c-typeck.c (convert_for_assignment): Use
vector_targets_convertible_p.
* c-common.c (vector_targets_convertible_p): New.
* c-common.h (vector_targets_convertible_p): New prototype.
* config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
opaque_p_V2SI_type_node.
* typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p.
(comp_ptr_ttypes_const): Likewise.
* g++.dg/other/opaque-1.C, g++.dg/other/opaque-2.C,
g++.dg/other/opaque-3.C: Also run on powerpc*-*-linux*spe*.
From-SVN: r137325
* config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
TFmode constants via two element DImode vector for hosts with
HOST_BITS_PER_WIDE_INT < 64.
(ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
also for HOST_BITS_PER_WIDE_INT < 64.
testsuite/ChangeLog:
* gcc.target/i386/quad-sse.c: New test.
From-SVN: r137322
2008-07-01 Andrew Haley <aph@redhat.com>
* decl.c (finish_constructor_body): Don't set the return value of
the constructor if the constructor is that of a Java type.
From-SVN: r137317
2008-07-01 Richard Guenther <rguenther@suse.de>
PR tree-optimization/36666
* tree-ssa-structalias.c (get_constraint_for_1): Declare.
(get_constraint_exp_from_ssa_var): Split into ...
(get_constraint_exp_for_temp): ... this ...
(get_constraint_for_ssa_var): ... and that.
Return constraint expressions for all touched sub-fields
if the results address is not taken.
(process_constraint): Remove assertion that aggregate
assignments do not happen at this place.
(get_constraint_for_component_ref): Add address_p argument.
Return constraint expressions for all touched sub-fields
if the results address is not taken.
(do_deref): Use get_constraint_exp_for_temp.
(get_constraint_for_1): Rename from ...
(get_constraint_for): ... this. Add the old function as
wrapper.
(do_structure_copy): Use get_constraint_for_1.
* gcc.c-torture/compile/pr36666.c: New testcase.
From-SVN: r137315
PR c++/36662
* decl2.c (is_late_template_attribute): If the first attribute
argument is IDENTIFIER_NODE, don't consider it when checking
if arguments are value or type dependent.
* g++.dg/ext/altivec-16.C: New test.
From-SVN: r137287
2008-06-30 Kenneth Zadeck <zadeck@naturalbridge.com>
* df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New
macros.
(df_scan_free_internal): Free data structures not
allocated in storage pools.
(df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
(df_refs_add_to_chains): Use df_scan_free_ref_vec and
df_scan_free_mws_vec.
* dse.c (dse_step6): Free offset_map_p and offset_map_n
unconditionally.
From-SVN: r137284
2008-06-30 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (contains_aligned_value_p): Return true
for __float128.
(ix86_function_arg_boundary): Return its natural boundary for
for __float128.
(return_in_memory_32): Don't check TDmode.
(ix86_split_to_parts): Support splitting into 4 parts and
support TFmode for 32bit target.
(ix86_split_long_move): Support splitting into 4 parts.
(bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
for SSE2.
(ix86_init_mmx_sse_builtins): Move __float80 and __float128
to ...
(ix86_init_builtins): Here.
(ix86_scalar_mode_supported_p): Always return true for TFmode.
(ix86_c_mode_for_suffix): Always return TFmode and XFmode for
'q' and 'w', respectively.
* config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
TARGET_64BIT.
(movtf_internal): Likewise.
(<code>tf2): Likewise.
(*absnegtf2_sse): Likewise.
(copysign<mode>3): Likewise.
(copysign<mode>3_const): Likewise.
(copysign<mode>3_var): Likewise.
(define_split UNSPEC_COPYSIGN): Likewise.
* config/i386/sse.md (*nandtf3): Likewise.
(<code>tf3): Likewise.
(*<code>tf3): Likewise.
From-SVN: r137276
PR tree-optimization/36648
* tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
number of prolog iterations by step. Fix the comment.
From-SVN: r137272