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