Commit Graph

79657 Commits

Author SHA1 Message Date
Zdenek Dvorak
fbb0d4f878 re PR middle-end/30835 (ICE with -O2 -ftree-loop-linear)
PR tree-optimization/30835
	* lambda-code.c (can_convert_to_perfect_nest): Check whether
	bb_for_stmt is not NULL before accessing it.

From-SVN: r122866
2007-03-12 21:56:12 +00:00
Joseph Myers
dc5bbad332 gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for some multilibs.
* gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
	some multilibs.

From-SVN: r122865
2007-03-12 21:32:41 +00:00
Kyle Galloway
814bcb146b jvmti.cc (_Jv_JVMTI_GetArgumentsSize): Make wide type arrays count as a sigle slot.
2007-03-12  Kyle Galloway  <kgallowa@redhat.com>

	* jvmti.cc (_Jv_JVMTI_GetArgumentsSize): Make wide type arrays count
	as a sigle slot.

From-SVN: r122864
2007-03-12 20:15:25 +00:00
Kyle Galloway
b389f63b05 jvmti.cc (_Jv_JVMTI_GetArgumentsSize): Make wide type arrays count as a sigle slot.
2007-03-12  Kyle Galloway  <kgallowa@redhat.com>

	* jvmti.cc (_Jv_JVMTI_GetArgumentsSize): Make wide type arrays count
	as a sigle slot.

From-SVN: r122863
2007-03-12 20:12:47 +00:00
Brooks Moses
80ca80e9cc re PR bootstrap/30635 (--enable-stage1-langauges configure option is not documented.)
PR 30635
* doc/install.texi: Document --enable-stage1-languages

From-SVN: r122861
2007-03-12 13:03:33 -07:00
Marco Trudel
ff4b07ef6e natString.cc (getBytes (jstring enc)): Fixed the loop for multiple cycles, Code cleanup
2007-03-12  Marco Trudel  <mtrudel@gmx.ch>

	* java/lang/natString.cc (getBytes (jstring enc)):
	Fixed the loop for multiple cycles, Code cleanup

From-SVN: r122859
2007-03-12 19:48:32 +00:00
Steven Bosscher
dacb3cda32 tree-pass.h (pass_into_cfg_layout_mode, [...]): Declare.
* tree-pass.h (pass_into_cfg_layout_mode,
	pass_outof_cfg_layout_mode): Declare.
	* cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
	pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
	* passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
	(pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.

From-SVN: r122858
2007-03-12 19:38:06 +00:00
Brooks Moses
6da4bc4e6e Fixed erroneous ChangeLog and gcc/ChangeLog entries.
From-SVN: r122856
2007-03-12 12:00:28 -07:00
Brooks Moses
07f1ac6d75 Makefile.in: Add dummy "install-info" target.
fixincludes/
* Makefile.in: Add dummy "install-info" target.
<toplevel>
* Makefile.def (fixincludes): Remove unneeded "missing" lines.
* Makefile.in: Regenerate

From-SVN: r122855
2007-03-12 11:58:12 -07:00
Seongbae Park
50d50fc7ee invoke.texi (Wvla): New warning.
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

From-SVN: r122851
2007-03-12 18:31:39 +00:00
Richard Henderson
ae0698035b alpha.c (alpha_elf_section_type_flags): New.
* config/alpha/alpha.c (alpha_elf_section_type_flags): New.
	(TARGET_SECTION_TYPE_FLAGS): New.

From-SVN: r122850
2007-03-12 11:15:51 -07:00
Richard Henderson
24c78b3ac8 darwin.c (machopic_reloc_rw_mask): New.
* config/darwin.c (machopic_reloc_rw_mask): New.
        * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
        * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.

From-SVN: r122846
2007-03-12 10:00:11 -07:00
Mark Mitchell
3026f2dfd9 re PR c++/30108 (internal compiler error: in make_decl_rtl, at varasm.c:890)
PR c++/30108
	* call.c (convert_default_arg): Copy non-constant arguments.

	PR c++/30108
	* g++.dg/other/default6.C: New test.

From-SVN: r122844
2007-03-12 16:24:18 +00:00
Mark Mitchell
6d4817e374 cppdefault.c (cpp_EXEC_PREFIX): New variable.
* cppdefault.c (cpp_EXEC_PREFIX): New variable.
	* cppdefault.h (cpp_PREFIX): Document.
	(cpp_PREFIX_len): Likewise.
	(cpp_EXEC_PREFIX): New variable.
	* Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
	* c-incpath.c (add_standard_paths): Correct logic for relocating
	paths within prefix.

From-SVN: r122843
2007-03-12 15:59:06 +00:00
Paolo Carlini
91b0b94a04 stl_algo.h (swap_ranges): Move...
2007-03-12  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_algo.h (swap_ranges): Move...
	* include/bits/stl_algobase.h: ... here.
	* include/tr1/array: Trim includes, stl_algobase.h is enough.

From-SVN: r122840
2007-03-12 13:59:50 +00:00
Uros Bizjak
d8e3118a8b i386.md (fixuns_trunc<mode>hi2): Implement from fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF mode macro.
* 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.

From-SVN: r122839
2007-03-12 12:32:13 +01:00
Richard Sandiford
56fca24ad8 target-supports.exp (check_profiling_available): Return false for VxWorks.
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.

From-SVN: r122838
2007-03-12 10:44:52 +00:00
Richard Sandiford
8906bbc09c config.gcc (i[4567]86-wrs-vxworks, [...]): Add elfos.h to tm_file.
gcc/
	* config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
	elfos.h to tm_file.

From-SVN: r122837
2007-03-12 09:58:50 +00:00
Richard Sandiford
6477126a2a 981006-1.c: Use the non-PIC options if PIC is not supported.
gcc/testsuite/
	* gcc.c-torture/compile/981006-1.c: Use the non-PIC options if
	PIC is not supported.
	* gcc.dg/20020103-1.c: Add dg-require-effective-target fpic.
	* gcc.dg/20020426-2.c: Likewise.
	* gcc.dg/pr28243.c: Likewise.
	* gcc.dg/visibility-11.c: Likewise.
	* gcc.dg/tls/opt-9.c: Likewise.
	* gcc.dg/tls/opt-10.c: Likewise.
	* gcc.dg/tls/pic-1.c: Likewise.
	* gcc.dg/tls/struct-1.c: Likewise.
	* gcc.target/i386/20000807-1.c: Likewise.
	* gcc.target/i386/20000904-1.c: Likewise.
	* gcc.target/i386/20011119-1.c: Likewise.
	* gcc.target/i386/990213-2.c: Likewise.
	* gcc.target/i386/990214-1.c: Likewise.
	* gcc.target/i386/compress-float-387-pic.c: Likewise.
	* gcc.target/i386/compress-float-sse-pic.c: Likewise.
	* gcc.target/i386/pic-1.c: Likewise.
	* gcc.target/i386/pr21518.c: Likewise.
	* gcc.target/i386/pr23098.c: Likewise.
	* gcc.target/i386/pr23943.c: Likewise.

From-SVN: r122836
2007-03-12 08:59:07 +00:00
Olga Golovanevsky
d4e702949e ipa-type-escape improvements
From-SVN: r122835
2007-03-12 08:44:48 +00:00
Brooks Moses
e8bb459742 * Makefile.in (install-info): New dummy target.
From-SVN: r122832
2007-03-11 23:13:30 -07:00
Mark Mitchell
3c38f0ff2e re PR c++/30328 (bit-field: unassemblable assembly code)
PR c++/30328
	* semantics.c (finish_typeof): Use unlowered_expr_type.
	
	PR c++/30328
	* g++.dg/ext/bitfield1.C: New test.

	PR c++/31038
	* parser.c (cp_parser_postfix_expression): Disallow compound
	literals in constant expressions.

	PR c++/31038
	* g++.dg/template/complit2.C: New test.

From-SVN: r122829
2007-03-12 00:26:39 +00:00
GCC Administrator
efb84847df Daily bump.
From-SVN: r122827
2007-03-12 00:17:17 +00:00
Paul Thomas
f68abf4a59 re PR fortran/30883 ([4.1/4.2 only] procedure with dummy procedure f1 rejected with implicit none)
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.

From-SVN: r122822
2007-03-11 16:17:32 +00:00
Richard Guenther
13338552e2 re PR middle-end/31115 (libstdc++ 22_locale/num_get/get/char/2.cc 27_io/basic_ostream/inserters_arithmetic/char/6.cc)
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.

	* gcc.dg/torture/pr31115.c: New testcase.

From-SVN: r122821
2007-03-11 16:08:35 +00:00
Ian Lance Taylor
d7419dec45 tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and the *_DIV_EXPR codes correctly with overflow infinities.
* tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
	the *_DIV_EXPR codes correctly with overflow infinities.

From-SVN: r122820
2007-03-11 15:53:30 +00:00
Paolo Carlini
bd91a8c4ed PR libstdc++/28080 (final)
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.

From-SVN: r122818
2007-03-11 12:03:34 +00:00
Ira Rosen
e838422b9e tree-data-ref.c (analyze_offset): Add a return value (bool) to indicate success/failure of the analysis.
* 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.

From-SVN: r122817
2007-03-11 11:13:34 +00:00
Uros Bizjak
7b8cd03d69 * Fix a typo in my previous commit.
From-SVN: r122816
2007-03-11 11:36:36 +01:00
Uros Bizjak
acaaf0c621 i386.md (frndintxf2): Rename to ...
* config/i386/i386.md (frndintxf2): Rename to ...
        (rintxf2): ... this. Remove expander having same name.
        (rintsf2, rintdf2): Implement using SSEMODEF macro.
        (roundsf2, rounddf2): Ditto.
        (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
        (lround<mode>di2, lround<mode>si2): Ditto.

From-SVN: r122815
2007-03-11 11:27:30 +01:00
Mark Mitchell
f9aa54d3c5 re PR c++/30274 (bool bit-field: wrong increment and decremenet)
PR c++/30274
	* cp-tree.h (unlowered_expr_type): New function.
	* typeck.c (is_bitfield_expr_with_lowered_type): Handle
	COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
	(unlowered_expr_type): New function.
	(build_unary_op): Disallow predecrements of bool bitfields.
	* call.c (build_conditional_expr): Use unlowered_expr_type.
	* pt.c (type_unification_real): Likewise.
	PR c++/30274
	* g++.dg/expr/bitfield3.C: New test.
	* g++.dg/expr/bitfield4.C: Likewise.
	* g++.dg/expr/bitfield5.C: Likewise.
	* g++.dg/expr/bitfield6.C: Likewise.

From-SVN: r122813
2007-03-11 03:07:59 +00:00
GCC Administrator
eae920410e Daily bump.
From-SVN: r122810
2007-03-11 00:17:01 +00:00
Steven Bosscher
7984c78796 lower-subreg.c: Include except.h.
* 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.

From-SVN: r122807
2007-03-10 23:33:40 +00:00
Paolo Carlini
b2c50382fb PR libstdc++/28080 (partial)
2007-03-10  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/28080 (partial)
	* include/std/memory: Move C++03 implementation...
	* include/bits/stl_memory.h: ... here, new.
	* include/Makefile.am: Add.
	* include/bits/stl_tempbuf.h: Include the latter instead.
	* include/tr1/hashtable: Include allocator.h instead of
	the whole <memory>.
	* include/tr1/hashtable_policy.h: Include stl_function.h
	instead of <functional>.
	* include/Makefile.in: Regenerate.
	* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust dg-error
	line numbers.

From-SVN: r122805
2007-03-10 20:29:45 +00:00
Mark Mitchell
ed574fe919 Fix PR number.
From-SVN: r122804
2007-03-10 19:48:44 +00:00
Mark Mitchell
222725d08c re PR target/20924 (inline float divide does not set correct fpu status flags)
PR c++/20924
	* tree.c (walk_type_fields): Recurse into the element type of
	ARRAY_TYPEs if there is a pointer set.

	PR c++/20924
	* g++.dg/template/array18.C: New test.

From-SVN: r122801
2007-03-10 19:35:03 +00:00
Dirk Mueller
89132ebc4c c-common.c (warn_logical_operator): Fix condition.
2007-03-10  Dirk Mueller  <dmueller@suse.de>

       * c-common.c (warn_logical_operator): Fix condition.

From-SVN: r122800
2007-03-10 18:49:28 +00:00
Dirk Mueller
4cdffe3d10 Wlogical-op-1.c: Remove duplicated part.
2007-03-10  Dirk Mueller  <dmueller@suse.de>

       * gcc.dg/Wlogical-op-1.c: Remove duplicated part.
       * g++.dg/warn/Wlogical-op-1.C: Remove duplicated part.

From-SVN: r122799
2007-03-10 17:38:42 +00:00
Dirk Mueller
36be7cc9af re PR c/17946 (wanted: warning for "a && MASK" when "a & MASK" was probably intended)
2007-03-10  Dirk Mueller  <dmueller@suse.de>

       PR c++/17946
       * gcc.dg/Wlogical-op-1.c: Remove duplicated part.
       * g++.dg/warn/Wlogical-op-1.C: Remove duplicated part.

From-SVN: r122798
2007-03-10 17:26:33 +00:00
Tobias Schlüter
df990293b8 Fix typo in ChangeLog entry
From-SVN: r122797
2007-03-10 18:07:41 +01:00
Tobias Schlüter
4f6480020e darwin.h (DARWIN_MINVERSION_SPEC): Add missing quotation mark.
* config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
quotation mark.
* config/i386/darwin.c (machopic_select_section): Remove
superfluous argument in call to categorize_decl_for_section.
Remove unused variable shlib.

From-SVN: r122796
2007-03-10 18:06:19 +01:00
Joseph Myers
c9ecbf8693 configure.ac (glibc_header_dir): Set using with_build_sysroot if defined.
* configure.ac (glibc_header_dir): Set using with_build_sysroot if
	defined.
	* configure: Regenerate.

From-SVN: r122795
2007-03-10 16:43:55 +00:00
Uros Bizjak
79cd820a29 i386.md (UNSPEC_C2_FLAG): New constant.
* 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.

From-SVN: r122793
2007-03-10 13:52:52 +01:00
Kaz Kojima
343d66ade5 sh.c (sh_insn_length_adjustment): Adjust for the change of decode_asm_operands.
* config/sh/sh.c (sh_insn_length_adjustment): Adjust for
	the change of decode_asm_operands.

From-SVN: r122792
2007-03-10 06:57:16 +00:00
Kaz Kojima
07288ab037 mode-switching.c (create_pre_exit): Skip blockage insn.
* mode-switching.c (create_pre_exit): Skip blockage insn.

From-SVN: r122791
2007-03-10 05:04:10 +00:00
Douglas Gregor
9eeea7612d Makefile.in: Regenerate.
2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>

	* include/Makefile.in: Regenerate.
	* include/tr1/mu_iterate.h: Remove.
	* include/tr1/tuple (_Tuple_impl): New.
	(tuple): Make variadic, re-implement as shell over _Tuple_impl.
	(0-element tuple): Basis case.
	(2-element tuple): Handle pair methods.
	(__get_helper): Remove.
	(tuple_element): Reimplement with variadic templates.
	(tuple_size): Ditto.
	(get): Ditto.
	(operator==): Use variadic templates in the signature.
	(operator<): Ditto.
	(operator!=): Ditto.
	(operator>): Ditto.
	(operator<=): Ditto.
	(operator>=): Ditto.
	(__stripped_tuple_type): Remove; we've inlined its behavior.
	(make_tuple): Reimplement with variadic templates.
	(tie): Ditto.
	* include/tr1/tuple_iterate.h: Remove.
	* include/tr1/bind_repeat.h: Remove.
	* include/tr1/ref_wrap_iterate.h: Remove.
	* include/tr1/bind_iterate.h: Remove.
	* include/tr1/functional (_Weak_result_type): Add variadic
	partial specializations.
	(result_of): Ditto.
	(__invoke): Reimplement using variadic templates.
	(reference_wrapper): Reimplement operator() with variadic
	templates.
	(_Maybe_unary_or_binary_function): New.
	(_Mem_fn): Implement for member function pointers using variadic
	templates.
	(placeholders): Define 30 placeholders.
	(_Index_tuple): New.
	(_Build_index_tuple): New.
	(_No_tuple_element): New.
	(_Safe_tuple_element_impl): New.
	(_Safe_tuple_element): New.
	(_Mu): Reimplement with variadic templates, use
	_Safe_tuple_element instead of tuple_element.
	(_Bind): Reimplement with variadic templates and tuples.
	(_Bind_result): Ditto.
	(bind): Reimplement with variadic templates.
	(_Function_handler): Ditto.
	(function): Ditto.
	* include/tr1/functional_iterate.h: Remove.
	* include/tr1/repeat.h: Remove.
	* include/Makefile.am: Don't install removed headers.

From-SVN: r122790
2007-03-10 02:04:13 +00:00
Douglas Gregor
d6a85c8dd4 re PR c++/20599 (variadic template support)
2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>

	PR c++/20599
	* g++.dg/cpp0x/variadic-bind.C: New.
	* g++.dg/cpp0x/variadic-function.C: New.
	* g++.dg/cpp0x/variadic-mem_fn.C: New.
	* g++.dg/cpp0x/variadic-tuple.C: New.
	* g++.dg/cpp0x/variadic1.C: New.
	* g++.dg/cpp0x/variadic2.C: New.
	* g++.dg/cpp0x/variadic3.C: New.
	* g++.dg/cpp0x/variadic4.C: New.
	* g++.dg/cpp0x/variadic5.C: New.
	* g++.dg/cpp0x/variadic6.C: New.
	* g++.dg/cpp0x/variadic7.C: New.
	* g++.dg/cpp0x/variadic8.C: New.
	* g++.dg/cpp0x/variadic9.C: New.
	* g++.dg/cpp0x/variadic10.C: New.
	* g++.dg/cpp0x/variadic11.C: New.
	* g++.dg/cpp0x/variadic12.C: New.
	* g++.dg/cpp0x/variadic13.C: New.
	* g++.dg/cpp0x/variadic14.C: New.
	* g++.dg/cpp0x/variadic15.C: New.
	* g++.dg/cpp0x/variadic16.C: New.
	* g++.dg/cpp0x/variadic17.C: New.
	* g++.dg/cpp0x/variadic18.C: New.
	* g++.dg/cpp0x/variadic19.C: New.
	* g++.dg/cpp0x/variadic20.C: New.
	* g++.dg/cpp0x/variadic21.C: New.
	* g++.dg/cpp0x/variadic22.C: New.
	* g++.dg/cpp0x/variadic23.C: New.
	* g++.dg/cpp0x/variadic24.C: New.
	* g++.dg/cpp0x/variadic25.C: New.
	* g++.dg/cpp0x/variadic26.C: New.
	* g++.dg/cpp0x/variadic27.C: New.
	* g++.dg/cpp0x/variadic28.C: New.
	* g++.dg/cpp0x/variadic29.C: New.
	* g++.dg/cpp0x/variadic30.C: New.
	* g++.dg/cpp0x/variadic31.C: New.
	* g++.dg/cpp0x/variadic32.C: New.
	* g++.dg/cpp0x/variadic33.C: New.
	* g++.dg/cpp0x/variadic34.C: New.
	* g++.dg/cpp0x/variadic35.C: New.
	* g++.dg/cpp0x/variadic36.C: New.
	* g++.dg/cpp0x/variadic37.C: New.
	* g++.dg/cpp0x/variadic38.C: New.
	* g++.dg/cpp0x/variadic39.C: New.
	* g++.dg/cpp0x/variadic40.C: New.
	* g++.dg/cpp0x/variadic41.C: New.
	* g++.dg/cpp0x/variadic42.C: New.
	* g++.dg/cpp0x/variadic43.C: New.
	* g++.dg/cpp0x/variadic44.C: New.
	* g++.dg/cpp0x/variadic45.C: New.
	* g++.dg/cpp0x/variadic46.C: New.
	* g++.dg/cpp0x/variadic47.C: New.
	* g++.dg/cpp0x/variadic48.C: New.
	* g++.dg/cpp0x/variadic49.C: New.
	* g++.dg/cpp0x/variadic50.C: New.
	* g++.dg/cpp0x/variadic51.C: New.
	* g++.dg/cpp0x/variadic52.C: New.
	* g++.dg/cpp0x/variadic53.C: New.
	* g++.dg/cpp0x/variadic54.C: New.
	* g++.dg/cpp0x/variadic55.C: New.
	* g++.dg/cpp0x/variadic56.C: New.
	* g++.dg/cpp0x/variadic57.C: New.
	* g++.dg/cpp0x/variadic58.C: New.
	* g++.dg/cpp0x/variadic59.C: New.
        * g++.dg/cpp0x/variadic60.C : New.
        * g++.dg/cpp0x/variadic61.C : New.
        * g++.dg/cpp0x/variadic62.C : New.
        * g++.dg/cpp0x/variadic63.C : New.
        * g++.dg/cpp0x/variadic64.C : New.
        * g++.dg/cpp0x/variadic65.C : New.
        * g++.dg/cpp0x/variadic66.C : New.
        * g++.dg/cpp0x/variadic67.C : New.
        * g++.dg/cpp0x/variadic68.C : New.	
        * g++.dg/cpp0x/variadic69.C : New.
	* g++.dg/cpp0x/variadic70.C : New.
	* g++.dg/cpp0x/variadic71.C : New.
	* g++.dg/cpp0x/variadic72.C : New.
	* g++.dg/cpp0x/variadic73.C : New.
	* g++.dg/cpp0x/variadic74.C : New.
	* g++.dg/cpp0x/variadic75.C : New.
	* g++.dg/cpp0x/variadic-ex1.C : New.
	* g++.dg/cpp0x/variadic-ex2.C : New.
	* g++.dg/cpp0x/variadic-ex3.C : New.
	* g++.dg/cpp0x/variadic-ex4.C : New.
	* g++.dg/cpp0x/variadic-ex5.C : New.
	* g++.dg/cpp0x/variadic-ex6.C : New.
	* g++.dg/cpp0x/variadic-ex7.C : New.
	* g++.dg/cpp0x/variadic-ex8.C : New.
	* g++.dg/cpp0x/variadic-ex9.C : New.
	* g++.dg/cpp0x/variadic-ex10.C : New.
	* g++.dg/cpp0x/variadic-ex11.C : New.
	* g++.dg/cpp0x/variadic-ex12.C : New.
	* g++.dg/cpp0x/variadic-ex13.C : New.
	* g++.dg/cpp0x/variadic-ex14.C : New.

From-SVN: r122789
2007-03-10 02:01:49 +00:00
Douglas Gregor
5d80a30674 re PR c++/20599 (variadic template support)
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.

From-SVN: r122788
2007-03-10 01:58:58 +00:00
Diego Novillo
706ca88ebb tree-pass.h (TODO_update_smt_usage): Remove.
* tree-pass.h (TODO_update_smt_usage): Remove.
	Update all users.
	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
	argument SOME.
	Update all users.

From-SVN: r122787
2007-03-09 20:54:13 -05:00
John David Anglin
751d985534 pa.c (attr_length_call): Revise condition for long pc-relative branch.
* 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.

From-SVN: r122784
2007-03-10 01:34:23 +00:00