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