2008-06-13 Andrew Haley <aph@redhat.com>
PR preprocessor/33305
* macro.c (replace_args): Print a warning for empty macro
arguments in C89 and C++.
From-SVN: r137414
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.
From-SVN: r137413
2008-07-02 H.J. Lu <hongjiu.lu@intel.com>
PR boostrap/36702
* config.host: Only include 32bit t-fprules-softfp for Darwin/x86
and Linux/x86. Include 64bit t-softfp-compat for Linux/x86.
* config/i386/64/t-fprules-softfp: Moved to ...
* config/i386/64/t-softfp-compat: This. New.
From-SVN: r137380
* 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.
From-SVN: r137379
PR target/36698
* gcc.c-torture/compile/20001226-1.c: XFAIL -O0 case on SPU.
* gcc.dg/pr27095.c: Provide target-specific regexp for SPU.
From-SVN: r137367
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