fxcoudert [Wed, 14 Mar 2007 13:31:09 +0000 (13:31 +0000)]
* trans-array.c (gfc_trans_auto_array_allocation): Replace
fold(convert()) by fold_convert().
(gfc_duplicate_allocatable): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_dot_product): Use
build_int_cst instead of converting an integer_zero_node
to the final type.
nathan [Wed, 14 Mar 2007 11:37:55 +0000 (11:37 +0000)]
* testsuite/lib/libstdc++.exp (check_v3_target_fileio,
check_v3_target_time): New.
* testsuite/lib/dg-options.exp (dg-require-fileio,
dg-require-time): New.
* testsuite/ext/stdio_sync_filebuf/char/12048-1.cc: Use it.
* testsuite/ext/stdio_sync_filebuf/char/12048-2.cc: Use it.
* testsuite/ext/stdio_sync_filebuf/char/12048-3.cc: Use it.
* testsuite/ext/stdio_sync_filebuf/char/12048-4.cc: Use it.
* testsuite/ext/stdio_sync_filebuf/char/1.cc: Use it.
* testsuite/ext/stdio_filebuf/char/2.cc: Use it.
* testsuite/ext/stdio_filebuf/char/10063-1.cc: Use it.
* testsuite/ext/stdio_filebuf/char/10063-2.cc: Use it.
* testsuite/ext/stdio_filebuf/char/10063-3.cc: Use it.
* testsuite/22_locale/time_put/put/char/12439_1.cc: Use it.
* testsuite/22_locale/time_put/put/char/12439_3.cc: Use it.
* testsuite/27_io/basic_ofstream/open/char/1.cc: Use it.
* testsuite/27_io/basic_ofstream/cons/char/2.cc: Use it.
* testsuite/27_io/objects/char/12048-2.cc: Use it.
* testsuite/27_io/objects/char/12048-4.cc: Use it.
* testsuite/27_io/objects/char/12048-1.cc: Use it.
* testsuite/27_io/objects/char/12048-3.cc: Use it.
* testsuite/27_io/objects/char/10.cc: Use it.
* testsuite/27_io/objects/char/12048-5.cc: Use it.
* testsuite/27_io/basic_istream/get/char/2.cc: Use it.
* testsuite/27_io/basic_istream/ignore/char/2.cc: Use it.
* testsuite/27_io/basic_istream/ignore/char/3.cc: Use it.
* testsuite/27_io/basic_istream/getline/char/5.cc: Use it.
* testsuite/27_io/basic_istream/seekg/char/sstream.cc: Use it.
* testsuite/27_io/basic_istream/seekg/char/fstream.cc: Use it.
* testsuite/27_io/basic_istream/readsome/char/6746-2.cc: Use it.
* testsuite/27_io/basic_istream/extractors_other/char/2.cc: Use it.
* testsuite/27_io/basic_istream/tellg/char/sstream.cc: Use it.
* testsuite/27_io/basic_istream/tellg/char/1.cc: Use it.
* testsuite/27_io/basic_istream/tellg/char/fstream.cc: Use it.
* testsuite/27_io/basic_istream/extractors_character/char/4.cc: Use it.
* testsuite/27_io/basic_ostream/inserters_other/char/1.cc: Use it.
* testsuite/27_io/basic_ostream/tellp/char/1.cc: Use it.
* testsuite/27_io/basic_ostream/seekp/char/2346-fstream.cc: Use it.
* testsuite/27_io/basic_ifstream/open/char/1.cc: Use it.
* testsuite/27_io/basic_ifstream/cons/char/1.cc: Use it.
* testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetn/char/3.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/12790-1.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/12790-2.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/12790-3.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/12790-4.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/11543.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc: Use it.
* testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc: Use it.
* testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Use it.
* testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc: Use it.
* testsuite/27_io/basic_filebuf/setbuf/char/1.cc: Use it.
* testsuite/27_io/basic_filebuf/setbuf/char/2.cc: Use it.
* testsuite/27_io/basic_filebuf/setbuf/char/3.cc: Use it.
* testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc: Use it.
* testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc: Use it.
* testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sbumpc/char/9825.cc: Use it.
* testsuite/27_io/basic_filebuf/is_open/char/1.cc: Use it.
* testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: Use it.
* testsuite/27_io/basic_filebuf/sputc/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sputc/char/2-out.cc: Use it.
* testsuite/27_io/basic_filebuf/open/12790-1.cc: Use it.
* testsuite/27_io/basic_filebuf/open/char/1.cc: Use it.
* testsuite/27_io/basic_filebuf/open/char/2.cc: Use it.
* testsuite/27_io/basic_filebuf/open/char/3.cc: Use it.
* testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc: Use it.
* testsuite/27_io/basic_filebuf/overflow/char/2.cc: Use it.
* testsuite/27_io/basic_filebuf/overflow/char/9988.cc: Use it.
* testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc: Use it.
* testsuite/27_io/basic_filebuf/overflow/char/9169.cc: Use it.
* testsuite/27_io/basic_filebuf/snextc/char/1-in.cc: Use it.
* testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/snextc/char/2-in.cc: Use it.
* testsuite/27_io/basic_filebuf/snextc/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/close/12790-1.cc: Use it.
* testsuite/27_io/basic_filebuf/close/char/1.cc: Use it.
* testsuite/27_io/basic_filebuf/close/char/12790-1.cc: Use it.
* testsuite/27_io/basic_filebuf/close/char/12790-2.cc: Use it.
* testsuite/27_io/basic_filebuf/close/char/2.cc: Use it.
* testsuite/27_io/basic_filebuf/close/char/12790-3.cc: Use it.
* testsuite/27_io/basic_filebuf/close/char/12790-4.cc: Use it.
* testsuite/27_io/basic_filebuf/close/char/4.cc: Use it.
* testsuite/27_io/basic_filebuf/underflow/10096.cc: Use it.
* testsuite/27_io/basic_filebuf/underflow/char/2.cc: Use it.
* testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc: Use it.
* testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/12790-1.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/12790-2.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/12790-3.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: Use it.
* testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc: Use it.
* testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: Use it.
* testsuite/27_io/basic_filebuf/sputn/char/2-io.cc: Use it.
* testsuite/27_io/basic_filebuf/sputn/char/2-out.cc: Use it.
* testsuite/27_io/basic_filebuf/sputn/char/9339.cc: Use it.
* testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc: Use it.
* testsuite/27_io/basic_filebuf/sync/char/9182-1.cc: Use it.
* testsuite/21_strings/basic_string/inserters_extractors/char/10.cc: Use it.
* testsuite/21_strings/basic_string/inserters_extractors/char/11.cc: Use it.
* testsuite/21_strings/basic_string/inserters_extractors/char/5.cc: Use it.
brooks [Wed, 14 Mar 2007 04:38:47 +0000 (04:38 +0000)]
PR fortran/30922
PR fortran/30948
PR fortran/30953
* intrinsics.texi (CHDIR): Fix argument names, note
that STATUS must be a default integer.
(CTIME): Fix argument names, note that RESULT must
be a default integer.
(EXIT): Note that STATUS must be a default integer.
brooks [Wed, 14 Mar 2007 02:43:27 +0000 (02:43 +0000)]
PR fortran/28068
* intrinsic.texi: General whitespace cleanup, remove
comment about missing intrinsics.
(menu): Add lines for new entries listed below.
(ACOSH): Mention specific function DACOSH, correct
description phrasing.
(ASINH): Mention specific function DASINH, correct
description phrasing.
(ATANH): Mention specific function DATANH, correct
description phrasing.
(COS): Add index entry for CCOS.
(CPU_TIME): Correct "REAL" to "REAL(*)".
(EXP): Add index entry for CEXP.
(INT): Correct argument name to "A".
(INT2): New entry.
(INT8): New entry.
(LONG): New entry.
(MAX): Add index entries for specific variants.
(MCLOCK): New entry.
(MCLOCK8): New entry.
(SECNDS): Adjust to a more standard form.
(SECOND): New entry.
(TIME): Add cross-reference to MCLOCK.
(TIME8): Add cross-reference to MCLOCK8.
aoliva [Wed, 14 Mar 2007 01:45:39 +0000 (01:45 +0000)]
gcc/ChangeLog:
PR middle-end/31127
* cse.c (cse_find_path): Do not bail out if a basic block that
we already visited now becomes part of a path that starts at a
different basic block. Just disallow this, to make sure we
visit each basic block at most once.
gcc/testsuite/ChangeLog:
PR middle-end/31127
* gcc.dg/pr31127.c: New.
rakdver [Wed, 14 Mar 2007 00:38:34 +0000 (00:38 +0000)]
PR tree-optimization/30730
PR tree-optimization/26900
* tree-ssa-loop-niter.c: Include gmp.h.
(bounds): New type.
(mpz_set_double_int, get_type_bounds, mpz_to_double_int,
split_to_var_and_offset, determine_value_range,
bound_difference_of_offsetted_base, refine_bounds_using_guard,
bound_difference, bounds_add, bounds_negate,
number_of_iterations_ne_max, dump_affine_iv): New functions.
(number_of_iterations_ne, number_of_iterations_lt_to_ne,
assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
difference of initial and final value of control iv to validate
results.
(number_of_iterations_cond): Add loop parameter. Determine bounds
on the difference of the extremes of the control iv. Add dumps.
(expand_simple_operations): Handle phi nodes.
(simplify_using_initial_conditions): Do not record used conditions.
(number_of_iterations_exit): Pass loop to number_of_iterations_cond.
Do not set additional_info.
(implies_nonnegative_p, implies_ge_p): Removed.
(derive_constant_upper_bound): Do not use parameter `additional'.
(record_estimate): Parameter `additional' removed. Parameter
`i_bound' added. Do not call derive_constant_upper_bound.
(record_nonwrapping_iv): Use derive_constant_upper_bound to
bound the number of iterations estimate.
(estimate_numbers_of_iterations_loop): Pass the estimate from
the number of iterations analysis to record_estimate.
* tree.h (multiple_of_p): Declare.
* tree-scalar-evolution.c (expression_expensive_p): Removed.
(scev_const_prop): Do not check expression_expensive_p.
* fold-const.c (multiple_of_p): Exported.
* double-int.c (double_int_mask): Exported.
* double-int.h (double_int_mask): Declare.
* tree-flow.h (struct tree_niter_desc): Removed additional_info
field. Added max field.
uros [Tue, 13 Mar 2007 21:18:33 +0000 (21:18 +0000)]
* config/i386/i386.opt (mcx16, msahf): New options.
* config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
(ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
* config/i386/driver-i386.c (bit_LAHF_LM): New define.
(host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
Output -mcx16 and -msahf options when corresponding bit is set.
* doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
and -msahf options.
testsuite/ChangeLog
* testsuite/gcc.target/i386/cmpxchg16b-1.c: New test.
geoffk [Tue, 13 Mar 2007 07:13:16 +0000 (07:13 +0000)]
* config/rs6000/darwin-fallback.c: Compile file only on powerpc.
(handle_syscall): Handle direct system calls.
* config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
spark [Mon, 12 Mar 2007 18:31:39 +0000 (18:31 +0000)]
ChangeLog:
2007-03-12 Seongbae Park <seongbae.park@gmail.com>
* gcc/doc/invoke.texi (Wvla): New warning.
gcc/ChangeLog:
2007-03-12 Seongbae Park <seongbae.park@gmail.com>
* c-decl.c (warn_variable_length_array): New function.
Refactored from grokdeclarator to handle warn_vla
and handle unnamed array case.
(grokdeclarator): Refactored VLA warning case.
* c.opt (Wvla): New flag.
gcc/cp/ChangeLog:
2007-03-12 Seongbae Park <seongbae.park@gmail.com>
* decl.c (compute_array_index_type): New warning flag warn_vla.
gcc/testsuite/ChangeLog:
2007-03-12 Seongbae Park <seongbae.park@gmail.com>
* gcc.dg/wvla-1.c: New test
* gcc.dg/wvla-2.c: New test
* gcc.dg/wvla-3.c: New test
* gcc.dg/wvla-4.c: New test
* gcc.dg/wvla-5.c: New test
* gcc.dg/wvla-6.c: New test
* gcc.dg/wvla-7.c: New test
* g++.dg/warn/Wvla-1.C: New test
* g++.dg/warn/Wvla-2.C: New test
* g++.dg/warn/Wvla-3.C: New test
uros [Mon, 12 Mar 2007 11:32:13 +0000 (11:32 +0000)]
* config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
mode macro.
(fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
fix_truncdfdi_sse using SSEMODEF mode macro.
(fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
fix_truncdfsi_sse using SSEMODEF mode macro.
(fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
(fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
rsandifo [Mon, 12 Mar 2007 10:44:52 +0000 (10:44 +0000)]
gcc/testsuite/
* lib/target-supports.exp (check_profiling_available): Return false
for VxWorks.
(check_effective_target_vxworks_kernel): New procedure.
* gcc.dg/20040813-1.c: Extend list of stabless targets to include
VxWorks.
* gcc.dg/builtins-config.h: Do not define HAVE_C99_RUNTIME on VxWorks.
* gcc.dg/intmax_t-1.c: Extend the list of targets without inttypes.h
to include VxWorks.
* gcc.dg/vxworks/initpri2.c: Require vxworks_kernel.
pault [Sun, 11 Mar 2007 16:17:32 +0000 (16:17 +0000)]
2007-03-11 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30883
* parse.c (parse_interface): Use the default types from the
formal namespace if a function or its result do not have a type
after parsing the specification statements.
2007-03-11 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30883
* gfortran.dg/interface_11.f90: New test.
rguenth [Sun, 11 Mar 2007 16:08:35 +0000 (16:08 +0000)]
2007-03-11 Richard Guenther <rguenther@suse.de>
PR tree-optimization/31115
* tree-vrp.c (extract_range_from_binary_expr): Make sure
the shift count is positive and non-anti-range for RSHIFT_EXPR.
A shift count of zero is not special as with *_DIV_EXPR.
(vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
direction.
paolo [Sun, 11 Mar 2007 12:03:34 +0000 (12:03 +0000)]
2007-03-11 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/28080 (final)
* include/std/iosfwd: Do not include <bits/c++io.h>.
* config/io/basic_file_stdio.h: Do it here.
* include/ext/stdio_sync_filebuf.h: Likewise.
* include/ext/rope: Include <bits/gthr.h> unconditionally.
* include/std/fstream: Do not include <bits/gthr.h>.
* include/std/ios: Do not include <cstdio>.
* include/bits/ios_base.h: Do it here.
* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust dg-error
line numbers.
* testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
irar [Sun, 11 Mar 2007 11:13:34 +0000 (11:13 +0000)]
* tree-data-ref.c (analyze_offset): Add a return value (bool) to
indicate success/failure of the analysis. Add negation to subtrahend
in case of subtraction. Fail if both operands contain constants.
(create_data_ref): Fail if analyze_offset fails.
steven [Sat, 10 Mar 2007 23:33:40 +0000 (23:33 +0000)]
* lower-subreg.c: Include except.h.
(decompose_multiword_subregs): Verify that the only control flow
insns we can split are loads to multi-words pseudos.
Handle breaking such blocks after splitting, instead of calling
find_many_sub_basic_blocks.
* loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
on the new basic block. Add a lengthy comment explaining why we
thought this was necessary.
* cfglayout.c (cfg_layout_finalize): Don't break superblocks.
uros [Sat, 10 Mar 2007 12:52:52 +0000 (12:52 +0000)]
* config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
(fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
(fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
Add LABEL_NUSES to emmitted label.
* config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
branch probability value to emmitted jump insn.
* reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
Do not check life information and do not re-arrange input operands
for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
dgregor [Sat, 10 Mar 2007 01:58:58 +0000 (01:58 +0000)]
2007-03-09 Douglas Gregor <doug.gregor@gmail.com>
PR c++/20599
* typeck.c (check_return_expr): Check for bare parameter packs.
(comptypes): Compare template parameter packs and
type pack expansions.
* decl.c (grokdeclarator): Deal with the declaration of function
parameter packs.
(grokparms): Verify that the (optional) function parameter pack is
at the end of the parameter list.
(xref_basetypes): Handle pack expansions in the base class.
(cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
* cp-tree.def (TYPE_ARGUMENT_PACK): New.
(NONTYPE_ARGUMENT_PACK): New.
(TYPE_PACK_EXPANSION): New.
(EXPR_PACK_EXPANSION): New.
(ARGUMENT_PACK_SELECT): New.
* cp-objcp-common.c (cp_tree_size): Compute size of
(NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
ARGUMENT_PACK_SELECT.
* error.c (dump_template_argument): Print template argument packs.
(dump_template_argument_list): Ditto.
(dump_template_parameter): Dump `...' for template type parameter
packs.
(dump_type): Dump TYPE_PACK_EXPANSION nodes.
(dump_parameters): Print function parameter packs.
(dump_template_parms): Print template argument packs.
(dump_expr): Dump EXPR_PACK_EXPANSION nodes.
(maybe_warn_variadic_templates): New.
* operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
* tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
CAST_EXPR.
* mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
(write_template_arg): Write argument packs as separate arguments.
* cp-tree.h (struct template_parm_index_s): Add flag that
indicates that the template parameter is actually a parameter
pack.
(struct tree_argument_pack_select): New.
(enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
(union lang_tree_node): Add argument_pack_select.
(FUNCTION_PARAMETER_PACK_P): New.
(PACK_EXPANSION_P): New.
(PACK_EXPANSION_PATTERN): New.
(SET_PACK_EXPANSION_PATTERN): New.
(PACK_EXPANSION_PARAMETER_PACKS): New.
(ARGUMENT_PACK_P): New.
(ARGUMENT_PACK_ARGS): New.
(SET_ARGUMENT_PACK_ARGS): New.
(ARGUMENT_PACK_INCOMPLETE_P): New.
(ARGUMENT_PACK_EXPLICIT_ARGS): New.
(TEMPLATE_PARM_PARAMETER_PACK): New.
(TEMPLATE_TYPE_PARAMETER_PACK): New.
(ARGUMENT_PACK_SELECT_FROM_PACK): New.
(ARGUMENT_PACK_SELECT_INDEX): New.
(ARGUMENT_PACK_SELECT_ARG): New.
(struct cp_declarator): Add parameter_pack_p flag.
(maybe_warn_variadic_templates): Declare.
(process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
indicate a template parameter pack.
(uses_parameter_packs): Declare.
(template_parameter_pack_p): Declare.
(template_parms_variadic_p): Declare.
(make_pack_expansion): Declare.
(check_for_bare_parameter_packs): Declare.
* cxx-pretty-print.c (pp_cxx_unary_expression): Print
sizeof... expressions.
(pp_cxx_expression): Print pack expansions and non-type argument
packs.
(pp_cxx_exception_specification): Print pack expansions.
(pp_cxx_direct_declarator): Print ellipsis for parameter packs.
(pp_cxx_ctor_initializer): Print pack expansions.
(pp_cxx_type_id): Print pack expansions.
(pp_cxx_template_argument_list): Print argument packs.
(pp_cxx_template_parameter): Print ellipsis for template parameter
packs.
* pt.c (comp_template_parms): Compare template parameter packs.
(template_parameter_pack_p): New.
(template_parms_variadic_p): New.
(template_args_variadic_p): New.
(make_ith_pack_parameter_name): New.
(struct find_parameter_pack_data): New.
(find_parameter_packs_r): New.
(uses_parameter_packs): New.
(make_pack_expansion): New.
(check_for_bare_parameter_packs): New.
(expand_template_argument_pack): New.
(reduce_template_parm_level): Propagate parameter pack flag.
(process_template_parm): Add is_parameter_pack parameter to state
when the parameter is actually a parameter pack. Create template
parameter packs when is_parameter_pack is true.
(current_template_args): The argument for a template parameter
pack is an argument pack containing a single pack expansion.
(process_partial_specialization): When checking that non-type
argument expressions do not involve template parameters, loop over
the arguments in argument packs separately.
(push_template_decl_real): Check that the type of the declaration
does not have any bare parameter packs. Check that primary
templates have no more than one parameter pack, and that it comes
at the end of the template parameter list.
(convert_template_argument): Handle coercions for pack expansion
expressions by coercing the pattern then rebuilding the expansion.
(coerce_template_parms): When coercing the arguments for a
variadic template, pack "extra" arguments into an argument pack.
(coerce_template_template_parms): Cannot coerce between parameter
packs and non-pack parameters.
(template_args_equal): Compare PACK_EXPANSION_P expressions.
(comp_template_args): Expand all template arguments packs before
comparing template argument lists.
(mangle_class_name_for_template): Make argument packs as separate
template arguments.
(for_each_template_parm_r): No need to handle BASELINK.
(instantiate_class_template): Handle pack expansions in the base
class list.
(tsubst_pack_expansion): New.
(tsubst_template_args): Handle substitutions of argument packs and
pack expansion into template argument lists.
(tsubst_decl): Expand function parameter packs into separate
function parameters.
(tsubst_arg_types): Expand a type pack expansion into separate
argument types.
(tsubst_exception_specification): Handle pack expansions in
exception specifiers.
(tsubst): See through ARGUMENT_PACK_SELECT arguments when
replacing a template parameter with its argument. If we encounter
a substitution for an argument pack, just return the parameter
itself.
(tsubst_copy): sizeof(X...) returns the number of elements in
parameter pack X. See through ARGUMENT_PACK_SELECT when the
PARM_DECL is a parameter pack.
(tsubst_expr): Expression pack expansions and argument packs
cannot show up here; they will all be handled through function
calls, sizeof, and template argument lists.
(tsubst_copy_and_build): sizeof(X...) returns the number of
elements in parameter pack X. Handle pack expansions in TREE_LIST
and CONSTRUCTOR nodes.
(fn_type_unification): Handle "incomplete" explicit template
argument lists that specify some of the arguments for a template
parameter pack.
(type_unification_real): Unify arguments against pack expansions.
(template_parm_level_and_index): New, helper function.
(unify_pack_expansion): New.
(unify): Unify argument packs on an argument-by-argument basis,
handling variadic argument packs as well.
(more_specialized_fn): Handle unification of function parameter
packs. All things being equal, prefer non-variadic function
templates to variadic function templates.
(more_specialized_class): Prefer the variadic class template
partial specialization that binds fewer arguments to a parameter
pack.
(regenerate_decl_from_template): Expand function parameter packs
into separate parameters.
(instantiate_decl): Ditto.
(tsubst_initializer_list): Handle pack expansions for base-class
initializers.
(dependent_type_p_r): Determine dependent types in argument packs
and pack expansions.
(value_dependent_expression_p): Determine value-dependence of
non-type argument packs.
(dependent_template_arg_p): Handle argument packs.
* semantics.c (finish_cond): Check for bare parameter packs.
(finish_expr_stmt): Ditto.
(finish_for_expr): Ditto.
(finish_switch_cond): Ditto.
(finish_mem_initializers): Ditto.
* name-lookup.c (arg_assoc_type): Handle pack expansions and
argument packs.
* decl2.c (cp_build_parm_decl): Mark function parameter packs.
* parser.c (make_declarator): Declarator is not an expansion.
(make_pointer_declarator): Transfer parameter pack flag to outer
declarator.
(make_reference_declarator): Ditto.
(make_ptrmem_declarator): Ditto.
(make_call_declarator): Ditto.
(make_array_declarator): Ditto.
(cp_parser_postfix_expression): Allow pack expansion expressions
in the argument list for a call expression.
(cp_parser_parenthesized_expression_list): Add new parameter
ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
into separate arguments."
(cp_parser_new_placement): Allow pack expansion expressions.
(cp_parser_new_initializer): Ditto.
(cp_parser_mem_initializer_list): Allow ellipsis to create a
base-class initializer expansion.
(cp_parser_mem_initializer): Ditto.
(cp_parser_template_parameter_list): Keep track of whether the
template parameter is a template parameter pack.
(cp_parser_template_parameter): Parse the ellipsis to indicate a
template parameter pack.
(cp_parser_type_parameter): Ditto.
(cp_parser_template_argument_list): Parse the ellipsis to indicate
a pack expansion.
(cp_parser_direct_declarator): Parse the ellipsis to indicate that
this declarator is a parameter pack.
(cp_parser_parameter_declaration): The ellipsis does not end the
parameter declaration, because it might be a parameter pack. Parse
the ellipsis to indicate a parameter pack.
(cp_parser_initializer): Allow pack expansions.
(cp_parser_initializer_list): Allow ellipsis to create an
initializer expansion.
(cp_parser_base_clause): Allow ellipsis to create a base specifier
expansion.
(cp_parser_type_id_list): Allow ellipsis to create an exception
specifier expansion.
(cp_parser_attribute_list): Don't allow pack expansions.
(cp_parser_functional_cast): Allow pack expansions.
(cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
compute the length of a parameter pack.
(cp_parser_next_token_ends_template_argument_p): An ellipsis can
end a template argument.
* tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
CAST_EXPR.
danglin [Sat, 10 Mar 2007 01:34:23 +0000 (01:34 +0000)]
* pa.c (attr_length_call): Revise condition for long pc-relative branch.
(output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
calls on the SOM target. Don't use "LONG_PIC_PCREL" call sequence on
SOM target.
geoffk [Sat, 10 Mar 2007 01:03:36 +0000 (01:03 +0000)]
* gcc.c: Document %{, in big comment at top.
(input_suffix_matches): Remove special handling for .s and
.S.
(input_spec_matches): New.
(handle_braces): Handle %{,.
(validate_switches): ',' indicates a value which is not a switch.
* config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
to detect assembler input.
* config/i386/sol2.h (CPP_SPEC): Likewise.
* config/rs6000/sysv4.h (ASM_SPEC): Likewise.
* config/rs6000/vxworks.h (ASM_SPEC): Likewise.
* config/rs6000/lynx.h (ASM_SPEC): Likewise.
* config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
* config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
-m64 causes deployment target to default to 10.5.
* config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
sayle [Fri, 9 Mar 2007 23:09:10 +0000 (23:09 +0000)]
* fold-const.c (fold_comparison): Remove compile-time evaluation of
complex constant equality/inequality comparisons for here.
(fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
known at compile-time or can be simplified to a scalar comparison.
(fold_relational_const): Move compile-time evaluation of complex
constant equality/inequality comparisons to here.
jvdelisle [Fri, 9 Mar 2007 21:51:39 +0000 (21:51 +0000)]
2007-03-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/31099
* io/open.c (new_unit): Initialize bytes_left and recl_subrecord.
* io/transfer.c (next_record_w): Set bytes left to record length for
sequential unformatted I/O.
(next_record_r): Ditto.
(read_block_direct): Fix test for exceeding bytes_left.
aldyh [Fri, 9 Mar 2007 20:05:08 +0000 (20:05 +0000)]
PR tree-optimization/30375
* tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
LHS of statements is not the same.
* testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
chaoyingfu [Fri, 9 Mar 2007 19:23:22 +0000 (19:23 +0000)]
* gcc.target/mips/mips32-dspr2-type.c: New test.
* gcc.target/mips/mips32-dspr2.c: New test.
* gcc.target/mips/dspr2-MULT.c: New test.
* gcc.target/mips/dspr2-MULTU.c: New test.
* gcc.target/mips/mips32-dsp-run.c: New test to check execution.
* gcc.target/mips/mips32-dsp.c: Change v4i8 typedef to use signed char.
Adjust some formats.
chaoyingfu [Fri, 9 Mar 2007 19:19:44 +0000 (19:19 +0000)]
* doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
REV 2.
* doc/invoke.texi (-mdspr2): Document new option.
* config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
New unspec for DSP REV 2.
(<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
these instructions are extended in DSP REV 2.
(mips-dspr2.md): Include.
* config/mips/mips.opt (mdspr2): New option.
* config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
(override_options): Check TARGET_DSPR2 to enable MASK_DSP.
(CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
(dsp_bdesc): Add DSP REV 2 builtins. Remove 32-bit only DSP builtins.
(dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
and 2 builtins.
(bdesc_map): Add one field of unsupported_target_flags.
(bdesc_arrays): Update entries to have extra fields. Add
dsp_32only_bdesc.
(mips_init_builtins): Initialize new function types.
Check unsupported_target_fileds to filter out builtins.
* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
TARGET_DSPR2.
(ASM_SPEC): Pass mdspr2 to the assembler.
* config/mips/mips-dspr2.md: New file.