Douglas Gregor [Tue, 15 Jan 2008 18:49:47 +0000 (18:49 +0000)]
re PR c++/34751 (ICE with pointer to member and variadic templates)
2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
PR c++/34751
* pt.c (coerce_template_parameter_pack): When substituting into
the type of a non-type template parameter pack. use the
deduced/substituted arguments.
* parser.c (declarator_can_be_parameter_pack): A pointer-to-member
can be a parameter pack with the ellipsis following it. When we
have an erroneous declaration, allow it to be a parameter pack.
(cp_parser_template_parameter): Complain about default
arguments on non-type template parameter packs, and parse them
using the new cp_parser_default_argument.
(cp_parser_parameter_declaration): Complain about parameter packs
with default arguments. Move parsing of default arguments into a
new function, cp_parser_default_argument.
(cp_parser_default_argument): New; extracted from
cp_parser_parameter_declaration.
Douglas Gregor [Tue, 15 Jan 2008 18:08:00 +0000 (18:08 +0000)]
re PR c++/34051 (ICE in dependent_type_p with variadic templates)
2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
PR c++/34051
PR c++/34055
PR c++/34102
PR c++/34103
* typeck.c (check_return_expr): If there are bare parameter packs
in the return value, set it to error_mark_node.
* tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
* pt.c (find_parameter_packs_r): Look at the type of
IDENTIFIER_NODEs (e.g., for user-defined conversions).
(check_for_bare_parameter_packs): Flip the result: now returns
TRUE when there were bare parameter packs, FALSE otherwise.
(push_template_decl_real): Deal with flipped result of
check_for_bare_parameter_packs.
* semantics.c (finish_cond): If there are bare parameter packs in
the conditional, set it to error_mark_node.
(finish_expr_stmt): If there are bare parameter packs in the
expression, set it to error_mark_node.
(finish_for_expr): Ditto.
(finish_switch_cond): If there are bare parameter packs in
the conditional, set it to error_mark_node.
(finish_mem_initializers): If there are bare parameter packs in
the member initializer, set it to error_mark_node.
(finish_member_declaration): Check the attributes of the
declaration for bare parameter packs, and remove the attributes if
any have bare parameter packs.
* parser.c (cp_parser_using_declaration): Check the using
declaration for bare parameter packs.
(cp_parser_base_clause): If there are bare parameter packs in a
base specifier, don't add it to the chain.
Douglas Gregor [Tue, 15 Jan 2008 17:59:44 +0000 (17:59 +0000)]
re PR c++/34314 (ICE on invalid code (with variadic templates): tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in template_class_depth)
2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
PR c++/34314
* error.c (dump_simple_decl): Display ellipsis for template
non-type parameter packs.
(dump_decl): Display ellipsis for template type parameter packs.
(dump_template_decl): Display ellipsis for template template
parameter packs.
* pt.c (redeclare_class_template): When redeclaring a class
template, check for collisions between template parameters and
template parameter packs.
2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
PR c++/34314
* g++.dg/cpp0x/vt-34314.C: New.
* g++.dg/cpp0x/variadic79.C: Fix the error message to reflect
reality (the error message was wrong previously).
Douglas Gregor [Tue, 15 Jan 2008 16:09:28 +0000 (16:09 +0000)]
re PR c++/33964 (internal compiler error: in dependent_type_p, at cp/pt.c:15319 (vararg templates))
2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
PR c++/33964
* pt.c (process_partial_specialization): Don't mark template
parameters that occur in non-deduced contexts.
(struct pair_fn_data): Add include_nondeduced_p.
(for_each_template_parm_r): Only visit non-deduced contexts if
include_nondeduced_p is set.
(for_each_template_parm): Added parameter include_nondeduced_p,
which states whether template parameters found in non-deduced
contexts should be visited.
(uses_template_parms): Visit all template parameters, even those
in non-deduced contexts.
Douglas Gregor [Tue, 15 Jan 2008 16:06:48 +0000 (16:06 +0000)]
re PR c++/34052 (Trouble with variadic templates as template-template parameter)
2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
PR c++/34052
* pt.c (check_default_tmpl_args): Check for parameter packs that
aren't at the end of a primary template.
(push_template_decl_real): Remove check for parameter packs that
aren't at the end of a primary template; that now happens in
check_default_tmpl_args.
* semantics.c (finish_template_template_parm): Use
check_default_tmpl_args to check for errors in the template
parameter list.
Eric Botcazou [Mon, 14 Jan 2008 19:32:10 +0000 (19:32 +0000)]
decl.c (gnat_to_gnu_entity): Process renamings before converting the expression to the type of the object.
* decl.c (gnat_to_gnu_entity) <object>: Process renamings
before converting the expression to the type of the object.
* trans.c (maybe_stabilize_reference) <CONSTRUCTOR>: New case.
Stabilize constructors for special wrapping types.
Eric Botcazou [Mon, 14 Jan 2008 12:16:58 +0000 (12:16 +0000)]
re PR rtl-optimization/31944 (Endless loop while building a 64-bit 2.6.20 kernel)
PR rtl-optimization/31944
* cse.c (remove_pseudo_from_table): New function.
(merge_equiv_classes): Use above function to remove pseudo-registers.
(invalidate): Likewise.
Tobias Burnus [Sun, 13 Jan 2008 21:35:33 +0000 (22:35 +0100)]
re PR fortran/34665 (Cannot pass scalar to array argument 'a')
2008-01-13 Tobias Burnus <burnus@net-b.de>
PR fortran/34665
* resolve.c (resolve_actual_arglist): For expressions,
also check for assume-sized arrays.
* interface.c (compare_parameter): Move F2003 character checks
here, print error messages here, reject elements of
assumed-shape array as argument to dummy arrays.
(compare_actual_formal): Update for the changes above.
Eric Botcazou [Sun, 13 Jan 2008 21:00:39 +0000 (21:00 +0000)]
* trans.c (call_to_gnu):Invoke the addressable_p predicate only
when necessary. Merge some conditional statements. Update comments.
Rename unchecked_convert_p local variable to suppress_type_conversion.
Do not suppress conversions in the In case.
(addressable_p) <VIEW_CONVERT_EXPR>: Do not take alignment issues
into account on non strict-alignment platforms.
Jan Hubicka [Sun, 13 Jan 2008 11:18:08 +0000 (12:18 +0100)]
re PR middle-end/32135 (bogus array-ref fold triggering array overflow warning)
PR middle-end/32135
* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
references above array bounds. This might trigger bounds checks for
pointers to arrays.
Doug Kwan [Sun, 13 Jan 2008 00:22:38 +0000 (00:22 +0000)]
c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers instead of OPT_Wreturn_type in...
ChangeLog:
2008-01-12 Doug Kwan <dougkwan@google.com>
* c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
instead of OPT_Wreturn_type in warning due to ignored return type
qualifiers.
* c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
options included in -Wextra.
* c.opt: New option -Wignored_qualifiers.
* doc/invoke.texi (Warning Options, -Wextra): Add new option
-Wignore_qualifiers.
(-Wignored-qualifiers): Document.
(-Wreturn-type): Remove description of functionality now handled
by -Wignored-qualifiers.
cp/ChangeLog:
2008-01-12 Doug Kwan <dougkwan@google.com>
* decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
instead of OPT_Wreturn_type in warning due to ignored return type
qualifiers.
* pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
instead of OPT_Wreturn_type in warning due to ignored return type
qualifiers.
testsuite/ChangeLog:
2008-01-12 Doug Kwan <dougkwan@google.com>
* gcc.dg/qual-return-1.c: Add -Wignored-qualifiers.
* g++.dg/warn/Wreturn-type-4.C: Replace -Wreturn-type by
-Wignored-qualifiers.
Eric Botcazou [Sun, 13 Jan 2008 00:17:45 +0000 (00:17 +0000)]
utils.c (aggregate_type_contains_array_p): New predicate.
* utils.c (aggregate_type_contains_array_p): New predicate.
(create_field_decl): In a packed record, force byte alignment
for fields without specified position that contain an array.
Anatoly Sokolov [Fri, 11 Jan 2008 20:33:50 +0000 (23:33 +0300)]
avr.c (expand_prologue, [...]): Don't save/restore frame pointer register and don't use 'call-prologues' ...
* config/avr/avr.c (expand_prologue, expand_epilogue): Don't
save/restore frame pointer register and don't use 'call-prologues'
optimization in function with "OS_task" attribute.
PR libfortran/34670
* all_bounds_1.f90: New test case.
* maxloc_bounds_1.f90: New test case.
* maxloc_bounds_2.f90: New test case.
* maxloc_bounds_3.f90: New test case.
* maxloc_bounds_4.f90: New test case.
* maxloc_bounds_5.f90: New test case.
* maxloc_bounds_6.f90: New test case.
* maxloc_bounds_7.f90: New test case.
* maxloc_bounds_8.f90: New test case.
Paul Thomas [Fri, 11 Jan 2008 18:25:29 +0000 (18:25 +0000)]
re PR fortran/34537 (ICE or wrong code for TRANSFER of constant string to character)
2008-01-11 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34537
* simplify.c (gfc_simplify_transfer): Return NULL if the size
of the element is unavailable and only assign character length
to the result, if 'mold' is constant.
2008-01-11 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34537
* gfortran.dg/transfer_simplify_8.f90: New test.
Steven Bosscher [Fri, 11 Jan 2008 14:55:34 +0000 (14:55 +0000)]
re PR middle-end/30905 (Fails to cross-jump)
2008-01-11 Steven Bosscher <stevenb.gcc@gmail.com>
PR rtl-optimization/30905
* cfgcleanup.c: Include dce.h
(crossjumps_occured): New global variable.
(try_crossjump_bb): Exit loop after finding a fallthru edge.
If something changed, set crossjumps_occured to true.
(try_optimize_cfg): Clear crossjumps_occured at the beginning.
Don't add/remove fake edges to exit here...
(cleanup_cfg): ...but do it here, when crossjumping.
Run a fast DCE when successful crossjumps occured in the latest
iteration of try_optimize_cfg.
re PR ada/34466 (s-tasinf.ads:81:42: "cpu_set_t" not declared in "OS_Interface")
PR ada/34466
* s-osinte-linux-hppa.ads (SC_NPROCESSORS_ONLN): New constant for
sysconf call.
(bit_field): New packed boolean type used by cpu_set_t.
(cpu_set_t): New type corresponding to the C type with
the same name. Note that on the Ada side we use a bit
field array for the affinity mask. There is not need
for the C macro for setting individual bit.
(pthread_setaffinity_np): New imported routine.
DJ Delorie [Thu, 10 Jan 2008 19:59:57 +0000 (14:59 -0500)]
m32c.c (m32c_hard_regno_nregs_1): Renamed from...
* config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
(m32c_hard_regno_nregs): ...this, which is now a wrapper.
(m32c_hard_regno_ok): Call the underlying function.
Richard Guenther [Thu, 10 Jan 2008 16:59:06 +0000 (16:59 +0000)]
re PR tree-optimization/34683 (SSA rewriting in the loop unroller causes quadratic behavior)
2008-01-10 Richard Guenther <rguenther@suse.de>
PR middle-end/34683
* tree-cfg.c (tree_merge_blocks): Do not go through the
full-blown folding and stmt updating path if we just deal
with virtual operands.
* tree-ssa-copy.c (may_propagate_copy): Do not short-cut
test for abnormal SSA_NAMEs.
Andreas Krebbel [Thu, 10 Jan 2008 16:46:26 +0000 (16:46 +0000)]
re PR target/34641 (ICE in reload_cse_simplify_operands, at postreload.c:395)
2008-01-10 Andreas Krebbel <krebbel1@de.ibm.com>
PR middle-end/34641
* reload.c (push_reload): Add assertions. All constants from
reg_equiv_constant should have been used for replacing the respective
pseudo earlier.
(find_reloads_address): Invoke find_reloads_address_part for
constant taken from the reg_equiv_constant array.
2008-01-10 Andreas Krebbel <krebbel1@de.ibm.com>
PR middle-end/34641
* g++.dg/torture/pr34641.C: New testcase.
Jan Hubicka [Wed, 9 Jan 2008 19:19:40 +0000 (20:19 +0100)]
re PR tree-optimization/34708 (Inlining heuristics issue)
PR tree-optimization/34708
* tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
based on number of case labels.
(init_inline_once): Remove switch_cost.
* tree-inline.h (eni_weights_d): Remove switch_cost.
re PR fortran/34706 (FE should reuse array temporaries, reduce temporaties and tell ME the array-size type)
2008-01-08 Richard Guenther <rguenther@suse.de>
PR fortran/34706
PR tree-optimization/34683
* trans-types.c (gfc_get_array_type_bounds): Use an array type
with known size for accesses if that is known.
Paolo Carlini [Tue, 8 Jan 2008 18:16:06 +0000 (18:16 +0000)]
user_facet_hierarchies.cc: Do not include <cassert>.
2008-01-08 Paolo Carlini <pcarlini@suse.de>
* testsuite/22_locale/global_templates/user_facet_hierarchies.cc: Do
not include <cassert>.
* testsuite/22_locale/global_templates/standard_facet_hierarchies.cc:
Likewise.
* testsuite/util/testsuite_common_types.h: Include <algorithm>.
re PR tree-optimization/34683 (SSA rewriting in the loop unroller causes quadratic behavior)
2008-01-08 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34683
* tree-ssa-operands.c (operand_build_cmp): Export.
* tree-ssa-operands.h (operand_build_cmp): Declare.
* tree-vn.c (vuses_compare): Remove.
(sort_vuses): Use operand_build_cmp.
(sort_vuses_heap): Likewise.
* tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
to re-use old VEC if available. Do not sort already sorted VUSEs.
(vdefs_to_vec): Do not sort already sorted VDEFs.
Paul Thomas [Tue, 8 Jan 2008 15:14:33 +0000 (15:14 +0000)]
re PR fortran/34476 (Parameters: Bogus out of bounds error in array constructor)
2008-01-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34476
* expr.c (find_array_element): Check that the array bounds are
constant before using them. Use lower, as well as upper bound.
(check_restricted): Allow implied index variable.
2008-01-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34476
* gfortran.dg/parameter_array_init_3.f90: New test.
Paul Thomas [Tue, 8 Jan 2008 15:12:34 +0000 (15:12 +0000)]
re PR fortran/34681 (SAVEd derived type with allocatable components causes ICE)
2008-01-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34681
* trans_array.c (gfc_trans_deferred_array): Do not null the
data pointer on entering scope, nor deallocate it on leaving
scope, if the symbol has the 'save' attribute.
PR fortran/34704
* trans_decl.c (gfc_finish_var_decl): Derived types with
allocatable components and an initializer must be TREE_STATIC.
2008-01-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34681
PR fortran/34704
* gfortran.dg/alloc_comp_default_init_1.f90: New test.