re PR c++/47974 (ICE: tree check: expected tree_vec, have error_mark in tsubst_templa...
[official-gcc.git] / gcc / cp / ChangeLog
blob747457a193787de436dabcd09efe8126551ae978
1 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
3         PR c++/47974
4         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
6 2011-03-03  Jason Merrill  <jason@redhat.com>
8         PR c++/47950
9         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
11 2011-03-02  Jason Merrill  <jason@redhat.com>
13         PR c++/47950
14         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
16         PR c++/47774
17         * tree.c (build_vec_init_elt): Split out from...
18         (build_vec_init_expr): ...here.
19         (diagnose_non_constexpr_vec_init): New fn.
20         * semantics.c (potential_constant_expression_1): Use it.
21         * cp-tree.h: Declare it.
23 2011-03-01  Jason Merrill  <jason@redhat.com>
25         PR c++/46159
26         * parser.c (cp_parser_primary_expression): Don't warn about a
27         failed tentative parse.
29         PR c++/47200
30         * semantics.c (cxx_bind_parameters_in_call): Don't call
31         adjust_temp_type on non-constant args.
33         PR c++/47851
34         * call.c (standard_conversion): Provide requested cv-quals on
35         class rvalue conversion.
37         PR c++/46282
38         * decl2.c (grokbitfield): Handle type-dependent width.
40 2011-02-28  Jason Merrill  <jason@redhat.com>
42         PR c++/47873
43         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
44         after checking for a non-thunk.
46 2011-02-26  Jason Merrill  <jason@redhat.com>
48         PR c++/47904
49         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
50         * pt.c (iterative_hash_template_arg): And hash it.
52         PR c++/47897
53         * semantics.c (non_const_var_error): Split out from...
54         (cxx_eval_constant_expression): ...here.
55         (potential_constant_expression_1) [VAR_DECL]: Use it.
56         Allow dependent variables.
58 2011-02-24  Jason Merrill  <jason@redhat.com>
60         * parser.c (cp_parser_constant_expression): Set
61         non_integral_constant_expression correctly for C++0x too.
62         (cp_parser_static_assert): Allow non-constant expression.
63         (cp_parser_direct_declarator): Expect non_constant_p to be set
64         properly for C++0x.
65         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
66         * semantics.c (maybe_constant_value): Check type_unknown_p too.
67         (potential_rvalue_constant_expression): New.
68         (require_potential_rvalue_constant_expression): New.
70 2011-02-23  Jason Merrill  <jason@redhat.com>
72         * cp-tree.h (DECL_PARM_LEVEL): New.
73         (struct lang_decl_parm): Add level field.
74         * name-lookup.c (function_parm_depth): New fn.
75         * name-lookup.h: Declare it.
76         * parser.c (cp_parser_parameter_declaration_list): Use it.
77         * mangle.c (struct globals): Add parm_depth field.
78         (write_bare_function_type): Adjust it.
79         (write_expression): Include the level delta in PARM_DECL mangling
80         for abi >= 6.
82         * semantics.c (finish_decltype_type): Remove shortcut for decltype
83         of id-expression.
84         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
86 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
88         PR c++/46868
89         * parser.c (cp_parser_class_specifier): Require a closing brace
90         to attempt error recovery.
92 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
94         PR c++/47833
95         * pt.c (struct pending_template): Add chain_next GTY option.
96         * decl.c (struct named_label_use_entry): Likewise.
98 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
100         PR c++/47242
101         * semantics.c (build_lambda_object): Bail out if a field is
102         error_mark_node.
104 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
106         PR c++/47666
107         * class.c (dfs_declare_virt_assop_and_dtor)
108         (declare_virt_assop_and_dtor): New static functions.
109         (add_implicitly_declared_members): Use
110         declare_virt_assop_and_dtor.
112 2011-02-21  Jason Merrill  <jason@redhat.com>
114         PR c++/47207
115         * decl2.c (decl_constant_var_p): A constexpr var needs an
116         initializer to be constant.
117         * semantics.c (cxx_eval_constant_expression): Complain about
118         constexpr var used in its own initializer.
119         * call.c (set_up_extended_ref_temp): Set
120         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
122 2011-02-20  Jason Merrill  <jason@redhat.com>
124         PR c++/47199
125         * semantics.c (cxx_eval_call_expression): Call
126         cxx_eval_constant_expression in trivial shortcut.
128         PR c++/46831
129         * call.c (convert_class_to_reference): Don't try to set up a
130         second conv sequence for non-viable candidates.
132         PR c++/47703
133         * error.c (location_of): Handle non-tagged types.
135         PR c++/46472
136         * method.c (process_subob_fn): Instantiate constexpr templates.
137         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
139 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
141         PR c++/46394
142         * pt.c (tsubst_pack_expansion): do not use
143         cp_tree_equal/same_type_p to detect an expansion of a parameter
144         pack.
146 2011-02-19  Jason Merrill  <jason@redhat.com>
148         PR c++/47503
149         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
151 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
153         PR c++/47795
154         * semantics.c (finish_non_static_data_member): Early return if
155         object is error_mark_node.
157 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
159         PR c++/47208
160         * pt.c (do_auto_deduction): Do not mention error_mark_node in
161         diagnostics.
162         * semantics.c (finish_id_expression): Do not pass erroneous decl
163         to decl_constant_var_p.
165 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
167         PR c++/47783
168         * cvt.c (convert_from_reference): Call mark_exp_read.
170 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
172         PR c++/47172
173         * pt.c (finish_call_expr): Consider a call expression that has a
174         dependent "this" pointer as being dependent.  Add comments.
175         (dependent_type_p, type_dependent_expression_p): Update comments.
177 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
179         PR c++/47326
180         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
181         expansion arguments are not evaluated.
183 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
185         PR c++/47704
186         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
187         instead of TYPE_LANG_FLAG_3.
188         * pt.c (lookup_template_class): Copy over
189         ENUM_FIXED_UNDERLYING_TYPE_P.
191 2011-02-15  Jason Merrill  <jason@redhat.com>
193         PR c++/46807
194         * method.c (synthesized_method_walk): Always exit early for
195         trivial fn in C++98 mode.
197 2011-02-14  Jason Merrill  <jason@redhat.com>
199         PR c++/47482
200         * parser.c (cp_parser_enumerator_definition): Call
201         fold_non_dependent_expr.
203 2011-02-09  Jason Merrill  <jason@redhat.com>
205         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
206         * semantics.c (finish_fname): Only return the name if we're in
207         a function.
209         * decl.c (build_enumerator): Don't perform integral promotions on
210         non-integral constants.
212         * cvt.c (convert_to_void): Handle null op1.
214         * class.c (type_has_constexpr_default_constructor): Make sure the
215         caller stripped an enclosing array.
216         * init.c (perform_member_init): Strip arrays before calling it.
218         PR c++/47511
219         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
221 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
223         PR c++/47398
224         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
225         template parameters in account.
227 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
229         PR c++/46890
230         * parser.c (cp_parser_class_specifier): Fix setting of
231         want_semicolon.
233 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
235         PR c++/47416
236         * semantics.c (build_data_member_initialization): Handle
237         STATEMENT_LIST always instead of just for CLEANUP_BODY.
239 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
241         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
242         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
244 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
246         PR c++/47311
247         * cp-tree.h (fixup_template_parms): Declare.
248         * pt.c (end_template_parm_list): Do not fixup template parms here.
249         (fixup_template_parms): Remove static. Fix typo in the
250         comments. Remove useless code statement.
251         (fixup_template_parm): For a template template parameter, fixup
252         its attributes before fixing up its type.
253         * parser.c
254         (cp_parser_template_declaration_after_export): After parsing
255         template parameters fixup their types.
257 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
259         PR c++/47476
260         * semantics.c (potential_constant_expression_1): Handle
261         TRUTH_XOR_EXPR.
263 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
265         PR c++/43601
266         * semantics.c (expand_or_defer_fn_1): Handle it.
267         * decl2.c (decl_needed_p): Likewise.
269 2011-01-21  Jason Merrill  <jason@redhat.com>
271         PR c++/47041
272         * semantics.c (build_constexpr_constructor_member_initializers):
273         Handle trivial copy.
275 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
277         PR c++/47388
278         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
279         assume init must be NULL if scope is NULL.
280         (begin_range_for_stmt): Likewise.
282 2011-01-21  Jason Merrill  <jason@redhat.com>
284         PR c++/46552
285         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
287         PR c++/46977
288         * semantics.c (potential_constant_expression_1): Split out from
289         potential_constant_expression.  Add want_rval parm.  Handle
290         template expression forms.  Don't enforce restriction on address
291         of automatic variable here.  Add a couple of diagnostics that
292         had been missing.
293         (require_potential_constant_expression): New entry point.
294         (build_data_member_initialization, register_constexpr_fundef): Adjust.
295         (maybe_constant_value): Check potential_constant_expression.
296         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
297         * tree.c (build_vec_init_expr): Adjust.
299 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
301         PR c++/47303
302         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
303         or DECL_EXTERNAL.
305 2011-01-17  Jason Merrill  <jason@redhat.com>
307         PR c++/47067
308         * semantics.c (base_field_constructor_elt): New fn.
309         (cxx_eval_bare_aggregate): Use it.
310         (build_data_member_initialization): Leave COMPONENT_REF for
311         vfield inits.
313 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
315         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
316         workaround.
318 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
319             Jonathan Wakely  <jwakely.gcc@gmail.com>
321         PR c++/33558
322         * decl.c (grokdeclarator): Reject mutable reference members.
324 2011-01-14  Jason Merrill  <jason@redhat.com>
326         PR c++/47289
327         * pt.c (coerce_template_parms): Fix error recovery.
329         PR c++/46903
330         * typeck2.c (check_narrowing): Only check arithmetic types.
332         PR c++/46688
333         * tree.c (build_vec_init_expr): Handle flexible array
334         properly.
336 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
338         PR c++/47213
339         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
340         TYPE_MAIN_DECL instead of TYPE_NAME.
341         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
342         * decl2.c (determine_visibility): Add check
343         of CLASS_TYPE_P for underlying_type.
345 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
347         * cp-tree.h (begin_for_scope): New prototype.
348         (begin_for_stmt): Update prototype.
349         (begin_range_for_stmt): Update prototype.
350         * init.c (build_vec_init): Update call to begin_for_stmt.
351         * parser.c (cp_parser_for): New.
352         (cp_parser_c_for): Add three new parameters.
353         (cp_parser_range_for): Likewise. Most parsing code removed.
354         (cp_parser_iteration_statement): Call cp_parser_for instead of
355         cp_parser_c_for and cp_parser_range_for.
356         (cp_parser_for_init_statement): Add new parameter and return type.
357         (cp_parser_block_declaration): Update call to
358         cp_parser_simple_declaration.
359         (cp_parser_simple_declaration): Add new parameter.
360         Update call to cp_parser_init_declarator.
361         (cp_parser_init_declarator): Add new parameter.
362         * pt.c (tsubst_expr): Update call to begin_for_stmt.
363         * semantics.c (begin_for_scope): New.
364         (begin_for_stmt): Add two new parameters.
365         (begin_range_for_stmt): Likewise.
367 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
369         * parser.c (cp_parser_objc_at_property_declaration): Improved
370         error message.
372 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
374         PR debug/46955
375         * cp-lang.c (get_template_innermost_arguments_folded)
376         (get_template_argument_pack_elems_folded)
377         (template_arg_needs_folding, fold_cplus_constants): New static
378         functions.
379         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
380         get_template_innermost_arguments_folded.
381         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
382         get_template_argument_pack_elems_folded.
384 2011-01-11  Jason Merrill  <jason@redhat.com>
386         PR c++/46658
387         * init.c (build_new_1): Handle value-init in templates differently.
389         PR c++/45520
390         * tree.c (maybe_dummy_object): Check current_class_ref against
391         context, not current_class_type.
393 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
395         PR objc/47078
396         * parser.c (cp_parser_objc_typename): If the type is unknown, for
397         error recovery purposes behave as if it was not specified so that
398         the default type is used.
400 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
402         PR c++/47022
403         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
404         for the second build_x_va_arg argument.
406 2011-01-05  Tom Tromey  <tromey@redhat.com>
408         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
409         (lvalue_or_else): Likewise.
411 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
413         PR target/38662
414         * tree.c (cxx_type_hash_eq):
415         Allow METHOD_TYPE, too.
418 Copyright (C) 2011 Free Software Foundation, Inc.
420 Copying and distribution of this file, with or without modification,
421 are permitted in any medium without royalty provided the copyright
422 notice and this notice are preserved.