mangle.c (mangle_decl): Don't generate mangling aliases for maybe-in-charge [cd]tors.
[gcc.git] / gcc / cp / ChangeLog
1 2012-01-06 Jason Merrill <jason@redhat.com>
2
3 * mangle.c (mangle_decl): Don't generate mangling aliases
4 for maybe-in-charge [cd]tors.
5
6 * error.c (dump_expr): Print type of CONSTRUCTOR.
7
8 2012-01-05 Dodji Seketeli <dodji@redhat.com>
9
10 PR c++/51541
11 * parser.c (cp_parser_alias_declaration): Get out early upon
12 errors in the identifier or the attributes.
13
14 2012-01-04 Paolo Carlini <paolo.carlini@oracle.com>
15
16 PR c++/51064
17 * pt.c (tsubst_copy_and_build): Maybe set TREE_NO_WARNING on
18 the tree returned by build_x_binary_op.
19
20 2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
21
22 PR c++/51738
23 * parser.c (cp_parser_postfix_open_square_expression): Handle
24 postfix-expression [ braced-init-list ].
25
26 2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
27
28 PR c++/29273
29 * rtti.c (build_dynamic_cast_1): In case of T a pointer type,
30 call decay_conversion on v.
31
32 2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
33
34 PR c++/15867
35 * decl.c (duplicate_decls): With -Wredundant-decls don't warn for
36 declaration followed by specialization.
37
38 2012-01-03 Jakub Jelinek <jakub@redhat.com>
39
40 PR c++/51669
41 * semantics.c (finish_omp_clauses): Call fold_build_cleanup_point_expr
42 on OMP_CLAUSE_{IF,FINAL,NUM_THREADS,SCHEDULE_CHUNK}_EXPR.
43
44 2012-01-02 Jason Merrill <jason@redhat.com>
45
46 DR 1359
47 PR c++/51675
48 * method.c (walk_field_subobs): Don't check for uninitialized
49 fields in a union.
50 (synthesized_method_walk): Check here.
51
52 DR 325
53 PR c++/51666
54 * parser.c (cp_parser_cache_defarg): Split out...
55 (cp_parser_parameter_declaration): ...from here.
56 (cp_parser_save_nsdmi): Use it.
57 (cp_parser_cache_group): Remove CPP_COMMA support.
58
59 2012-01-02 Dodji Seketeli <dodji@redhat.com>
60
61 PR c++/51462
62 * semantics.c (cx_check_missing_mem_inits): Don't assert in case
63 of error.
64
65 2012-01-02 Paolo Carlini <paolo.carlini@oracle.com>
66
67 PR c++/20140
68 * typeck2.c (digest_init_r): Use copy_init when initializing
69 an array of chars.
70
71 2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
72
73 PR c++/16603
74 * decl.c (build_enumerator): Don't call perform_integral_promotions
75 on the value.
76
77 2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
78
79 PR c++/51379
80 * typeck.c (build_reinterpret_cast_1): Implement resolution of
81 DR 799.
82
83 2012-01-01 Fabien Chêne <fabien@gcc.gnu.org>
84
85 * parser.c (cp_parser_using_declaration): Add a warning about
86 deprecated access declarations when no errors were encountered
87 while parsing the access declaration. Save the first token in
88 order to emit the warning at the right place.
89
90 2011-12-31 Paolo Carlini <paolo.carlini@oracle.com>
91
92 PR c++/51397
93 * semantics.c (finish_static_assert): Use %s instead of %E for
94 the error message.
95
96 2011-12-27 Fabien Chêne <fabien@gcc.gnu.org>
97
98 PR c++/23211
99 * name-lookup.c (do_class_using_decl): Use dependent_scope_p
100 instead of dependent_type_p, to check that a non-dependent
101 nested-name-specifier of a class-scope using declaration refers to
102 a base, even if the current scope is dependent.
103 * parser.c (cp_parser_using_declaration): Set
104 USING_DECL_TYPENAME_P to 1 if the DECL is not null. Re-indent a
105 'else' close to the prior modification.
106
107 2011-12-23 Jason Merrill <jason@redhat.com>
108
109 PR c++/51507
110 * search.c (at_function_scope_p): Also check cfun.
111 * pt.c (tsubst_pack_expansion): Check it instead of
112 cp_unevaluated_operand.
113 (instantiate_template_1): Use push_to_top_level.
114
115 * tree.c (dependent_name): OFFSET_REF and BASELINK
116 are not dependent names.
117
118 2011-12-21 Jason Merrill <jason@redhat.com>
119
120 PR c++/51611
121 * cp-tree.h (CONVERT_EXPR_VBASE_PATH): New.
122 * class.c (build_base_path): Defer vbase conversion in an NSDMI.
123 * tree.c (bot_replace): Expand it here.
124 * cp-gimplify.c (cp_genericize_r): Make sure deferred conversion
125 doesn't leak into GENERIC.
126
127 2011-12-21 Paolo Carlini <paolo.carlini@oracle.com>
128
129 PR c++/51305
130 * semantics.c (massage_constexpr_body): Reorder conditionals, make
131 sure a BIND_EXPR embedded in a MUST_NOT_THROW_EXPR is handled.
132
133 2011-12-20 Paolo Carlini <paolo.carlini@oracle.com>
134
135 PR c++/51621
136 * tree.c (diagnose_non_constexpr_vec_init): For value initialization
137 pass void_type_node, not void_zero_node, to build_vec_init_elt.
138
139 2011-12-20 Dodji Seketeli <dodji@redhat.com>
140
141 PR debug/49951
142 * decl.c (cxx_maybe_build_cleanup): Don't set location of the call
143 to the destructor.
144
145 2011-12-20 Paolo Carlini <paolo.carlini@oracle.com>
146
147 PR c++/51612
148 * semantics.c (is_valid_constexpr_fn): In case of constexpr
149 constructors also check for virtual base classes.
150
151 2011-12-19 Paolo Carlini <paolo.carlini@oracle.com>
152
153 PR c++/51328
154 * pt.c (convert_template_argument): Early error out and return
155 error_mark_node for invalid uses of destructors as types.
156
157 2011-12-19 Jason Merrill <jason@redhat.com>
158
159 PR c++/51530
160 * pt.c (unify): Handle NULLPTR_TYPE.
161
162 PR c++/51526
163 * semantics.c (build_data_member_initialization): Handle
164 delegating constructor.
165 (build_constexpr_constructor_member_initializers): Likewise.
166
167 PR c++/51553
168 * cp-tree.h (LOOKUP_LIST_INIT_CTOR): Rename from
169 LOOKUP_NO_COPY_CTOR_CONVERSION.
170 (add_list_candidates): Set it earlier.
171 (add_candidates): Don't check explicit on ctors when it's set.
172 (add_function_candidate): Check it even when LOOKUP_ONLYCONVERTING
173 is set.
174
175 PR c++/51553
176 * call.c (add_function_candidate): Allow conversions for the copy
177 parm in list-initialization unless the argument is an init-list.
178
179 2011-12-19 Jakub Jelinek <jakub@redhat.com>
180
181 PR c++/51619
182 * semantics.c (cxx_eval_vec_init_1): If init is NULL for
183 multidimensional array, just set eltinit to NULL_TREE.
184
185 * cp-gimplify.c (gimplify_must_not_throw_expr): Use
186 gimple_seq_add_stmt_without_update instead of gimplify_seq_add_stmt.
187
188 2011-12-19 Dodji Seketeli <dodji@redhat.com>
189
190 PR c++/51477
191 * search.c (lookup_member): Get out early on invalid base type.
192
193 2011-12-19 Jason Merrill <jason@redhat.com>
194
195 PR c++/51489
196 * semantics.c (cxx_eval_outermost_constant_expr): Check for
197 conversion from pointer to integer here.
198 (cxx_eval_constant_expression) [NOP_EXPR]: Not here.
199
200 2011-12-18 Paolo Carlini <paolo.carlini@oracle.com>
201
202 * semantics.c (finish_compound_literal): Don't call check_narrowing
203 if !(complain & tf_warning_or_error).
204
205 2011-12-17 Jason Merrill <jason@redhat.com>
206
207 PR c++/51588
208 * parser.c (cp_parser_ptr_operator): Reject pointer to member of enum.
209
210 2011-12-17 Richard Henderson <rth@redhat.com>
211
212 PR bootstrap/51072
213 * config-lang.in: Revert last change.
214
215 2011-12-17 Jason Merrill <jason@redhat.com>
216
217 PR c++/51586
218 * parser.c (cp_parser_check_class_key): Handle error_mark_node.
219
220 PR c++/51587
221 * decl.c (start_enum): Avoid using ENUM_UNDERLYING_TYPE on a
222 non-enum.
223
224 2011-12-16 Jason Merrill <jason@redhat.com>
225
226 PR c++/51416
227 * init.c (build_value_init_noctor): Check for incomplete type.
228
229 2011-12-16 Richard Henderson <rth@redhat.com>
230
231 PR bootstrap/51072
232 * config-lang.in (target_libs): Include target-libitm.
233
234 2011-12-16 Jason Merrill <jason@redhat.com>
235
236 PR c++/51461
237 * decl.c (check_static_variable_definition): Check COMPLETE_TYPE_P
238 before literal_type_p.
239
240 PR c++/51331
241 * class.c (convert_to_base_statically): Just call
242 build_simple_base_path.
243 (build_simple_base_path): Check field offset.
244
245 2011-12-15 Jason Merrill <jason@redhat.com>
246
247 PR c++/51458
248 * decl.c (has_designator_problem): New.
249 (reshape_init_r): Check for improper use of
250 designated initializers.
251
252 2011-12-15 Jakub Jelinek <jakub@redhat.com>
253
254 PR c++/51463
255 * decl.c (grokdeclarator): Set DECL_INITIAL of decl
256 to error_mark_node to disallow NSDMI if declspecs->storage_class
257 is sc_static.
258 * parser.c (cp_parser_late_parse_one_default_arg): Return early
259 if default_arg is error_mark_node.
260
261 PR c/51360
262 * semantics.c (finish_omp_clauses): For OMP_CLAUSE_NUM_THREADS_EXPR
263 and OMP_CLAUSE_SCHEDULE_CHUNK_EXPR call mark_rvalue_use.
264
265 2011-12-15 Dodji Seketeli <dodji@redhat.com>
266
267 PR c++/51473
268 * decl.c (check_tag_decl): Error out on auto specifier with no
269 declarator.
270
271 2011-12-15 Jonathan Wakely <jwakely.gcc@gmail.com>
272
273 PR libstdc++/51365
274 * cp-tree.h (CPTK_IS_FINAL): Add.
275 * parser.c (cp_parser_translation_unit): Handle RID_IS_FINAL.
276 (cp_parser_primary_expression, cp_parser_trait_expr): Likewise.
277 * semantics.c (trait_expr_value, finish_trait_expr): Handle
278 CPTK_IS_FINAL.
279 * cxx-pretty-print.c (pp_cxx_trait_expression): Likewise.
280
281 2011-12-14 Jason Merrill <jason@redhat.com>
282
283 PR c++/51554
284 * semantics.c (cxx_eval_indirect_ref): Fix sanity check.
285
286 PR c++/51248
287 * decl.c (copy_type_enum): Also update variants.
288 (finish_enum): Allow variants of complete enums.
289
290 2011-12-14 Dodji Seketeli <dodji@redhat.com>
291
292 PR c++/51475
293 * call.c (struct conversion)<u.next>: Update comment.
294 (next_conversion): New static function.
295 (convert_like_real): Use it.
296
297 PR c++/51476
298 * pt.c (convert_nontype_argument): Don't call maybe_constant_value
299 for PTRMEM_CST nodes.
300
301 2011-12-13 Jason Merrill <jason@redhat.com>
302
303 PR c++/51406
304 PR c++/51161
305 * typeck.c (build_static_cast_1): Fix cast of lvalue to
306 base rvalue reference.
307
308 2011-12-13 Paolo Carlini <paolo.carlini@oracle.com>
309
310 PR c++/51464
311 * semantics.c (begin_lambda_type): Check begin_class_definition return
312 value for error_mark_node.
313 * parser.c (cp_parser_lambda_expression): Check begin_lambda_type
314 return value for error_mark_node.
315
316 2011-12-13 Fabien Chêne <fabien@gcc.gnu.org>
317
318 PR c++/14258
319 * cp-tree.h (USING_DECL_TYPENAME_P): New macro.
320 * parser.c (cp_parser_nonclass_name): Handle using declarations
321 that refer to a dependent type.
322 (cp_parser_using_declaration): Set USING_DECL_TYPENAME_P to 1 if
323 the using declaration refers to a dependent type.
324
325 2011-12-12 Jakub Jelinek <jakub@redhat.com>
326
327 PR c++/51496
328 * parser.c (cp_parser_omp_for_loop): When determining whether
329 to use cp_parser_omp_for_incr or cp_parser_expression and when
330 calling cp_parser_omp_for_incr, use real_decl instead of decl.
331
332 2011-12-12 Torvald Riegel <triegel@redhat.com>
333
334 * semantics.c (finish_transaction_stmt, build_transaction_expr):
335 Accept new noexcept parameter and handle it.
336 * cp-tree.h (finish_transaction_stmt, build_transaction_expr): Adapt
337 declarations.
338 * parser.c (cp_parser_exception_specification_opt): Extract
339 noexcept-specification parsing to ...
340 (cp_parser_noexcept_specification_opt): ...here. Allow for parsing
341 non-constexpr noexcept arguments.
342 (cp_parser_transaction, cp_parser_transaction_expression): Parse
343 and handle noexcept-specifications.
344 (cp_parser_function_transaction): Adapt to finish_transaction_stmt
345 change.
346 * pt.c (tsubst_expr): Adapt to new noexcept parameters when
347 building transactions.
348
349 2011-12-12 Torvald Riegel <triegel@redhat.com>
350
351 * cp-tree.def (MUST_NOT_THROW_EXPR): Add condition parameter.
352 * cp-tree.h (MUST_NOT_THROW_COND): New.
353 (build_must_not_throw_expr): Declare.
354 * dump.c (cp_dump_tree): Dump MUST_NOT_THROW_EXPR condition.
355 * except.c (build_must_not_throw_expr): New.
356 (initialize_handler_parm): Use it.
357 (begin_eh_spec_block, wrap_cleanups_r): Adapt to condition.
358 * pt.c (tsubst_expr): Handle MUST_NOT_THROW_EXPR.
359
360 2011-12-12 Richard Guenther <rguenther@suse.de>
361
362 PR lto/51262
363 * tree.c (cp_free_lang_data): No longer clear anonymous names.
364
365 2011-12-09 Jason Merrill <jason@redhat.com>
366
367 PR c++/51151
368 * call.c (perform_implicit_conversion_flags): Remove earlier kludge.
369 * parser.c (cp_parser_omp_for_loop): Use cp_parser_omp_for_incr
370 in templates even if decl isn't type-dependent.
371
372 2011-12-09 Dodji Seketeli <dodji@redhat.com>
373
374 PR c++/51289
375 * cp-tree.h (TYPE_TEMPLATE_INFO): Rewrite this accessor macro to
376 better support aliased types.
377 (TYPE_ALIAS_P): Don't crash on TYPE_NAME nodes that are not
378 TYPE_DECL.
379 * pt.c (find_parameter_packs_r): Handle types aliases.
380 (push_template_decl_real): Check for bare parameter packs in the
381 underlying type of an alias template.
382
383 2011-12-08 Jason Merrill <jason@redhat.com>
384
385 PR c++/51318
386 * typeck.c (build_x_conditional_expr): Restrict glvalue games to C++11.
387
388 PR c++/51459
389 * pt.c (tsubst_expr) [DECL_EXPR]: Handle capture proxies properly.
390 * semantics.c (insert_capture_proxy): No longer static.
391 * cp-tree.h: Declare it.
392
393 2011-12-07 Jakub Jelinek <jakub@redhat.com>
394
395 PR c++/51401
396 * decl.c (grokdeclarator): Error for auto on non-static data members.
397
398 PR c++/51429
399 * typeck2.c (cxx_incomplete_type_diagnostic): Don't
400 ICE if TREE_OPERAND (value, 1) is overloaded.
401
402 PR c++/51229
403 * decl.c (reshape_init_class): Complain if d->cur->index is
404 INTEGER_CST.
405 * parser.c (cp_parser_initializer_list): If cp_parser_parse_definitely
406 fails, clear designator.
407
408 PR c++/51369
409 * init.c (build_value_init): Allow array types even when
410 processing_template_decl.
411
412 2011-12-07 Ed Smith-Rowland <3dw4rd@verizon.net>
413
414 PR c++/51420
415 * parser.c (lookup_literal_operator): Check that declaration is an
416 overloaded function.
417
418 2011-12-06 Jakub Jelinek <jakub@redhat.com>
419
420 PR c++/51430
421 * pt.c (tsubst_decl): Don't call strip_array_domain on
422 error_mark_node.
423
424 2011-12-06 Paolo Carlini <paolo.carlini@oracle.com>
425
426 PR c++/51431
427 * init.c (build_value_init): Check build_aggr_init_expr return
428 value for error_mark_node.
429
430 2011-12-06 Dodji Seketeli <dodji@redhat.com>
431
432 PR c++/51427
433 * parser.c (cp_parser_check_class_key): Add note about earlier
434 declaration.
435
436 2011-12-05 Fabien Chêne <fabien@gcc.gnu.org>
437
438 PR c++/51319
439 * semantics.c (finish_id_expression): Strip using declarations
440 early in the function.
441
442 2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
443
444 PR c++/51399
445 * init.c (perform_member_init): Early return if init is error_mark_node.
446
447 2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
448
449 PR c++/51414
450 * semantics.c (finish_underlying_type): Use %qT, not %qE for the
451 error message.
452
453 2011-12-05 Jason Merrill <jason@redhat.com>
454
455 * init.c (expand_default_init): Unshare args in ctor delegation.
456
457 2011-12-05 Ville Voutilainen <ville.voutilainen@gmail.com>
458 Pedro Lamarão <pedro.lamarao@gmail.com>
459
460 Implement C++11 delegating constructors.
461 * cp-tree.h (enum cpp0x_warn_str): Add CPP0X_DELEGATING_CTORS.
462 * error.c (maybe_warn_cpp0x): Adjust.
463 * parser.c (cp_parser_mem_initializer_list): Use it. Diagnose
464 multiple initializers if a delegating initializer is present.
465 * call.c (build_special_member_call): Convert an assert into an if.
466 * init.c (perform_target_ctor): New.
467 (emit_mem_initializers): Use it.
468 (expand_member_init, expand_default_init): Adjust.
469
470 2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
471
472 PR c++/51404
473 * typeck2.c (build_functional_cast): Early return error_mark_node
474 for invalid uses of 'auto'.
475 * parser.c (cp_parser_direct_declarator): When
476 cp_parser_constant_expression returns error do not produce further
477 diagnostic for the bound.
478
479 2011-12-03 Paolo Carlini <paolo.carlini@oracle.com>
480
481 PR c++/51313
482 * call.c (null_ptr_cst_p): STRIP_NOPS in c++11 mode too.
483
484 2011-12-01 Jason Merrill <jason@redhat.com>
485
486 * call.c (build_new_method_call_1): Handle aggregate initialization.
487 * tree.c (stabilize_init): Handle CONSTRUCTOR.
488
489 2011-12-01 Paolo Carlini <paolo.carlini@oracle.com>
490
491 PR c++/51326
492 * call.c (build_user_type_conversion_1): Early return NULL if
493 expr is NULL_TREE.
494
495 2011-12-01 Paolo Carlini <paolo.carlini@oracle.com>
496
497 PR c++/51367
498 * pt.c (unify_inconsistency): Use either %qT or %qE depending on
499 whether parm is a type or non-type parameter.
500
501 2011-11-30 Jason Merrill <jason@redhat.com>
502
503 PR c++/51009
504 * name-lookup.c (push_to_top_level): Set stmts_are_full_exprs_p.
505 * decl.c (build_aggr_init_full_exprs): Just assert that it's true.
506 (check_initializer): Here too.
507
508 2011-11-30 Paolo Carlini <paolo.carlini@oracle.com>
509
510 PR c++/51299
511 * rtti.c (ifnonnull): Use nullptr_node.
512 (build_dynamic_cast_1): Call cp_truthvalue_conversion instead
513 of c_common_truthvalue_conversion.
514
515 2011-11-24 Paolo Carlini <paolo.carlini@oracle.com>
516
517 PR c++/51227
518 * pt.c (instantiate_class_template_1): If lambda_function (type)
519 is NULL_TREE do not instantiate_decl.
520
521 2011-11-24 Paolo Carlini <paolo.carlini@oracle.com>
522
523 PR c++/51290
524 * class.c (build_base_path): For the null pointer check use
525 nullptr_node instead of integer_zero_node.
526
527 2011-11-22 Dodji Seketeli <dodji@redhat.com>
528
529 PR c++/51145
530 * decl.c (check_elaborated_type_specifier): Gracefully handle
531 error_mark_node. Accept bound template template parameters.
532 Update diagnostics for alias template specializations. Update
533 comment.
534 * parser.c (cp_parser_elaborated_type_specifier): Use
535 check_elaborated_type_specifier for simple-template-ids as well.
536
537 2011-11-22 Paolo Carlini <paolo.carlini@oracle.com>
538
539 PR c++/51265
540 * semantics.c (finish_decltype_type): Handle PTRMEM_CST.
541
542 2011-11-22 Dodji Seketeli <dodji@redhat.com>
543
544 PR c++/51143
545 * parser.c (cp_parser_alias_declaration): Don't allow type
546 definition in templates.
547
548 2011-11-22 Paolo Carlini <paolo.carlini@oracle.com>
549
550 PR c++/51196
551 * typeck.c (cp_build_binary_op, [case EQ_EXPR]): For targets having
552 TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_delta, do here
553 the -Wzero-as-null-pointer-constant warning for pmf == 0.
554
555 2011-11-21 Torvald Riegel <triegel@redhat.com>
556
557 * pt.c (tsubst_copy_and_build): Handle TRANSACTION_EXPR.
558
559 2011-11-21 Ed Smith-Rowland <3dw4rd@verizon.net>
560
561 PR c++/50958
562 * parser.c (lookup_literal_operator): New.
563 (cp_parser_userdef_char_literal): Use it.
564 (cp_parser_userdef_numeric_literal): Use it.
565 (cp_parser_userdef_string_literal): Use lookup_name.
566
567 2011-11-20 Jason Merrill <jason@redhat.com>
568
569 * pt.c (tsubst_pack_expansion): Fix SFINAE.
570
571 PR c++/48322
572 * cp-tree.h (PACK_EXPANSION_EXTRA_ARGS): New.
573 * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand for it.
574 * pt.c (tsubst_pack_expansion): Set and use it.
575 (iterative_hash_template_arg): Hash it.
576 (template_args_equal): Compare it.
577 (comp_template_args_with_info): Handle nulls.
578 * tree.c (cp_walk_subtrees): Walk it.
579 * typeck.c (structural_comptypes): Compare it.
580 * ptree.c (cxx_print_type): Print it.
581
582 * pt.c (type_unification_real): Set input_location
583 during default arg instantiation.
584
585 2011-11-20 Paolo Carlini <paolo.carlini@oracle.com>
586
587 PR c++/51230
588 * pt.c (unify_inconsistency): Handle non-type parameters better.
589 * error.c (dump_expr): Handle TEMPLATE_TEMPLATE_PARM.
590
591 2011-11-20 Dodji Seketeli <dodji@redhat.com>
592
593 PR c++/51194
594 * pt.c (lookup_template_class_1): Go out early if the type of the
595 template is error_mark_node.
596
597 2011-11-19 Paolo Carlini <paolo.carlini@oracle.com>
598
599 PR c++/51216
600 * semantics.c (potential_constant_expression_1): Handle IF_STMT,
601 DO_STMT, FOR_STMT, and WHILE_STMT.
602
603 2011-11-18 Fabien Chêne <fabien@gcc.gnu.org>
604
605 PR c++/51188
606 * search.c (lookup_field_1): Handle USING_DECLs for the storted
607 case.
608
609 2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
610
611 PR c++/51150
612 * pt.c (tsubst_copy_and_build): Handle FIX_TRUNC_EXPR.
613
614 2011-11-18 Dodji Seketeli <dodji@redhat.com>
615
616 PR c++/51191
617 * pt.c (primary_template_instantiation_p): Don't forget to
618 consider alias declarations.
619
620 2011-11-17 Jason Merrill <jason@redhat.com>
621
622 PR c++/51186
623 * decl.c (grokdeclarator): Improve C++98 trailing return diagnostic.
624
625 N3203
626 * class.c (add_implicitly_declared_members): Update move
627 conditions.
628
629 PR c++/51137
630 * class.c (build_base_path): Don't do calculation in templates.
631
632 2011-11-15 Torvald Riegel <triegel@redhat.com>
633
634 * parser.c (cp_parser_transaction_expression): Require parentheses
635 when parsing transaction expressions.
636
637 2011-11-14 Ed Smith-Rowland <3dw4rd@verizon.net>
638
639 PR c++/51107
640 * typeck.c (check_literal_operator_args): Add processing_specialization
641 to check for void template fn. Test for exact arity for non-template fn.
642
643 2011-11-14 Fabien Chêne <fabien@gcc.gnu.org>
644
645 PR c++/6936
646 PR c++/25994
647 PR c++/26256
648 PR c++/30195
649 * search.c (lookup_field_1): Look through USING_DECL.
650 (lookup_field_r): Call lookup_fnfields_slot instead of
651 lookup_fnfields_1.
652 * semantics.c (finish_member_declaration): Remove the check that
653 prevents USING_DECLs from being verified by
654 pushdecl_class_level. Call add_method for using declarations that
655 designates functions if the using declaration is in a template
656 class. Set DECL_IGNORED_P on class-scope using declarations.
657 * typeck.c (build_class_member_access_expr): Handle USING_DECLs.
658 * class.c (check_field_decls): Keep using declarations.
659 (add_method): Remove two diagnostics about conflicting using
660 declarations.
661 * parser.c (cp_parser_nonclass_name): Handle USING_DECLs.
662 * decl.c (start_enum): Call xref_tag whenever possible.
663 * cp-tree.h (strip_using_decl): Declare, and reident the previous
664 function.
665 * name-lookup.c (strip_using_decl): New function.
666 (supplement_binding_1): Call strip_using_decl on decl and
667 bval. Perform most of the checks with USING_DECLs stripped. Also
668 check that the target decl and the target bval does not refer to
669 the same declaration. Allow pushing an enum multiple times in a
670 template class. Adjustment to diagnose using redeclarations. Call
671 diagnose_name_conflict.
672 (push_class_level_binding): Call strip_using_decl on decl and
673 bval. Perform most of the checks with USING_DECLs stripped. Return
674 true if both decl and bval refer to USING_DECLs and are dependent.
675 (diagnose_name_conflict): New function.
676
677 2011-11-12 Jason Merrill <jason@redhat.com>
678
679 PR c++/986
680 * call.c (set_up_extended_ref_temp): Warn about references
681 bound to non-static reference members.
682 * init.c (perform_member_init): Pass in the member.
683
684 PR c++/51060
685 * cp-gimplify.c (cp_gimplify_expr): Leave clobbers alone.
686
687 2011-11-11 Ed Smith-Rowland <3dw4rd@verizon.net>
688
689 PR c++/50976
690 * typeck.c (check_literal_operator_args): Reorganize test for string
691 operators so size_t search depends on finding string first.
692
693 2011-11-10 Jason Merrill <jason@redhat.com>
694
695 PR c++/50372
696 * pt.c (convert_nontype_argument_function): Allow decls with
697 internal linkage in C++11.
698 (convert_nontype_argument): Likewise.
699
700 PR c++/50973
701 * decl2.c (mark_used): Defer synthesis of virtual functions.
702 * method.c (use_thunk): Make sure the target function has
703 DECL_INTERFACE_KNOWN.
704
705 PR c++/51079, DR 495
706 * call.c (joust): Check the second conversion sequence
707 before checking templates.
708
709 2011-11-09 Paolo Carlini <paolo.carlini@oracle.com>
710
711 PR c++/50837
712 * pt.c (tsubst_copy_and_build) [IDENTIFIER_NODE]: In C++11 mode
713 pass allow_non_integral_constant_expression_p = true to
714 finish_id_expression.
715
716 2011-11-09 Jason Merrill <jason@redhat.com>
717
718 PR c++/50972
719 * pt.c (maybe_instantiate_noexcept): Check the return value of
720 push_tinst_level.
721
722 PR c++/51046
723 * parser.c (cp_parser_range_for): check_for_bare_parameter_packs.
724
725 PR c++/51029
726 * class.c (build_base_path): Don't ICE in fold_non_dependent_expr.
727
728 * Make-lang.in (check_g++_parallelize): Add dg-torture.exp.
729 (check-c++0x): Obsolete.
730
731 * pt.c (invalid_nontype_parm_type_p): Avoid printing "<type error>".
732
733 * pt.c (convert_nontype_argument): Only integral arguments
734 get early folding.
735
736 * parser.c (cp_parser_alias_declaration): Don't do semantic
737 processing if parsing failed.
738
739 2011-11-09 Paolo Carlini <paolo.carlini@oracle.com>
740
741 PR c++/51045
742 * init.c (build_new_1, build_vec_delete_1, build_delete):
743 Use nullptr_node.
744
745 2011-11-09 Paolo Carlini <paolo.carlini@oracle.com>
746
747 PR c++/51047
748 * search.c (lookup_member): Change to take also a tsubst_flags_t
749 parameter.
750 (lookup_field, lookup_fnfields): Adjust calls.
751 * typeck.c (lookup_destructor, finish_class_member_access_expr,
752 build_ptrmemfunc_access_expr): Likewise.
753 * class.c (handle_using_decl, maybe_note_name_used_in_class):
754 Likewise.
755 * pt.c (resolve_typename_type): Likewise.
756 * semantics.c (lambda_function): Likewise.
757 * parser.c (cp_parser_perform_range_for_lookup,
758 cp_parser_lookup_name): Likewise.
759 * friend.c (make_friend_class): Likewise.
760 * name-lookup.c (pushdecl_maybe_friend_1, get_class_binding,
761 do_class_using_decl, lookup_qualified_name): Likewise.
762 * cp-tree.h (lookup_member): Adjust declaration.
763
764 2011-11-09 Dodji Seketeli <dodji@redhat.com>
765
766 PR c++/51043
767 * cp-tree.h (TYPE_ALIAS_P, TYPE_TEMPLATE_INFO): Don't crash on
768 NULL TYPE_NAME.
769
770 PR c++/51027
771 * parser.c (cp_parser_alias_declaration): Require ';' at the end
772 of the declaration.
773
774 2011-11-09 Dodji Seketeli <dodji@redhat.com>
775
776 PR debug/51032
777 * decl2.c (check_member_template): Accept alias templates and ...
778 * parser.c (cp_parser_alias_declaration): ... use it here.
779
780 2011-11-08 Jason Merrill <jason@redhat.com>
781
782 PR c++/50835
783 * typeck.c (build_x_conditional_expr): Preserve lvalue/xvalueness.
784 * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Return clk_ordinary
785 in C++98.
786
787 2011-11-08 Richard Guenther <rguenther@suse.de>
788
789 PR middle-end/51010
790 * error.c (dump_expr): Handle SSA_NAMEs.
791
792 2011-11-07 Richard Henderson <rth@redhat.com>
793 Aldy Hernandez <aldyh@redhat.com>
794 Torvald Riegel <triegel@redhat.com>
795
796 Merged from transactional-memory.
797
798 * call.c (build_new_function_call): Call tm_malloc_replacement.
799 * class.c (check_bases): Compute transaction attributes for the
800 class based on its base classes.
801 (look_for_tm_attr_overrides, set_one_vmethod_tm_attributes,
802 set_method_tm_attributes): New.
803 (finish_struct_1): Call set_method_tm_attributes.
804 * cp-tree.h (begin_transaction_stmt, finish_transaction_stmt,
805 build_transaction_expr): Declare.
806 (TRANSACTION_EXPR_IS_STMT): New.
807 * decl.c (push_cp_library_fn): Set attribute to transaction_safe.
808 * except.c (do_get_exception_ptr): Apply transaction_pure.
809 (do_begin_catch): Mark _ITM_cxa_begin_catch transaction_pure and
810 record as transactional-memory wrapper.
811 (do_end_catch): Similarly for _ITM_cxa_end_catch.
812 (do_allocate_exception): Similarly for _ITM_cxa_allocate_exception.
813 (build_throw): Similarly for _ITM_cxa_throw. Make __cxa_rethrow pure.
814 * parser.h (struct cp_parser): Add in_transaction flag.
815 * parser.c (enum non_integral_constant): Add NIC_TRANSACTION.
816 (cp_parser_non_integral_constant_expression): Handle NIC_TRANSACTION.
817 (enum required_token): Add transaction tokens.
818 (cp_parser_transaction, cp_parser_transaction_expression,
819 cp_parser_function_transaction, cp_parser_transaction_cancel,
820 cp_parser_txn_attribute_opt): New.
821 (cp_parser_unary_expression): Handle RID_TRANSACTION*.
822 (cp_parser_statement, cp_parser_function_definition_after_declarator,
823 cp_parser_token_starts_function_definition_p): Same.
824 (cp_parser_required_error): Handle RT_TRANSACTION*.
825 * pt.c (tsubst_expr): Handle TRANSACTION_EXPR.
826 * semantics.c (begin_transaction_stmt, finish_transaction_stmt,
827 build_transaction_expr): New.
828
829 2011-11-08 Dodji Seketeli <dodji@redhat.com>
830
831 Fix context handling of alias-declaration
832 * decl.c (start_decl): Update comment.
833 * error.c (dump_alias_template_specialization): Dump the context
834 of the specialization.
835 * parser.c (cp_parser_alias_declaration): Call pop_scope on the
836 pushed scope yielded by start_decl.
837
838 2011-11-08 Paolo Carlini <paolo.carlini@oracle.com>
839
840 PR c++/50864
841 * parser.c (cp_parser_postfix_dot_deref_expression): Reject invalid
842 uses of '->' and '.' as postfix-expression in namespace scope.
843
844 2011-11-07 Jason Merrill <jason@redhat.com>
845
846 PR c++/50848
847 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't crash
848 if lookup finds a non-function.
849
850 PR c++/50863
851 * parser.c (cp_parser_initializer_list): Parse C99
852 array designators tentatively.
853
854 PR c++/50870
855 * pt.c (tsubst_copy): Handle NAMESPACE_DECL.
856 (tsubst_copy_and_build) [COMPONENT_REF]: Handle a still-dependent
857 object.
858
859 2011-11-07 Paolo Carlini <paolo.carlini@oracle.com>
860
861 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
862 call in case COMPONENT_REF.
863
864 2011-11-07 Jason Merrill <jason@redhat.com>
865 Dodji Seketeli <dodji@redhat.com>
866
867 Support C++11 alias-declaration
868 PR c++/45114
869 * cp-tree.h (TYPE_DECL_ALIAS_P, TYPE_ALIAS_P)
870 (DECL_TYPE_TEMPLATE_P, DECL_ALIAS_TEMPLATE_P): New accessor
871 macros.
872 (TYPE_TEMPLATE_INFO): Get template info of an alias template
873 specializations from its TYPE_DECL.
874 (SET_TYPE_TEMPLATE_INFO): Set template info of alias template
875 specializations into its TYPE_DECL.
876 (DECL_CLASS_TEMPLATE_P): Re-write using the new
877 DECL_TYPE_TEMPLATE_P.
878 (enum cp_decl_spec): Add new ds_alias enumerator.
879 (alias_type_or_template_p, alias_template_specialization_p):
880 Declare new functions.
881 * parser.c (cp_parser_alias_declaration): New static function.
882 (cp_parser_check_decl_spec): Add "using" name for the `alias'
883 declspec.
884 (cp_parser_type_name): Update comment. Support simple-template-id
885 representing alias template specializations in c++0x mode.
886 (cp_parser_qualifying_entity): Update comment. Use
887 cp_parser_type_name.
888 (cp_parser_block_declaration): Handle alias-declaration in c++11.
889 Update comment.
890 (cp_parser_template_id): Handle specializations of alias
891 templates.
892 (cp_parser_member_declaration): Add alias-declaration production
893 to comment. Support alias-declarations.
894 (cp_parser_template_declaration_after_export): Handle alias
895 templates in c++11.
896 * decl.c (make_typename_type, make_unbound_class_template): Accept
897 alias templates.
898 (grokdeclarator): Set TYPE_DECL_ALIAS_P on alias
899 declarations.
900 * decl2.c (grokfield): Move template creation after setting up the
901 TYPE_DECL of the alias, so that the TEMPLATE_DECL of the alias
902 template actually carries the right type-id of the alias
903 declaration.
904 * pt.c (alias_type_or_template_p)
905 (alias_template_specialization_p): Define new public functions.
906 (maybe_process_partial_specialization): Reject partial
907 specializations of alias templates.
908 (primary_template_instantiation_p): Consider alias template
909 instantiations.
910 (push_template_decl_real): Assert that TYPE_DECLs of alias
911 templates are different from those of class template. Store
912 template info onto the TYPE_DECL of the alias template.
913 (convert_template_argument): Strip aliases from template
914 arguments.
915 (lookup_template_class_1): Handle the creation of the
916 specialization of an alias template.
917 (tsubst_decl): Create a substituted copy of the TYPE_DECL of an
918 member alias template.
919 (tsubst): Handle substituting into the type of an alias template.
920 Handle substituting UNBOUND_CLASS_TEMPLATE into
921 BOUND_TEMPLATE_TEMPLATE_PARM.
922 (do_type_instantiation): Better diagnostics when trying to
923 explicitely instantiate a non-class template.
924 * search.c (lookup_field_1, lookup_field_r): Support looking up
925 alias templates.
926 * semantics.c (finish_template_type): For instantiations of alias
927 templates, return the TYPE_DECL of the actual alias and not the
928 one of the aliased type.
929 * error.c (dump_alias_template_specialization): New static
930 function.
931 (dump_type): Handle printing of alias templates and their
932 specializations. templates.
933 (dump_aggr_type): For specialization of alias templates, fetch
934 arguments from the right place.
935 (dump_decl): Print an alias-declaration like `using decl = type;'
936 (dump_template_decl): Support printing of alias templates.
937
938 2011-11-07 Jason Merrill <jason@redhat.com>
939
940 PR c++/35688
941 * decl2.c (constrain_visibility): Return void. Add tmpl parm
942 which gives the constraint priority over an attribute.
943 (constrain_visibility_for_template, determine_visibility): Adjust.
944 * pt.c (instantiate_class_template_1): Call determine_visibility.
945
946 PR c++/33255
947 * decl.c (save_function_data): Clear local_typedefs.
948
949 * decl.c (cp_finish_decl): Only make_tree_vector if we're calling
950 check_initializer.
951
952 2011-11-06 Jason Merrill <jason@redhat.com>
953
954 PR c++/35688
955 * decl2.c (constrain_visibility): Check decl_has_visibility_attr
956 rather than DECL_VISIBILITY_SPECIFIED.
957
958 2011-11-06 Paolo Carlini <paolo.carlini@oracle.com>
959
960 PR c++/47695
961 * decl2.c (mark_used): Early return false after error or sorry.
962 * cp-tree.h (mark_used): Adjust declaration.
963 * semantics.c (finish_id_expression): Check mark_used return value.
964
965 2011-11-05 Jason Merrill <jason@redhat.com>
966
967 PR c++/48370
968 * decl.c (cp_finish_decl): Mostly revert previous change.
969
970 2011-11-04 Jason Merrill <jason@redhat.com>
971
972 PR c++/26714
973 * init.c (perform_member_init): Strip TARGET_EXPR around NSDMI.
974 Do temporary lifetime extension.
975
976 PR c++/48370
977 * decl.c (cp_finish_decl): Run cleanups in the right order.
978
979 2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
980
981 PR c++/50608
982 * semantics.c (finish_offsetof): Adjust call to fold_offsetof.
983 * typeck.c (cp_build_addr_expr_1): Call fold_offsetof_1.
984
985 2011-11-04 Paolo Carlini <paolo.carlini@oracle.com>
986
987 * typeck.c (build_indirect_ref): Use ATTRIBUTE_UNUSED.
988 * mangle.c (write_unnamed_type_name): Likewise.
989
990 2011-11-04 Magnus Fromreide <magfr@lysator.liu.se>
991
992 * parser.c (cp_parser_enumerator_list): Do not warn about
993 trailing commas in C++0x mode.
994
995 2011-11-04 Olivier Goffart <olivier@woboq.com>
996 Jason Merrill <jason@redhat.com>
997
998 PR c++/50965
999 * class.c (check_field_decls): NSDMI makes a class non-aggregate.
1000
1001 2011-11-04 Paolo Carlini <paolo.carlini@oracle.com>
1002
1003 PR c++/48420
1004 * call.c (conversion_null_warnings): For 'false' to NULL pointer,
1005 just check that TREE_TYPE (expr) is a BOOLEAN_TYPE.
1006
1007 2011-11-04 Ed Smith-Rowland <3dw4rd@verizon.net>
1008
1009 PR c++/50941
1010 * parser.c (cp_parser_userdef_string_literal): Fix string length.
1011
1012 2011-11-04 Jason Merrill <jason@redhat.com>
1013
1014 PR c++/48370
1015 * call.c (extend_ref_init_temps, extend_ref_init_temps_1): New.
1016 (set_up_extended_ref_temp): Use it. Change cleanup parm to VEC.
1017 (initialize_reference): Just call convert_like.
1018 * decl.c (grok_reference_init): Just call initialize_reference.
1019 (build_init_list_var_init): Remove.
1020 (check_initializer): Change cleanup parm to VEC. Handle references
1021 like other types. Call perform_implicit_conversion instead
1022 of build_init_list_var_init. Don't use build_aggr_init for
1023 aggregate initialization of arrays.
1024 (cp_finish_decl): Change cleanup to VEC.
1025 * typeck2.c (store_init_value): Call extend_ref_init_temps.
1026 Use build_vec_init for non-constant arrays.
1027 * init.c (expand_aggr_init_1): Adjust.
1028 (build_vec_init): Avoid re-converting an initializer
1029 that's already digested.
1030 * mangle.c (mangle_ref_init_variable): Add a discriminator.
1031 * cp-tree.h: Adjust.
1032 * typeck.c (convert_for_initialization): Adjust.
1033 * decl2.c (maybe_emit_vtables): Adjust.
1034
1035 2011-11-02 Jason Merrill <jason@redhat.com>
1036
1037 PR c++/50930
1038 * init.c (build_aggr_init): Don't set LOOKUP_ONLYCONVERTING
1039 if the initializer has TARGET_EXPR_DIRECT_INIT_P.
1040 (expand_default_init): An initializer with TARGET_EXPR_DIRECT_INIT_P
1041 or TARGET_EXPR_LIST_INIT_P doesn't need more processing.
1042 * tree.c (bot_manip): Propagate TARGET_EXPR_IMPLICIT_P,
1043 TARGET_EXPR_LIST_INIT_P, TARGET_EXPR_DIRECT_INIT_P.
1044 * call.c (convert_like_real): Set TARGET_EXPR_DIRECT_INIT_P
1045 as appropriate on list-value-initialization.
1046
1047 * parser.c (cp_parser_decl_specifier_seq): Change "C++0x" to
1048 "C++11" in warnings.
1049 (cp_lexer_get_preprocessor_token): Likewise.
1050 (cp_parser_binary_expression): Likewise.
1051
1052 2011-11-02 Paolo Carlini <paolo.carlini@oracle.com>
1053
1054 PR c++/50810
1055 * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
1056 (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
1057 * decl.c (check_initializer): Likewise.
1058 * semantics.c (finish_compound_literal): Likewise.
1059
1060 2011-11-02 Paolo Carlini <paolo.carlini@oracle.com>
1061
1062 PR c++/50956
1063 * typeck.c (build_const_cast_1): Fix -Wcast-qual for false
1064 comp_ptr_ttypes_const.
1065
1066 2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1067
1068 * Make-lang.in (g++spec.o): Pass SHLIB instead of SHLIB_LINK.
1069
1070 2011-11-01 Paolo Carlini <paolo.carlini@oracle.com>
1071
1072 PR c++/44277
1073 * cvt.c (cp_convert_to_pointer): Warn for zero as null pointer
1074 constant.
1075 * typeck.c (cp_truthvalue_conversion): Handle pointers and member
1076 function pointers under c_inhibit_evaluation_warnings; use
1077 nullptr_node for data member pointers.
1078 (cp_build_binary_op): Tweak, just forward to cp_convert op1,
1079 either a nullptr_node or an integer_zero_node.
1080 (build_ptrmemfunc): Use nullptr_node.
1081 * init.c (build_zero_init_1): Likewise.
1082
1083 2011-11-01 Jason Merrill <jason@redhat.com>
1084
1085 PR c++/50500
1086 DR 1082
1087 * search.c (lookup_fnfields_idx_nolazy): Split out from...
1088 (lookup_fnfields_1): ...here.
1089 (lookup_fnfields_slot_nolazy): Use it.
1090 * cp-tree.h: Declare it.
1091 * class.c (type_has_move_assign): Use it.
1092 (type_has_user_declared_move_assign): Likewise.
1093
1094 2011-10-31 Jason Merrill <jason@redhat.com>
1095
1096 PR c++/50920
1097 * class.c (check_field_decl): Change c++0x in diags to c++11.
1098 * error.c (maybe_warn_cpp0x): Likewise.
1099 * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
1100 * pt.c (check_default_tmpl_args): Likewise.
1101
1102 2011-10-31 Diego Novillo <dnovillo@google.com>
1103
1104 * mangle.c (get_mangled_id): Factor from ...
1105 (mangle_decl): ... here.
1106 Call get_mangled_id.
1107
1108 2011-10-25 Gerald Pfeifer <gerald@pfeifer.com>
1109
1110 * NEWS (GCC 2.95): Refer to GNU/Linux instead of Linux.
1111 (EGCS 1.0): Ditto.
1112
1113 2011-10-29 Paolo Carlini <paolo.carlini@oracle.com>
1114
1115 PR c++/50901
1116 * call.c (build_new_op_1): Handle ABS_EXPR together with the
1117 other unary EXPR.
1118
1119 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
1120
1121 Revert:
1122 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
1123
1124 PR c++/50864
1125 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
1126 call in case COMPONENT_REF.
1127
1128 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
1129
1130 * pt.c (unify_pack_expansion): Initialize bad_old_arg and bad_new_arg.
1131
1132 2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
1133
1134 PR c++/50864
1135 * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
1136 call in case COMPONENT_REF.
1137
1138 2011-10-27 Jason Merrill <jason@redhat.com>
1139
1140 * semantics.c (cxx_eval_outermost_constant_expr): Check
1141 cp_has_mutable_p.
1142 (cxx_eval_component_reference): Check DECL_MUTABLE_P.
1143
1144 2011-10-27 Roberto Agostino Vitillo <ravitillo@lbl.gov>
1145
1146 PR c++/30066
1147 * decl2.c (determine_hidden_inline): New function.
1148 (determine_visibility): fvisibility-inlines-hidden affects inline
1149 functions.
1150
1151 2011-10-27 Dodji Seketeli <dodji@redhat.com>
1152
1153 * cp-tree.h (DECL_DECLARES_TYPE_P): Fix comment.
1154
1155 2011-10-26 Jason Merrill <jason@redhat.com>
1156
1157 * typeck.c (check_literal_operator_args): Avoid building types.
1158
1159 2011-10-26 Ed Smith-Rowland <3dw4rd@verizon.net>
1160
1161 Implement C++11 user-defined literals.
1162 * cp-objcp-common.c: (cp_tree_size) Return size of USERDEF_LITERAL tree.
1163 * cp-tree.h: (UDLIT_OP_*, UDLIT_OPER_P): Literal operator
1164 name tools. New tree code for user-defined literals.
1165 * cxx-pretty-print.h: (pp_cxx_userdef_literal) New.
1166 * cxx-pretty-print.c: (pp_cxx_userdef_literal) New.
1167 (pp_cxx_primary_expression, pp_cxx_expression): Use it.
1168 * decl.c: (cp_tree_node_structure): Return new tree code.
1169 (duplicate_decls): Check for raw vs. template operator conflicts.
1170 (grokfndecl, grokdeclarator): New checks for literal operators.
1171 * error.c: (dump_expr): Warn about user-defined literals
1172 in C++98 mode. (dump_function_name): Pretty printing.
1173 * mangle.c: (write_literal_operator_name): New.
1174 (write_unqualified_id, write_unqualified_name): Use it.
1175 * parser.c: (cp_parser_operator): Handle operator"".
1176 (cp_parser_userdef_char_literal, cp_parser_userdef_numeric_literal,
1177 cp_parser_userdef_string_literal): New.
1178 (cp_parser_primary_expression): Handle new user-defined literal tokens
1179 with new functions.
1180 * semantics.c: (potential_constant_expression_1): Add
1181 user-defined literals.
1182 * typeck.c (check_raw_literal_operator,
1183 check_literal_operator_args): New.
1184
1185 2011-10-26 Paolo Carlini <paolo.carlini@oracle.com>
1186
1187 * typeck.c (cp_build_addr_expr_1): Use BASELINK_P.
1188 * class.c (instantiate_type): Likewise.
1189 * pt.c (convert_nontype_argument_function, uses_template_parms,
1190 tsubst_copy, resolve_nondeduced_context, type_dependent_expression_p):
1191 Likewise.
1192 * semantics.c (finish_decltype_type): Likewise.
1193 * decl2.c (mark_used): Likewise.
1194 * name-lookup.c (arg_assoc): Likewise.
1195
1196 2011-10-26 Paolo Carlini <paolo.carlini@oracle.com>
1197
1198 PR c++/50870
1199 * typeck.c (non_reference): Pass NULL_TREE through.
1200
1201 2011-10-25 Jason Merrill <jason@redhat.com>
1202
1203 PR c++/50866
1204 PR c++/41449
1205 * semantics.c (maybe_cleanup_point_expr_void): No longer static.
1206 * typeck2.c (split_nonconstant_init_1): Use it.
1207 * cp-tree.h: Declare it.
1208 * decl.c (wrap_cleanups_r): Stop at CLEANUP_POINT_EXPR.
1209
1210 PR c++/49996
1211 * tree.c (stabilize_init): Stabilize scalar elements of a
1212 CONSTRUCTOR, too.
1213
1214 2011-10-25 Paolo Carlini <paolo.carlini@oracle.com>
1215
1216 PR c++/50858
1217 * typeck.c (composite_pointer_type_r): Check return value of
1218 composite_pointer_type_r for error_mark_node.
1219
1220 2011-10-25 Paolo Carlini <paolo.carlini@oracle.com>
1221
1222 PR c++/50861
1223 * pt.c (tsubst_copy_and_build): Check return value of
1224 tsubst_copy_and_build for error_mark_node.
1225
1226 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com>
1227
1228 PR c++/50841
1229 Revert:
1230 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com>
1231
1232 PR c++/50810
1233 * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
1234 (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
1235 * decl.c (check_initializer): Likewise.
1236 * semantics.c (finish_compound_literal): Likewise.
1237
1238 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com>
1239
1240 PR c++/50810
1241 * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
1242 (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
1243 * decl.c (check_initializer): Likewise.
1244 * semantics.c (finish_compound_literal): Likewise.
1245
1246 2011-10-21 Paolo Carlini <paolo.carlini@oracle.com>
1247
1248 PR c++/45385
1249 * init.c (build_vec_init): Early return error_mark_node if
1250 maxindex is -1.
1251
1252 2011-10-21 Paolo Carlini <paolo.carlini@oracle.com>
1253
1254 PR c++/31423
1255 * typeck2.c (cxx_incomplete_type_diagnostic): Improve error message
1256 for invalid use of member function.
1257
1258 2011-10-21 Ville Voutilainen <ville.voutilainen@gmail.com>
1259
1260 PR c++/50811
1261 * parser.c (cp_parser_class_head): Parse virt-specifiers
1262 regardless of whether an id is present
1263
1264 2011-10-20 Jason Merrill <jason@redhat.com>
1265
1266 PR c++/41449
1267 * typeck2.c (split_nonconstant_init_1): Handle EH cleanup of
1268 initialized subobjects.
1269
1270 2011-10-19 Paolo Carlini <paolo.carlini@oracle.com>
1271
1272 PR c++/13657
1273 * class.c (instantiate_type): Fix error message.
1274
1275 2011-10-19 Jason Merrill <jason@redhat.com>
1276
1277 PR c++/50793
1278 * tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST.
1279
1280 2011-10-19 Roland Stigge <stigge@antcom.de>
1281
1282 PR translation/49704
1283 * semantics.c (potential_constant_expression_1): Use "AST" instead of
1284 "ast" in sorry message.
1285
1286 2011-10-19 Paolo Carlini <paolo.carlini@oracle.com>
1287
1288 PR c++/38761
1289 PR c++/40872
1290 * decl.c (duplicate_decls, make_typename_type, grokdeclarator): Use
1291 G_() in error message strings to facilitate translation.
1292 * semantics.c (finish_id_expression): Likewise.
1293 * parser.c (cp_parser_nested_name_specifier_opt,
1294 cp_parser_parameter_declaration): Likewise.
1295
1296 2011-10-18 Jason Merrill <jason@redhat.com>
1297
1298 PR c++/50531
1299 * pt.c (instantiate_decl): Recognize when a function defaulted
1300 outside the class is already instantiated.
1301
1302 PR c++/50742
1303 * decl.c (check_previous_goto_1): Handle using-decl.
1304
1305 2011-10-18 Jason Merrill <jason@redhat.com>
1306
1307 PR c++/50500
1308 DR 1082
1309 * class.c (type_has_user_declared_move_constructor): New.
1310 (type_has_user_declared_move_assign): New.
1311 (add_implicitly_declared_members): Add lazy copy ops
1312 even if there's a move.
1313 * method.c (lazily_declare_fn): Delete implicit copies
1314 if there's a move.
1315 (maybe_explain_implicit_delete): Explain this. Use inform rather
1316 than error.
1317 * cp-tree.h: Declare new fns.
1318
1319 2011-10-18 Diego Novillo <dnovillo@google.com>
1320
1321 * parser.c: Remove ENABLE_CHECKING markers around debugging
1322 routines.
1323 (cp_lexer_dump_tokens): Add arguments START_TOKEN and CURR_TOKEN.
1324 Make static
1325 When printing CURR_TOKEN surround it in [[ ]].
1326 Start printing at START_TOKEN.
1327 Update all users.
1328 (cp_debug_print_tree_if_set): New.
1329 (cp_debug_print_context): New.
1330 (cp_debug_print_context_stack): New.
1331 (cp_debug_print_flag): New.
1332 (cp_debug_print_unparsed_function): New.
1333 (cp_debug_print_unparsed_queues): New.
1334 (cp_debug_parser_tokens): New.
1335 (cp_debug_parser): New.
1336 (cp_lexer_start_debugging): Set cp_lexer_debug_stream to stderr.
1337 (cp_lexer_stop_debugging): Set cp_lexer_debug_stream to NULL.
1338 * parser.h (cp_lexer_dump_tokens): Remove declaration.
1339 (cp_debug_parser): Declare.
1340
1341 2011-10-17 Michael Spertus <mike_spertus@symantec.com>
1342
1343 * cp-tree.def: Add BASES as a new tree code.
1344 * cp-tree.h (enum cp_trait_kind): Add CPTK_BASES, CPTK_DIRECT_BASES.
1345 (BASES_TYPE, BASES_DIRECT): Define.
1346 (calculate_bases, finish_bases, calculate_direct_bases): Declare.
1347 * parser.c (cp_parser_trait_expr, cp_parser_template_argument_list,
1348 (cp_parser_simple_type_specifier, cp_parser_save_nsdmi): Use them.
1349 * pt.c (find_parameter_packs_r, tsubst_pack_expansion): Likewise.
1350 * semantics.c (calculate_bases, finish_bases, calculate_direct_bases,
1351 dfs_calculate_bases_pre, dfs_calculate_bases_post,
1352 calculate_bases_helper): Define.
1353
1354 2011-10-17 Jason Merrill <jason@redhat.com>
1355
1356 PR c++/50736
1357 * parser.c (cp_parser_lambda_introducer): Check for more
1358 invalid captures.
1359
1360 2011-10-17 Paolo Carlini <paolo.carlini@oracle.com>
1361
1362 PR c++/44524
1363 * typeck.c (build_class_member_access_expr): Provide a better error
1364 message for X.Y where X is a pointer to class type.
1365 (finish_class_member_access_expr): Likewise.
1366
1367 2011-10-15 Tom Tromey <tromey@redhat.com>
1368 Dodji Seketeli <dodji@redhat.com>
1369
1370 * error.c (cp_diagnostic_starter): Pass the relevant location to
1371 diagnostic_report_current_module.
1372 (cp_diagnostic_finalizer): Call virt_loc_aware_diagnostic_finalizer.
1373
1374 2011-10-17 Paolo Carlini <paolo.carlini@oracle.com>
1375
1376 PR c++/48489
1377 * typeck.c (finish_class_member_access_expr): Fix error call
1378 for TREE_CODE (access_path) == TREE_BINFO.
1379
1380 2011-10-15 Paolo Carlini <paolo.carlini@oracle.com>
1381
1382 PR c++/50732
1383 * semantics.c (finish_trait_expr): Do not try to instantiate the
1384 the base type of an __is_base_of trait.
1385 (check_trait_type): Return a tree; use complete_type_or_else.
1386
1387 2011-10-14 Jason Merrill <jason@redhat.com>
1388
1389 PR c++/50563
1390 * parser.c (cp_parser_cache_group): Handle end==CPP_COMMA.
1391 (cp_parser_save_nsdmi): Pass it.
1392
1393 PR c++/50707
1394 * method.c (walk_field_subobs): Check for NSDMI before
1395 complaining about uninitialized fields.
1396
1397 * pt.c (tsubst_decl) [FIELD_DECL]: Use void_zero_node
1398 instead of error_mark_node as a placeholder.
1399
1400 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
1401
1402 PR c++/38174
1403 * call.c (add_builtin_candidate): If two pointers have a composite
1404 pointer type, generate a single candidate with that type.
1405
1406 2011-10-13 Jason Merrill <jason@redhat.com>
1407
1408 PR c++/50614
1409 * cp-tree.h (VAR_TEMPL_TYPE_FIELD_OR_FUNCTION_DECL_CHECK): New.
1410 (DECL_TEMPLATE_INFO): Use it.
1411 * pt.c (tsubst_decl) [FIELD_DECL]: Set DECL_TEMPLATE_INFO
1412 if the decl has an NSDMI.
1413 * init.c (perform_member_init): Use it.
1414
1415 PR c++/50437
1416 * cp-tree.h (struct tree_lambda_expr): Add closure field.
1417 (LAMBDA_EXPR_CLOSURE): New.
1418 * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Likewise.
1419 * semantics.c (build_lambda_object): Use it instead of TREE_TYPE.
1420 (begin_lambda_type, lambda_function, add_capture): Likewise.
1421 (add_default_capture, lambda_expr_this_capture): Likewise.
1422
1423 2011-10-13 Diego Novillo <dnovillo@google.com>
1424
1425 * cp-tree.h (struct language_function): Rename in_function_try_handler
1426 to x_in_function_try_handler.
1427 Rename in_base_initializer to x_in_base_initializer.
1428 Update all users.
1429
1430 2011-10-13 Diego Novillo <dnovillo@google.com>
1431
1432 * class.c (sorted_fields_type_new): Factor out of ...
1433 (finish_struct_1): ... here.
1434
1435 2011-10-13 Jason Merrill <jason@redhat.com>
1436
1437 PR c++/50618
1438 * init.c (expand_aggr_init_1): Don't zero-initialize virtual
1439 bases of a base subobject.
1440
1441 2011-10-12 Paolo Carlini <paolo.carlini@oracle.com>
1442
1443 PR c++/50594
1444 * decl.c (cxx_init_decl_processing): Add
1445 __attribute__((externally_visible)) to operator new and
1446 operator delete library fn.
1447
1448 2011-10-11 Michael Meissner <meissner@linux.vnet.ibm.com>
1449
1450 * decl.c (duplicate_decls): Delete old interface with two parallel
1451 arrays to hold standard builtin declarations, and replace it with
1452 a function based interface that can support creating builtins on
1453 the fly in the future. Change all uses, and poison the old
1454 names. Make sure 0 is not a legitimate builtin index.
1455 * except.c (build_eh_type_type): Ditto.
1456 (choose_personality_routine): Ditto.
1457 * semantics.c (finish_omp_atomic): Ditto.
1458 (finish_omp_barrier): Ditto.
1459 (finish_omp_flush): Ditto.
1460 (finish_omp_taskwait): Ditto.
1461
1462 2011-10-11 Jason Merrill <jason@redhat.com>
1463
1464 PR c++/49855
1465 PR c++/49896
1466 * cp-tree.def (IMPLICIT_CONV_EXPR): New.
1467 * call.c (perform_implicit_conversion_flags): Build it
1468 instead of NOP_EXPR.
1469 * cp-objcp-common.c (cp_common_init_ts): It's typed.
1470 * cxx-pretty-print.c (pp_cxx_cast_expression): Handle it.
1471 (pp_cxx_expression): Likewise.
1472 * error.c (dump_expr): Likewise.
1473 * semantics.c (potential_constant_expression_1): Likewise.
1474 * tree.c (cp_tree_equal): Likewise.
1475 (cp_walk_subtrees): Likewise.
1476 * pt.c (iterative_hash_template_arg): Likewise.
1477 (for_each_template_parm_r): Likewise.
1478 (type_dependent_expression_p): Likewise.
1479 (tsubst_copy, tsubst_copy_and_build): Handle IMPLICIT_CONV_EXPR
1480 and CONVERT_EXPR.
1481 * cp-tree.h (IMPLICIT_CONV_EXPR_DIRECT_INIT): New.
1482
1483 2011-10-11 Paolo Carlini <paolo.carlini@oracle.com>
1484
1485 PR c++/50611
1486 * pt.c (tsubst_copy_and_build): If (complain & tf_error) is false
1487 do not call unqualified_name_lookup_error.
1488
1489 2011-10-10 Paolo Carlini <paolo.carlini@oracle.com>
1490
1491 PR c++/50660
1492 * call.c (conversion_null_warnings): Don't look through references.
1493
1494 2011-10-09 Paolo Carlini <paolo.carlini@oracle.com>
1495
1496 PR c++/38980
1497 * init.c (constant_value_1): Add bool parameter.
1498 (decl_constant_value_safe): Add.
1499 (integral_constant_value): Adjust.
1500 (decl_constant_value): Adjust.
1501 * cp-tree.h (decl_constant_value_safe): Declare.
1502 * typeck.c (decay_conversion): Use decl_constant_value_safe.
1503 * call.c (convert_like_real): Likewise.
1504
1505 2011-10-09 Jakub Jelinek <jakub@redhat.com>
1506 Diego Novillo <dnovillo@google.com>
1507
1508 * pt.c (reregister_specialization): Use htab_find instead of
1509 htab_find_slot with INSERT.
1510 (maybe_process_partial_specialization, lookup_template_class_1): Change
1511 slot variable type to void ** to avoid aliasing problems.
1512 (register_specialization): Likewise. Use slot != NULL instead of
1513 more expensive !optimize_specialization_lookup_p (tmpl) test.
1514
1515 2011-10-08 Paolo Carlini <paolo.carlini@oracle.com>
1516
1517 PR c++/34927
1518 * typeck2.c (abstract_virtuals_error_sfinae): Don't produce duplicate
1519 inform messages in case of cloned destructor.
1520
1521 2011-10-06 Jason Merrill <jason@redhat.com>
1522
1523 PR c++/39164
1524 * decl.c (grokfndecl): Diagnose redefinition of defaulted fn.
1525
1526 2011-10-02 Jason Merrill <jason@redhat.com>
1527
1528 * pt.c (tsubst_pack_expansion): Re-use ARGUMENT_PACK_SELECTs.
1529 Change unsubstituted_packs to bool.
1530
1531 * parser.c (cp_parser_range_for): Don't try to deduce from {}
1532 in a template.
1533
1534 PR c++/35722
1535 Implement N2555 (expanding pack expansion to fixed parm list)
1536 * pt.c (coerce_template_parms): Allow expanding a pack expansion
1537 to a fixed-length argument list.
1538 (unify_pack_expansion): Handle explicit args properly.
1539 (unify) [TREE_VEC]: Handle pack expansions here.
1540 [TYPE_ARGUMENT_PACK]: Not here.
1541 (tsubst_pack_expansion): Don't try to do partial substitution.
1542 (pack_deducible_p): New.
1543 (fn_type_unification): Use it.
1544 (find_parameter_packs_r): Take the TYPE_MAIN_VARIANT
1545 of a type parameter.
1546 (check_non_deducible_conversion): Split from type_unification_real.
1547 (unify_one_argument): Split from type_unification_real...
1548 (unify_pack_expansion): ...and here. Drop call_args_p parm.
1549 (type_unification_real, unify, more_specialized_fn): Adjust.
1550
1551 * class.c (fixed_type_or_null): Handle NSDMI.
1552 * method.c (walk_field_subobs): Disable NSDMI noexcept checking
1553 for now.
1554
1555 2011-09-30 Jason Merrill <jason@redhat.com>
1556
1557 * cp-tree.h (TREE_NEGATED_INT): Remove.
1558 * semantics.c (finish_unary_op_expr): Don't set it.
1559
1560 2011-09-30 Janis Johnson <janisjo@codesourcery.com>
1561
1562 PR c++/44473
1563 * mangle.c (write_type): Handle CV qualifiers for decimal classes.
1564
1565 2011-09-26 Andi Kleen <ak@linux.intel.com>
1566
1567 * repo.c (finish_repo): Use HOST_WIDE_INT_PRINT_HEX_PURE.
1568
1569 2011-09-28 Paolo Carlini <paolo.carlini@oracle.com>
1570
1571 PR c++/45278
1572 * typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
1573 comparison of pointer with zero.
1574
1575 2011-09-27 Paolo Carlini <paolo.carlini@oracle.com>
1576
1577 PR c++/31489
1578 * parser.c (cp_parser_elaborated_type_specifier): For RECORD_TYPE,
1579 set CLASSTYPE_DECLARED_CLASS.
1580
1581 2011-09-27 Jakub Jelinek <jakub@redhat.com>
1582
1583 * decl.c (duplicate_decls): If compatible stpcpy prototype
1584 is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
1585
1586 2011-09-26 Jason Merrill <jason@redhat.com>
1587
1588 PR c++/45012
1589 * pt.c (tsubst_copy_and_build) [CONST_DECL]: Don't pull out
1590 constant value if we're still in a template.
1591
1592 PR c++/46105
1593 * typeck.c (structural_comptypes): Ignore cv-quals on typename scope.
1594
1595 PR c++/50508
1596 * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
1597 rather than ==.
1598
1599 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
1600
1601 PR c++/45487
1602 * error.c (dump_template_bindings): Separate bindings with semicolons
1603 instead of commas.
1604
1605 2011-09-26 Jason Merrill <jason@redhat.com>
1606
1607 PR c++/50512
1608 * call.c (compare_ics): Only consider rvaluedness_matches_p
1609 if the target type is the same or it too differs in rvalueness.
1610
1611 PR c++/50523
1612 * call.c (implicit_conversion): Mask out inappropriate LOOKUP
1613 flags at the top of the function.
1614
1615 * pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI.
1616
1617 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
1618
1619 * pt.c (convert_nontype_argument): Handle NULLPTR_TYPE.
1620
1621 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
1622
1623 PR c++/26747
1624 * cp-gimplify.c (get_bc_label): Remove obsolete diagnostics.
1625
1626 2011-09-25 Jason Merrill <jason@redhat.com>
1627
1628 * parser.c (inject_this_parameter): Split out from
1629 cp_parser_late_return_type_opt.
1630 (cp_parser_class_specifier_1): Use it for NSDMIs.
1631 * tree.c (bot_replace): Replace NSDMI 'this' with real 'this'.
1632
1633 2011-09-24 Jason Merrill <jason@redhat.com>
1634
1635 * except.c (expr_noexcept_p): Split out from finish_noexcept_expr.
1636 * cp-tree.h: Declare it.
1637 * method.c (walk_field_subobs): Use it.
1638
1639 * init.c (perform_member_init): Instantiate NSDMI here.
1640 * pt.c (tsubst_decl) [FIELD_DECL]: Not here.
1641
1642 Handle deferred parsing of NSDMIs.
1643 * parser.h (cp_unparsed_functions_entry): Add nsdmis field.
1644 * parser.c (unparsed_nsdmis, cp_parser_save_nsdmi): New.
1645 (cp_parser_late_parse_one_default_arg): Split out from
1646 cp_parser_late_parsing_default_args.
1647 (cp_parser_late_parsing_nsdmi): New.
1648 (push_unparsed_function_queues): Set it.
1649 (cp_parser_parameter_declaration): Save the '=' token.
1650 (cp_parser_template_parameter): Likewise.
1651 (cp_parser_default_argument): Call cp_parser_initializer
1652 rather than cp_parser_initializer_clause.
1653 (cp_parser_class_specifier_1): Parse unparsed_nsdmis.
1654 (cp_parser_member_declaration): Handle nsdmis.
1655 * decl2.c (grokfield): Handle DEFAULT_ARG for a function.
1656
1657 Implement C++11 non-static data member initializers.
1658 * cp-tree.h (enum cpp_warn_str): Add CPP0X_NSDMI.
1659 * error.c (maybe_warn_cpp0x): Handle it.
1660 * call.c (convert_like_real) [ck_user]: Don't complain about
1661 using an explicit constructor for direct-initialization.
1662 * class.c (check_field_decl): Fix ancient typo.
1663 (check_field_decls): NSDMIs make the default ctor non-trivial.
1664 * decl.c (cp_finish_decl): Record NSDMI.
1665 (grokdeclarator): Allow NSDMI.
1666 * decl2.c (grokfield): Allow NSDMI. Correct LOOKUP flags.
1667 * init.c (perform_member_init): Use NSDMI.
1668 * method.c (walk_field_subobs): Check for NSDMI.
1669 * parser.c (cp_parser_member_declaration): Parse { } init.
1670 * semantics.c (register_constexpr_fundef): Don't talk about
1671 a return statement in a constexpr constructor.
1672 (cxx_eval_call_expression): Check DECL_INITIAL instead of
1673 DECL_SAVED_TREE.
1674
1675 2011-09-24 Paolo Carlini <paolo.carlini@oracle.com>
1676
1677 PR c++/44267
1678 * class.c (build_base_path): Add a tsubst_flags_t parameter.
1679 (convert_to_base): Adjust call.
1680 * typeck.c (build_class_member_access_expr,
1681 get_member_function_from_ptrfunc, build_static_cast_1): Likewise.
1682 * init.c (dfs_initialize_vtbl_ptrs, emit_mem_initializers): Likewise.
1683 * method.c (do_build_copy_constructor, do_build_copy_assign): Likewise.
1684 * rtti.c (build_dynamic_cast_1): Likewise.
1685 * typeck2.c (build_scoped_ref, build_m_component_ref): Likewise.
1686 * call.c (build_over_call, build_special_member_call): Likewise.
1687 * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
1688 build_up_reference): Likewise.
1689 * cp-tree.h (build_base_path): Adjust declaration.
1690
1691 2011-09-23 Jason Merrill <jason@redhat.com>
1692
1693 Core 253 - allow const objects with no initializer or
1694 user-provided default constructor if the defaulted constructor
1695 initializes all the subobjects.
1696 PR c++/20039
1697 PR c++/42844
1698 * class.c (default_init_uninitialized_part): New.
1699 * cp-tree.h: Declare it.
1700 * decl.c (check_for_uninitialized_const_var): Use it.
1701 * init.c (perform_member_init): Likewise.
1702 (build_new_1): Likewise.
1703 * method.c (walk_field_subobs): Likewise.
1704
1705 2011-09-23 Paolo Carlini <paolo.carlini@oracle.com>
1706
1707 PR c++/50258
1708 * decl.c (check_static_variable_definition): Allow in-class
1709 initialization of static data member of non-integral type in
1710 permissive mode.
1711
1712 2011-09-22 Paolo Carlini <paolo.carlini@oracle.com>
1713
1714 PR c++/50491
1715 * semantics.c (potential_constant_expression_1): Handle USING_DECL.
1716
1717 2011-09-22 Paolo Carlini <paolo.carlini@oracle.com>
1718
1719 PR c++/50371
1720 * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE.
1721
1722 2011-09-22 Jonathan Wakely <jwakely.gcc@gmail.com>
1723 Paolo Carlini <paolo.carlini@oracle.com>
1724
1725 PR c++/50344
1726 * friend.c (make_friend_class): cv-qualification is ok in a
1727 friend declaration.
1728
1729 2011-09-21 Paolo Carlini <paolo.carlini@oracle.com>
1730
1731 PR c++/50454
1732 * decl.c (grokdeclarator): Consistently handle both __int128
1733 and unsigned __int128 with -pedantic; suppress diagnostic in
1734 system headers.
1735
1736 2011-09-20 Jason Merrill <jason@redhat.com>
1737
1738 * cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New.
1739 (DECL_GENERATED_P): New.
1740 * class.c (finalize_literal_type_property): Use them.
1741 * semantics.c (is_instantiation_of_constexpr): Likewise.
1742 (register_constexpr_fundef): Likewise.
1743
1744 * call.c (convert_default_arg): Avoid redundant copy.
1745 * tree.c (bot_manip): Copy everything.
1746
1747 2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
1748
1749 * call.c (build_new_method_call_1): Use non-virtual lookup
1750 for final virtual functions.
1751
1752 2011-09-16 Jason Merrill <jason@redhat.com>
1753
1754 PR c++/50424
1755 * call.c (set_flags_from_callee): Split out from build_call_a.
1756 * cp-tree.h: Declare it.
1757 * tree.c (bot_manip): Call it.
1758
1759 2011-09-15 Jason Merrill <jason@redhat.com>
1760
1761 PR c++/50365
1762 * parser.c (cp_parser_late_return_type_opt): Check quals parameter
1763 for clearing current_class_ptr, too.
1764
1765 2011-09-14 Diego Novillo <dnovillo@google.com>
1766
1767 * name-lookup.c (lookup_arg_dependent): Use conditional
1768 timevars.
1769 * decl.c (xref_tag): Likewise.
1770
1771 2011-09-14 Paolo Carlini <paolo.carlini@oracle.com>
1772
1773 PR c++/50391
1774 * pt.c (regenerate_decl_from_template): Don't pass an error_mark_node
1775 to build_exception_variant.
1776
1777 2011-09-13 Dodji Seketeli <dodji@redhat.com>
1778
1779 PR c++/48320
1780 * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX
1781 nodes. Add a comment.
1782 (arg_from_parm_pack_p): New static function, factorized out from
1783 tsubst_pack_expansion and extended to support non-type parameter
1784 packs represented with TEMPLATE_PARM_INDEX nodes.
1785 (tsubst_pack_expansion): Use arg_from_parm_pack_p.
1786
1787 2011-09-12 Jason Merrill <jason@redhat.com>
1788
1789 * pt.c (type_unification_real): Fix handling of DEDUCE_CONV
1790 with no deducible template parameters.
1791 * call.c (rejection_reason_code): Add rr_template_conversion.
1792 (print_z_candidate): Handle it.
1793 (template_conversion_rejection): New.
1794 (build_user_type_conversion_1): Use it.
1795
1796 * call.c (merge_conversion_sequences): Set bad_p and user_conv_p
1797 on all of the second conversion sequence.
1798 (build_user_type_conversion_1): Set bad_p on the ck_user conv.
1799 (convert_like_real): Handle bad ck_ref_bind with user_conv_p in the
1800 first section. Fix loop logic.
1801 (initialize_reference): Call convert_like for diagnostics when
1802 we have a (bad) conversion.
1803
1804 * call.c (convert_class_to_reference)
1805 (convert_class_to_reference_1): Remove.
1806 (reference_binding): Use build_user_type_conversion_1 instead.
1807
1808 * call.c (initialize_reference): Add flags parm.
1809 * decl.c (grok_reference_init): Likewise.
1810 (check_initializer): Pass it.
1811 * typeck.c (convert_for_initialization): Likewise.
1812 * cp-tree.h: Adjust.
1813
1814 * cp-tree.h (LOOKUP_NO_RVAL_BIND): New.
1815 * call.c (conditional_conversion): Use it.
1816 (reference_binding): Fix handling of xvalues.
1817
1818 2011-09-09 Jason Merrill <jason@redhat.com>
1819
1820 * call.c (implicit_conversion): Check BRACE_ENCLOSED_INITIALIZER_P
1821 before forcing instantiation.
1822
1823 2011-09-08 Paolo Carlini <paolo.carlini@oracle.com>
1824
1825 PR c++/50324
1826 * typeck2.c (digest_init_r): Call complete_type_or_maybe_complain
1827 instead of complete_type_or_else.
1828
1829 2011-09-08 Dodji Seketeli <dodji@redhat.com>
1830
1831 PR c++/33255 - Support -Wunused-local-typedefs warning
1832 * name-lookup.c (pushdecl_maybe_friend_1): Use the new
1833 record_locally_defined_typedef.
1834 * decl.c (finish_function): Use the new
1835 maybe_warn_unused_local_typedefs.
1836 (grokfield): Use the new record_locally_defined_typedef.
1837 * parser.c (lookup_name): Use the new maybe_record_typedef_use.
1838
1839 2011-09-07 Paolo Carlini <paolo.carlini@oracle.com>
1840
1841 PR c++/50309
1842 * decl.c (grokdeclarator): Check u.function.exception_specification
1843 for error_mark_node.
1844
1845 2011-09-07 Jason Merrill <jason@redhat.com>
1846
1847 PR c++/50298
1848 * parser.c (cp_parser_member_declaration): Don't require a constant
1849 rvalue here in C++0x.
1850
1851 * pt.c (type_unification_real): Correct complain arg for tsubsting
1852 default template args.
1853
1854 * pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting.
1855
1856 2011-09-06 Jason Merrill <jason@redhat.com>
1857
1858 PR c++/50296
1859 * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn.
1860 (cx_check_missing_mem_inits): Handle bases and empty trivial members.
1861 (validate_constexpr_fundecl): Remove.
1862 * decl.c (start_preparsed_function): Don't call it.
1863 * cp-tree.h: Don't declare it.
1864
1865 2011-09-04 Jason Merrill <jason@redhat.com>
1866
1867 PR c++/49267
1868 * call.c (reference_binding): Don't set is_lvalue for an rvalue
1869 reference rfrom.
1870
1871 PR c++/49267
1872 PR c++/49458
1873 DR 1328
1874 * call.c (reference_binding): Set rvaluedness_matches_p properly
1875 for reference to function conversion ops.
1876 (compare_ics): Adjust.
1877
1878 * class.c (trivial_default_constructor_is_constexpr): Rename from
1879 synthesized_default_constructor_is_constexpr.
1880 (type_has_constexpr_default_constructor): Adjust.
1881 (add_implicitly_declared_members): Call it instead.
1882 (explain_non_literal_class): Explain about non-constexpr default ctor.
1883 * cp-tree.h: Adjust.
1884 * method.c (synthesized_method_walk): Adjust.
1885 * semantics.c (explain_invalid_constexpr_fn): Handle defaulted
1886 functions, too.
1887
1888 PR c++/50248
1889 Core 1358
1890 * init.c (perform_member_init): Don't diagnose missing inits here.
1891 (emit_mem_initializers): Or here.
1892 * method.c (process_subob_fn): Don't instantiate constexpr ctors.
1893 * semantics.c (cx_check_missing_mem_inits): New.
1894 (explain_invalid_constexpr_fn): Call it.
1895 (register_constexpr_fundef): Likewise. Leave
1896 DECL_DECLARED_CONSTEXPR_P set when the body is unsuitable.
1897 (cxx_eval_call_expression): Adjust diagnostics.
1898 (cxx_eval_constant_expression): Catch use of 'this' in a constructor.
1899
1900 2011-08-30 Jason Merrill <jason@redhat.com>
1901
1902 PR c++/50084
1903 * cp-tree.h (cp_decl_specifier_seq): Rename user_defined_type_p
1904 to type_definition_p.
1905 * parser.c (cp_parser_set_decl_spec_type): Likewise.
1906 * decl.c (grokdeclarator): Check it.
1907
1908 PR c++/50089
1909 * semantics.c (finish_id_expression): Use
1910 current_nonlambda_class_type for qualified-ids.
1911
1912 PR c++/50114
1913 * decl.c (poplevel): Disable for scope compatibility hack
1914 in C++11 mode.
1915
1916 PR c++/50220
1917 * semantics.c (add_capture): Call complete_type for copy.
1918
1919 PR c++/50234
1920 * semantics.c (cxx_eval_component_reference): Handle
1921 value-initialization for omitted initializers.
1922
1923 2011-08-29 Jason Merrill <jason@redhat.com>
1924
1925 PR c++/50224
1926 * semantics.c (finish_id_expression): Mark captured variables used.
1927
1928 2011-08-29 Jakub Jelinek <jakub@redhat.com>
1929 Jason Merrill <jason@redhat.com>
1930
1931 PR c++/50207
1932 * class.c (finish_struct_1): Complain if the first field is
1933 artificial.
1934
1935 2011-08-29 Jason Merrill <jason@redhat.com>
1936
1937 PR c++/50209
1938 Core DR 994
1939 * parser.c (cp_parser_default_argument): Use
1940 cp_parser_initializer_clause.
1941 (cp_parser_late_parsing_default_args): Likewise.
1942
1943 2011-08-26 Jason Merrill <jason@redhat.com>
1944
1945 Core DR 342
1946 PR c++/48582
1947 * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value
1948 is valid in C++11.
1949 (convert_nontype_argument): Likewise. Implicitly convert nullptr
1950 and do constant folding.
1951 * mangle.c (write_template_arg_literal): Mangle null member
1952 pointer values as 0.
1953 * call.c (null_member_pointer_value_p): New.
1954 * cp-tree.h: Declare it.
1955
1956 2011-08-25 Jason Merrill <jason@redhat.com>
1957
1958 * call.c (convert_like_real): Remove redundant complain checks.
1959
1960 PR c++/50157
1961 * call.c (convert_like_real): Exit early if bad and !tf_error.
1962
1963 2011-08-23 Jason Merrill <jason@redhat.com>
1964
1965 * typeck2.c (build_functional_cast): Don't try to avoid calling
1966 build_value_init.
1967 * pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags.
1968
1969 2011-08-23 Jason Merrill <jason@redhat.com>
1970
1971 PR c++/49045
1972 Core 1321
1973 * tree.c (dependent_name): New.
1974 (cp_tree_equal): Two calls with the same dependent name are
1975 equivalent even if the overload sets are different.
1976
1977 2011-08-23 Jason Merrill <jason@redhat.com>
1978
1979 * tree.c (build_target_expr): Set TREE_CONSTANT on
1980 literal TARGET_EXPR if the value is constant.
1981 * typeck2.c (build_functional_cast): Don't set it here.
1982
1983 2011-08-23 Jason Merrill <jason@redhat.com>
1984
1985 Core 903 (partial)
1986 * call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
1987
1988 2011-08-23 Jason Merrill <jason@redhat.com>
1989
1990 Core 975
1991 * decl.c (cxx_init_decl_processing): Initialize
1992 dependent_lambda_return_type_node.
1993 * cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE.
1994 (dependent_lambda_return_type_node): Define.
1995 (DECLTYPE_FOR_LAMBDA_RETURN): Remove.
1996 * semantics.c (lambda_return_type): Handle overloaded function.
1997 Use dependent_lambda_return_type_node instead of
1998 DECLTYPE_FOR_LAMBDA_RETURN.
1999 (apply_lambda_return_type): Don't check dependent_type_p.
2000 * pt.c (tsubst_copy_and_build): Handle lambda return type deduction.
2001 (instantiate_class_template_1): Likewise.
2002 (tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN.
2003 * mangle.c (write_type): Likewise.
2004 * typeck.c (structural_comptypes): Likewise.
2005 (check_return_expr): Handle dependent_lambda_return_type_node.
2006
2007 2011-08-23 Jason Merrill <jason@redhat.com>
2008
2009 PR c++/50024
2010 * semantics.c (maybe_constant_value): Don't try to fold { }.
2011 * pt.c (build_non_dependent_expr): Don't wrap { }.
2012 * init.c (build_value_init): Allow scalar value-init in templates.
2013
2014 2011-08-23 Jason Merrill <jason@redhat.com>
2015
2016 * semantics.c (potential_constant_expression_1): Allow 'this'.
2017
2018 2011-08-23 Jakub Jelinek <jakub@redhat.com>
2019
2020 PR c++/50158
2021 * typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs
2022 if it has side-effects and needs to be preevaluated.
2023
2024 2011-08-23 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
2025
2026 PR c++/50055
2027 * except.c (begin_eh_spec_block): Build EH_SPEC block on the
2028 same line as the function.
2029
2030 2011-08-23 Jakub Jelinek <jakub@redhat.com>
2031
2032 PR c++/46862
2033 * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
2034 which doesn't have any fields, clear it and diagnose.
2035
2036 2011-08-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2037 Marc Glisse <marc.glisse@normalesup.org>
2038
2039 PR libstdc++-v3/1773
2040 * mangle.c (decl_mangling_context): Call
2041 targetm.cxx.decl_mangling_context.
2042 (write_unscoped_name): Use decl_mangling_context.
2043
2044 2011-08-18 Dodji Seketeli <dodji@redhat.com>
2045
2046 PR c++/45625
2047 * pt.c (parameter_of_template_p): Handle comparison with DECLs of
2048 template parameters as created by process_template_parm.
2049
2050 2011-08-16 Jason Merrill <jason@redhat.com>
2051
2052 PR c++/50086
2053 * pt.c (unify_pack_expansion): Correct overloaded unification
2054 logic.
2055
2056 * pt.c (instantiate_class_template_1): If DECL_PRESERVE_P is set
2057 on a member function or static data member, call mark_used.
2058
2059 PR c++/50054
2060 * typeck2.c (cxx_incomplete_type_diagnostic): Handle
2061 init_list_type_node.
2062
2063 2011-08-13 Jason Merrill <jason@redhat.com>
2064
2065 PR c++/50075
2066 * name-lookup.c (local_bindings_p): New.
2067 * name-lookup.h: Declare it.
2068 * lex.c (unqualified_name_lookup_error): Use it.
2069
2070 PR c++/50059
2071 * error.c (dump_expr): Handle MODIFY_EXPR properly.
2072
2073 * decl.c (grok_reference_init): Handle constexpr here.
2074 * call.c (initialize_reference): Not here.
2075
2076 2011-08-12 David Li <davidxl@google.com>
2077
2078 * class.c (update_vtable_entry_for_fn): Set
2079 LOST_PRIMARY bit properly.
2080
2081 2011-08-12 Jason Merrill <jason@redhat.com>
2082
2083 PR c++/50034
2084 * call.c (convert_arg_to_ellipsis): force_rvalue only in
2085 potentially evaluated context.
2086
2087 2011-08-12 Richard Guenther <rguenther@suse.de>
2088
2089 * call.c (build_over_call): Instead of memcpy use an
2090 assignment of two MEM_REFs.
2091
2092 2011-08-11 Romain Geissler <romain.geissler@gmail.com>
2093 Brian Hackett <bhackett1024@gmail.com>
2094
2095 * decl.c (cp_finish_decl): Invoke callbacks on finish_decl event.
2096
2097 2011-08-10 Richard Guenther <rguenther@suse.de>
2098
2099 * call.c (build_over_call): Call memcpy unconditionally.
2100
2101 2011-08-08 Jason Merrill <jason@redhat.com>
2102
2103 PR c++/50020
2104 * semantics.c (finish_call_expr): Don't look at 'this' if we
2105 had an explicit object argument.
2106
2107 PR c++/50011
2108 * typeck2.c (check_narrowing): Fix integer logic.
2109
2110 2011-08-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2111
2112 * Make-lang.in (g++$(exeext)): Add $(EXTRA_GCC_LIBS).
2113
2114 2011-08-05 Jason Merrill <jason@redhat.com>
2115
2116 PR c++/48993
2117 * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry
2118 on 'this' in a constructor.
2119
2120 PR c++/49921
2121 * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.
2122
2123 PR c++/49669
2124 * init.c (perform_member_init): Handle invalid array initializer.
2125
2126 PR c++/49988
2127 * semantics.c (cxx_eval_array_reference): Handle failure to
2128 reduce the array operand to something we can work with.
2129
2130 2011-08-05 Gabriel Charette <gchare@google.com>
2131
2132 * decl.c (finish_function): Remove unecessary line 0 hack.
2133
2134 2011-08-05 Jason Merrill <jason@redhat.com>
2135
2136 PR c++/47453
2137 * typeck.c (build_x_compound_expr_from_list): Also complain
2138 about ({...}).
2139
2140 PR c++/49812
2141 * typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals.
2142
2143 PR c++/49983
2144 * parser.c (cp_parser_range_for): Only do auto deduction in
2145 template if the range is non-dependent.
2146
2147 * init.c (perform_member_init): Always build_aggr_init
2148 for a class member with an explicit mem-initializer.
2149
2150 * pt.c (unify) [TEMPLATE_TYPE_PARM]: Allow VLA for C++0x 'auto'.
2151
2152 2011-08-04 Jakub Jelinek <jakub@redhat.com>
2153
2154 PR middle-end/49905
2155 * decl.c (cxx_init_decl_processing): Add alloc_size (1) attribute
2156 for operator new and operator new []. Call init_attributes.
2157
2158 2011-08-02 Jason Merrill <jason@redhat.com>
2159
2160 PR c++/43886
2161 * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p.
2162
2163 PR c++/49577
2164 * typeck2.c (check_narrowing): Check unsigned mismatch.
2165 * semantics.c (finish_compound_literal): check_narrowing.
2166
2167 PR c++/49593
2168 * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
2169
2170 PR c++/49803
2171 * init.c (sort_mem_initializers): Initialize uses_unions_p here.
2172 (build_field_list): Not here.
2173
2174 PR c++/49834
2175 * parser.c (build_range_temp): Split out from...
2176 (cp_convert_range_for): ...here.
2177 (do_range_for_auto_deduction): New.
2178 (cp_parser_range_for): Use it.
2179
2180 2011-08-02 Jakub Jelinek <jakub@redhat.com>
2181
2182 * cp-tree.h (finish_omp_atomic): Adjust prototype.
2183 (cxx_omp_const_qual_no_mutable): New prototype.
2184 (finish_omp_taskyield): New prototype.
2185 * parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle
2186 parsing OpenMP 3.1 atomics. Adjust finish_omp_atomic caller.
2187 (cp_parser_omp_clause_name): Handle final and mergeable clauses.
2188 (cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New
2189 functions.
2190 (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
2191 and PRAGMA_OMP_CLAUSE_MERGEABLE.
2192 (OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
2193 (cp_parser_omp_taskyield): New function.
2194 (cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
2195 (cp_parser_omp_clause_reduction): Handle min and max.
2196 * pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics.
2197 (tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and
2198 OMP_CLAUSE_MERGEABLE.
2199 * semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
2200 arguments. Handle OpenMP 3.1 atomics. Adjust c_finish_omp_atomic
2201 caller.
2202 (finish_omp_clauses): Don't complain about const qualified
2203 predetermined vars and static data members in firstprivate clause.
2204 Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR
2205 and MAX_EXPR.
2206 (finish_omp_taskyield): New function.
2207 * cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function.
2208 (cxx_omp_predetermined_sharing): Use it.
2209
2210 2011-08-02 Jason Merrill <jason@redhat.com>
2211
2212 * call.c (build_call_a): Also check at_function_scope_p.
2213
2214 2011-08-01 Jason Merrill <jason@redhat.com>
2215
2216 PR c++/49932
2217 * mangle.c (write_prefix): Handle decltype.
2218
2219 PR c++/49924
2220 * semantics.c (cxx_eval_vec_init_1): Fix logic.
2221
2222 PR c++/49813
2223 * semantics.c (potential_constant_expression_1): Allow any builtin.
2224 (morally_constexpr_builtin_function_p): Remove.
2225
2226 2011-07-29 Jason Merrill <jason@redhat.com>
2227
2228 PR c++/49867
2229 * parser.c (cp_parser_lambda_expression): Also clear in_statement
2230 and in_switch_statement_p.
2231 (cp_parser_class_specifier): Likewise.
2232
2233 2011-07-28 Jason Merrill <jason@redhat.com>
2234
2235 PR c++/49808
2236 * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference.
2237 (convert_nontype_argument, tsubst_template_arg): Handle its output.
2238
2239 2011-07-28 Paolo Carlini <paolo.carlini@oracle.com>
2240
2241 PR c++/49813
2242 * semantics.c (potential_constant_expression_1): Handle FMA_EXPR.
2243
2244 2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
2245
2246 * pt.c (build_template_decl): Copy the function_decl's
2247 source location to the new template_decl.
2248
2249 2011-07-26 Paolo Carlini <paolo.carlini@oracle.com>
2250
2251 PR c++/49776
2252 * typeck.c (cp_build_modify_expr): Check digest_init return value
2253 for error_mark_node.
2254
2255 2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
2256
2257 PR bootstrap/49845
2258 * parser.c (cp_parser_perform_range_for_lookup): Always assign *being
2259 and *end before returning.
2260
2261 2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
2262
2263 PR c++/49838
2264 * parser.c (cp_parser_perform_range_for_lookup): Early return if
2265 error_operand_p (range).
2266
2267 2011-07-23 Jason Merrill <jason@redhat.com>
2268
2269 PR c++/49823
2270 * parser.c (cp_parser_qualifying_entity): Handle templates.
2271
2272 2011-07-22 Jason Merrill <jason@redhat.com>
2273
2274 PR c++/49793
2275 * typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
2276 Make conditional on -Wnarrowing.
2277
2278 2011-07-22 Ville Voutilainen <ville.voutilainen@gmail.com>
2279
2280 Warn about the use of final/override in non-c++0x mode, and
2281 add __final for non-c++0x mode.
2282 * cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS.
2283 * error.c (maybe_warn_cpp0x): Adjust.
2284 * parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add
2285 '__final' as a non-c++0x alternative for 'final'.
2286
2287 2011-07-22 Jason Merrill <jason@redhat.com>
2288 Mark Glisse <marc.glisse@normalesup.org>
2289
2290 PR c++/30112
2291 * decl.c (cp_finish_decl): Apply pragma redefine_extname in
2292 other namespaces as well.
2293 * name-lookup.c (c_linkage_bindings): Define.
2294 (lookup_extern_c_fun_in_all_ns): Rename from
2295 lookup_extern_c_fun_binding_in_all_ns. Return tree.
2296 (pushdecl_maybe_friend_1): Adjust. Copy DECL_ASSEMBLER_NAME.
2297
2298 2011-07-20 Jason Merrill <jason@redhat.com>
2299
2300 * parser.c (cp_parser_initializer_list): Handle C99 .id= and [N]=
2301 designated initializer syntax.
2302 * decl.c (check_array_designated_initializer): Add index parm.
2303 (maybe_deduce_size_from_array_init): Pass it.
2304 (reshape_init_array_1): Likewise.
2305
2306 PR c++/6709 (DR 743)
2307 PR c++/42603 (DR 950)
2308 * parser.c (token_is_decltype, cp_lexer_next_token_is_decltype): New.
2309 (cp_parser_nested_name_specifier_opt): Allow decltype.
2310 (cp_parser_qualifying_entity): Likewise.
2311 (cp_parser_decltype): Replace source tokens with CPP_DECLTYPE.
2312 (cp_parser_simple_type_specifier): Handle decltype as scope.
2313 (cp_parser_base_specifier): Allow decltype.
2314 (cp_parser_base_clause): Don't crash on null base.
2315 * parser.h (CPP_KEYWORD, CPP_TEMPLATE_ID): Move to c-common.h.
2316 (CPP_NESTED_NAME_SPECIFIER, N_CP_TTYPES): Likewise.
2317
2318 2011-07-19 Jason Merrill <jason@redhat.com>
2319
2320 PR c++/49785
2321 * pt.c (coerce_template_parms): Handle non-pack after pack.
2322
2323 2011-07-19 Richard Guenther <rguenther@suse.de>
2324
2325 * call.c (build_special_member_call): Use fold_build_pointer_plus.
2326 * class.c (build_base_path): Likewise.
2327 (convert_to_base_statically): Likewise.
2328 (dfs_accumulate_vtbl_inits): Likewise.
2329 * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
2330 * except.c (expand_start_catch_block): Likewise.
2331 * init.c (expand_virtual_init): Likewise.
2332 (build_new_1): Likewise.
2333 (build_vec_delete_1): Likewise.
2334 (build_vec_delete): Likewise.
2335 * rtti.c (build_headof): Likewise.
2336 (tinfo_base_init): Likewise.
2337 * typeck.c (get_member_function_from_ptrfunc): Likewise.
2338 (cp_build_addr_expr_1): Likewise.
2339 * typeck2.c (build_m_component_ref): Likewise.
2340
2341 2011-07-18 Martin Jambor <mjambor@suse.cz>
2342
2343 * parser.c (cp_parser_parameter_declaration_list): Initialize
2344 parenthesized_p.
2345
2346 2011-07-16 Jason Merrill <jason@redhat.com>
2347
2348 * pt.c (tinst_level_tick, last_template_error_tick): Replace with
2349 last_error_tinst_level.
2350 (push_tinst_level, pop_tinst_level): Adjust.
2351 (problematic_instantiation_changed): Adjust.
2352 (record_last_problematic_instantiation): Adjust.
2353 * error.c (cp_print_error_function): Don't print
2354 current_function_decl if we're in a template instantiation context.
2355 (print_instantiation_full_context): Always print first line.
2356
2357 2011-07-16 Nathan Froyd <froydnj@codesourcery.com>
2358 Jason Merrill <jason@redhat.com>
2359
2360 PR c++/45329
2361 PR c++/48934
2362 * cp-tree.h (fn_type_unification): Add `bool' parameter.
2363 * pt.c (enum template_base_result): Define.
2364 (unify_success, unify_unknown): Define.
2365 (unify_parameter_deduction_failure): Define.
2366 (unify_invalid, unify_cv_qual_mismatch, unify_type_mismatch): Define.
2367 (unify_parameter_pack_mismatch): Define.
2368 (unify_parameter_pack_inconsistent): Define.
2369 (unify_ptrmem_cst_mismatch, unify_vla_arg): Define.
2370 (unify_expression_unequal, unify_inconsistency): Define.
2371 (unify_method_type_error, unify_arity): Likewise.
2372 (unify_too_many_parameters, unify_too_few_parameters): Define.
2373 (unify_arg_conversion, unify_no_common_base): Define.
2374 (unify_illformed_ptrmem_cst_expr): Define.
2375 (unify_substitution_failure): Define.
2376 (unify_inconsistent_template_template_parameters): Define.
2377 (unify_template_deduction_failure): Define.
2378 (unify_template_argument_mismatch): Define.
2379 (unify_overload_resolution_failure): Define.
2380 (comp_template_args_with_info): New function, split out from...
2381 (comp_template_args): ...here. Call it.
2382 (deduction_tsubst_fntype): Add `complain' parameter'. Pass it
2383 to tsubst.
2384 (unify): Add `explain_p' parameter. Pass to all relevant calls.
2385 Call above status functions when appropriate.
2386 (resolve_overloaded_unification, try_one_overload): Likewise.
2387 (type_unification, type_unification_real): Likewise.
2388 (unify_pack_expansion): Likewise.
2389 (get_template_base, try_class_unification): Likewise.
2390 (get_bindings, more_specialized_fn): Pass false to unification
2391 calls.
2392 (get_class_bindings, do_auto_deduction): Likewise.
2393 (convert_nontype_argument): Likewise.
2394 (fn_type_unification): Likewise. Pass tf_warning_or_error if
2395 explain_p.
2396 (get_template_base): Add `explain_p' parameter and pass it to
2397 try_class_unification. Return an enum template_base_result.
2398 * class.c (resolve_address_of_overloaded_function): Pass false to
2399 fn_type_unification.
2400 * call.c (enum rejection_reason_code): Add new codes.
2401 (struct rejection_reason): Add template_unification field.
2402 Add template_instantiation field.
2403 (template_unification_rejection): Define.
2404 (template_unification_error_rejection): Define.
2405 (template_instantiation_rejection): Define.
2406 (invalid_copy_with_fn_template_rejection): Define.
2407 (add_template_candidate): Pass false to unify.
2408 Provide more rejection reasons when possible.
2409 (print_template_unification_rejection): Define.
2410 (print_arity_rejection): Define, split out from...
2411 (print_z_candidate): ...here. Add cases for new rejection
2412 reasons.
2413
2414 2011-07-15 Jason Merrill <jason@redhat.com>
2415
2416 * Make-lang.in (check-g++-strict-gc): New.
2417 (cp/except.o): Depend on gt-cp-except.h
2418 * except.c: Include gt-cp-except.h.
2419 * config-lang.in (gtfiles): Add cp/except.c.
2420 * decl2.c (mark_used): Adjust constexpr condition, set
2421 function_depth around template instantiation.
2422 * parser.c (cp_parser_lambda_body): Set function_depth.
2423 * semantics.c (maybe_add_lambda_conv_op): Likewise.
2424
2425 PR testsuite/49741
2426 * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts.
2427
2428 2011-07-13 Jason Merrill <jason@redhat.com>
2429
2430 * Make-lang.in (check-c++0x): New.
2431
2432 2011-07-13 Richard Sandiford <richard.sandiford@linaro.org>
2433
2434 * typeck2.c (split_nonconstant_init_1): Pass the initializer directly,
2435 rather than a pointer to it. Return true if the whole of the value
2436 was initialized by the generated statements. Use
2437 complete_ctor_at_level_p instead of count_type_elements.
2438
2439 2011-07-12 Diego Novillo <dnovillo@google.com>
2440
2441 * name-lookup.h (cp_binding_level): Rename from cxx_scope.
2442 Update all users.
2443 (struct cp_binding_level): Fix indentation.
2444
2445 2011-07-11 Jason Merrill <jason@redhat.com>
2446
2447 PR c++/49672
2448 * pt.c (extract_fnparm_pack): Split out from...
2449 (make_fnparm_pack): ...here.
2450 (instantiate_decl): Handle non-pack parms after a pack.
2451 * semantics.c (maybe_add_lambda_conv_op): Don't in a template.
2452
2453 * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
2454
2455 PR c++/44609
2456 * cp-tree.h (struct tinst_level): Add errors field.
2457 * pt.c (neglectable_inst_p, limit_bad_template_recurson): New.
2458 (push_tinst_level): Don't start another decl in that case.
2459 (reopen_tinst_level): Adjust errors field.
2460 * decl2.c (cp_write_global_declarations): Don't complain about
2461 undefined inline if its template was defined.
2462 * mangle.c (mangle_decl_string): Handle failure from push_tinst_level.
2463
2464 2011-07-10 Jason Merrill <jason@redhat.com>
2465
2466 PR c++/49691
2467 * parser.c (cp_parser_late_return_type_opt): Check quals parameter
2468 rather than current_class_type to determine whether to set 'this'.
2469 (cp_parser_direct_declarator): Pass -1 to quals if member_p is false.
2470 (cp_parser_init_declarator): Pass down member_p.
2471
2472 2011-07-09 Jason Merrill <jason@redhat.com>
2473
2474 * tree.c (build_vec_init_elt): Strip TARGET_EXPR.
2475
2476 2011-07-08 Jason Merrill <jason@redhat.com>
2477
2478 PR c++/45437
2479 * typeck.c (cp_build_modify_expr): Preevaluate RHS.
2480
2481 * method.c (use_thunk): Use cgraph_add_to_same_comdat_group.
2482 * optimize.c (maybe_clone_body): Likewise.
2483 * semantics.c (maybe_add_lambda_conv_op): Likewise.
2484
2485 PR c++/45603
2486 * decl.c (expand_static_init): Don't get confused by user
2487 declaration of __cxa_guard_acquire.
2488
2489 * typeck.c (cp_apply_type_quals_to_decl): Don't check
2490 COMPLETE_TYPE_P either.
2491
2492 PR c++/49673
2493 * typeck.c (cp_apply_type_quals_to_decl): Don't check
2494 TYPE_NEEDS_CONSTRUCTING.
2495
2496 2011-07-07 Jason Merrill <jason@redhat.com>
2497
2498 PR c++/49663
2499 * pt.c (push_deduction_access_scope): Preserve
2500 processing_template_decl across push_to_top_level.
2501 And revert:
2502 * class.c (pushclass): Accept NULL argument.
2503 (popclass): Deal with popping null class.
2504 * pt.c (push_access_scope, pop_access_scope): Use them rather than
2505 push_to_top_level/pop_from_top_level.
2506 * name-lookup.c (lookup_name_real_1): Check current_class_type.
2507
2508 2011-07-07 Jakub Jelinek <jakub@redhat.com>
2509
2510 PR c/49644
2511 * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
2512 one non-complex and one complex argument, call save_expr on both
2513 operands.
2514
2515 2011-07-06 Jason Merrill <jason@redhat.com>
2516
2517 PR c++/49353
2518 * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL
2519 on kept inlines.
2520
2521 PR c++/49568
2522 * method.c (make_thunk, use_thunk): Copy DECL_COMDAT.
2523
2524 2011-07-05 Jason Merrill <jason@redhat.com>
2525
2526 PR c++/48157
2527 * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in
2528 partial instantiation.
2529
2530 PR c++/49598
2531 * semantics.c (finish_id_expression): convert_from_reference.
2532
2533 2011-07-05 Richard Guenther <rguenther@suse.de>
2534
2535 * decl.c (cxx_init_decl_processing): Defer building common
2536 tree nodes to c_common_nodes_and_builtins.
2537
2538 2011-07-04 Jason Merrill <jason@redhat.com>
2539
2540 DR 1207
2541 PR c++/49589
2542 * mangle.c (write_expression): Handle 'this'.
2543 * parser.c (cp_parser_postfix_dot_deref_expression): Allow
2544 incomplete *this.
2545 * semantics.c (potential_constant_expression_1): Check that
2546 DECL_CONTEXT is set on 'this'.
2547
2548 * error.c (dump_template_bindings): Don't print typenames
2549 for a partial instantiation.
2550 (dump_function_decl): If we aren't printing function arguments,
2551 print template arguments as <args> rather than [with ...].
2552 (dump_expr): Don't print return type or template header.
2553 [BASELINK]: Use BASELINK_FUNCTIONS rather than get_first_fn.
2554 * pt.c (dependent_template_arg_p): Handle null arg.
2555
2556 * error.c (type_to_string): Avoid redundant akas.
2557
2558 2011-07-01 Jonathan Wakely <jwakely.gcc@gmail.com>
2559
2560 PR c++/49605
2561 * init.c (build_delete): Only warn for sfk_deleting_destructor.
2562
2563 2011-07-01 Jakub Jelinek <jakub@redhat.com>
2564
2565 * Make-lang.in (cp/decl.o): Depend on pointer-set.h.
2566 (cp/class.o): Likewise.
2567 (cp/error.o): Likewise.
2568 (cp/name-lookup.o): Likewise.
2569 (cp/decl2.o): Likewise. Don't depend on $(POINTER_SET_H).
2570
2571 2011-07-01 Jason Merrill <jason@redhat.com>
2572
2573 PR c++/48261
2574 * pt.c (lookup_template_function): Handle non-function.
2575
2576 PR c++/48593
2577 * pt.c (tsubst_qualified_id): Check PTRMEM_OK_P.
2578 * tree.c (build_qualified_name): Set PTRMEM_OK_P.
2579 * semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on
2580 SCOPE_REF, too.
2581 * cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too.
2582 (QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1.
2583
2584 PR c++/48883
2585 PR c++/49609
2586 * pt.c (resolve_nondeduced_context): Call mark_used.
2587
2588 PR c++/49085
2589 * semantics.c (finish_offsetof): Complain about incomplete type.
2590
2591 2011-06-30 Jason Merrill <jason@redhat.com>
2592
2593 PR c++/49387
2594 * rtti.c (get_tinfo_decl): Call complete_type.
2595
2596 PR c++/49569
2597 * method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and
2598 DECL_PARM_INDEX on rhs parm.
2599
2600 * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length.
2601
2602 PR c++/49355
2603 * tree.c (stabilize_init): Handle aggregate initialization.
2604
2605 PR c++/48481
2606 * name-lookup.c (struct arg_lookup): Add fn_set.
2607 (add_function): Check it.
2608 (lookup_arg_dependent_1): Initialize it.
2609
2610 2011-06-29 Jason Merrill <jason@redhat.com>
2611
2612 PR c++/49216
2613 * init.c (build_new_1): Pass {} down to build_vec_init.
2614 (build_vec_init): Handle it.
2615
2616 DR 1207
2617 PR c++/49003
2618 * cp-tree.h (struct saved_scope): Add x_current_class_ptr,
2619 x_current_class_ref.
2620 (current_class_ptr, current_class_ref): Use them.
2621 * decl.c (build_this_parm): Handle getting the class type.
2622 * parser.c (cp_parser_late_return_type_opt): Set up 'this'
2623 for use within the trailing return type.
2624
2625 * pt.c (tsubst_decl) [VAR_DECL]: In unevaluated operand,
2626 don't tsubst DECL_INITIAL unless our type use auto.
2627
2628 PR c++/49520
2629 * semantics.c (constexpr_fn_retval): Handle CLEANUP_POINT_EXPR here.
2630 (massage_constexpr_body): Not here.
2631
2632 PR c++/49554
2633 * semantics.c (lambda_proxy_type): New.
2634 (build_capture_proxy): Use it.
2635 * cp-tree.h (DECLTYPE_FOR_LAMBDA_PROXY): New.
2636 * pt.c (tsubst) [DECLTYPE_TYPE]: Use them.
2637
2638 PR c++/45923
2639 * class.c (explain_non_literal_class): New.
2640 (finalize_literal_type_property): Call it.
2641 * cp-tree.h: Declare it.
2642 * semantics.c (ensure_literal_type_for_constexpr_object): Call it.
2643 (is_valid_constexpr_fn): Likewise.
2644 (massage_constexpr_body): Split out from...
2645 (register_constexpr_fundef): ...here.
2646 (is_instantiation_of_constexpr): New.
2647 (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case.
2648 (explain_invalid_constexpr_fn): New.
2649 (cxx_eval_call_expression): Call it.
2650 (potential_constant_expression_1): Likewise. Avoid redundant errors.
2651 * method.c (process_subob_fn): Diagnose non-constexpr.
2652 (walk_field_subobs): Likewise.
2653 (synthesized_method_walk): Don't shortcut if we want diagnostics.
2654 (explain_implicit_non_constexpr): New.
2655 (defaulted_late_check): Use it.
2656 * call.c (build_cxx_call): Remember location.
2657
2658 * method.c (maybe_explain_implicit_delete): Use pointer_set
2659 instead of htab.
2660
2661 * class.c (finalize_literal_type_property): Update conditions.
2662 * method.c (defaulted_late_check): Set TYPE_HAS_CONSTEXPR_CTOR.
2663
2664 * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
2665 * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
2666 * semantics.c (cxx_eval_vec_init_1): Correct type.
2667
2668 * init.c (build_value_init): Decide whether or not to zero-initialize
2669 based on user-providedness of default ctor, not any ctor.
2670 (build_value_init_noctor): Adjust assert.
2671
2672 DR 990
2673 * call.c (convert_like_real) [ck_user]: Handle value-initialization.
2674 (build_new_method_call_1): Likewise.
2675 * init.c (expand_default_init): Handle direct list-initialization
2676 of aggregates.
2677
2678 2011-06-27 Jakub Jelinek <jakub@redhat.com>
2679
2680 * cp-tree.h (union lang_tree_node): Use it in chain_next expression.
2681
2682 2011-06-26 Jason Merrill <jason@redhat.com>
2683
2684 PR c++/49528
2685 * semantics.c (potential_constant_expression_1): Check
2686 for non-literality rather than cleanup.
2687 (cxx_eval_constant_expression): Likewise.
2688
2689 PR c++/49528
2690 * semantics.c (potential_constant_expression_1): A TARGET_EXPR
2691 with a cleanup isn't constant.
2692 (cxx_eval_constant_expression): Likewise.
2693 * init.c (expand_default_init): Use maybe_constant_init.
2694
2695 2011-06-24 Jakub Jelinek <jakub@redhat.com>
2696
2697 PR c++/46400
2698 * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT
2699 instead of TYPE_CHAIN for chain_next for types.
2700
2701 2011-06-23 Gabriel Charette <gchare@google.com>
2702
2703 * name-lookup.h (cp_binding_level): Removed unused
2704 member names_size. Update all users.
2705
2706 2011-06-23 Jason Merrill <jason@redhat.com>
2707
2708 * typeck2.c (build_functional_cast): Strip cv-quals for value init.
2709 * init.c (build_zero_init_1): Not here.
2710
2711 PR c++/35255
2712 * pt.c (resolve_overloaded_unification): Fix DR 115 handling.
2713
2714 2011-06-23 Paolo Carlini <paolo.carlini@oracle.com>
2715
2716 PR c++/44625
2717 * decl2.c (build_anon_union_vars): Early return error_mark_node
2718 for a nested anonymous struct.
2719
2720 2011-06-23 Jason Merrill <jason@redhat.com>
2721
2722 PR c++/49507
2723 * decl2.c (mark_used): Don't call synthesize_method for
2724 functions defaulted outside the class.
2725
2726 * optimize.c (maybe_clone_body): Set linkage flags before
2727 cgraph_same_body_alias.
2728
2729 PR c++/49440
2730 * class.c (set_linkage_according_to_type): Hand off to
2731 determine_visibility.
2732
2733 PR c++/49395
2734 * init.c (build_zero_init_1): Strip cv-quals from scalar types.
2735
2736 PR c++/36435
2737 * pt.c (most_specialized_instantiation): Do check return types.
2738
2739 2011-06-22 Jason Merrill <jason@redhat.com>
2740
2741 PR c++/49260
2742 * call.c (build_call_a): Set cp_function_chain->can_throw here.
2743 (build_cxx_call): Not here.
2744
2745 2011-06-21 Jason Merrill <jason@redhat.com>
2746
2747 PR c++/49172
2748 * decl.c (cp_finish_decl): Adjust init_const_expr_p for refs.
2749 (grokdeclarator): constexpr doesn't apply const for refs.
2750 * parser.c (cp_parser_initializer_clause): Don't call
2751 maybe_constant_value here.
2752 * call.c (initialize_reference): Handle constexpr.
2753
2754 PR c++/49482
2755 * semantics.c (maybe_add_lambda_conv_op): Call mark_exp_read for
2756 static fn parameters.
2757
2758 * call.c (add_builtin_candidates): Use cv_unqualified rather than
2759 TYPE_MAIN_VARIANT.
2760 * pt.c (tsubst_arg_types): Likewise.
2761 * except.c (build_throw): Use cv_unqualified.
2762
2763 PR c++/49418
2764 * call.c (cxx_type_promotes_to): Don't strip cv-quals.
2765 * semantics.c (lambda_return_type): Strip them here.
2766
2767 2011-06-21 Andrew MacLeod <amacleod@redhat.com>
2768
2769 * semantics.c: Add sync_ or SYNC__ to builtin names.
2770
2771 2011-06-20 Jason Merrill <jason@redhat.com>
2772
2773 PR c++/49216
2774 * init.c (build_vec_init): Don't try to use a CONSTRUCTOR when
2775 base is a pointer.
2776 * typeck2.c (process_init_constructor_array): Use {} for classes,
2777 too.
2778 * call.c (convert_like_real): Handle substitution failure.
2779
2780 PR c++/48138
2781 * pt.c (canonicalize_type_argument): New.
2782 (convert_template_argument, unify): Use it.
2783
2784 PR c++/47080
2785 * call.c (rejection_reason_code): Add rr_explicit_conversion.
2786 (print_z_candidate): Handle it.
2787 (explicit_conversion_rejection): New.
2788 (build_user_type_conversion_1): Reject an explicit conversion
2789 function that requires more than a qualification conversion.
2790
2791 PR c++/47635
2792 * decl.c (grokdeclarator): Don't set ctype to an ENUMERAL_TYPE.
2793
2794 PR c++/48138
2795 * tree.c (strip_typedefs): Use build_aligned_type.
2796
2797 PR c++/49205
2798 * call.c (sufficient_parms_p): Allow parameter packs too.
2799
2800 PR c++/43321
2801 * semantics.c (describable_type): Remove.
2802 * cp-tree.h: Likewise.
2803 * decl.c (cp_finish_decl): Don't call it.
2804 * init.c (build_new): Likewise.
2805 * parser.c (cp_parser_omp_for_loop): Likewise.
2806 * pt.c (tsubst_decl): Likewise.
2807 (do_auto_deduction): If we fail in a template, try again
2808 at instantiation time.
2809
2810 PR c++/43831
2811 * parser.c (cp_parser_lambda_introducer): Complain about redundant
2812 captures.
2813 * semantics.c (add_capture): Likewise.
2814 (register_capture_members): Clear IDENTIFIER_MARKED.
2815
2816 2011-06-17 Jason Merrill <jason@redhat.com>
2817
2818 PR c++/49458
2819 * call.c (convert_class_to_reference_1): Allow binding function
2820 lvalue to rvalue reference.
2821
2822 PR c++/43912
2823 Generate proxy VAR_DECLs for better lambda debug info.
2824 * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): Add lambda operator().
2825 (LAMBDA_EXPR_PENDING_PROXIES): New.
2826 (struct tree_lambda_expr): Add pending_proxies.
2827 * name-lookup.c (pushdecl_maybe_friend_1): Handle capture shadowing.
2828 (qualify_lookup): Use is_lambda_ignored_entity.
2829 * parser.c (cp_parser_lambda_expression): Don't adjust field names.
2830 Call insert_pending_capture_proxies.
2831 (cp_parser_lambda_introducer): Use this_identifier.
2832 (cp_parser_lambda_declarator_opt): Call the object parameter
2833 of the op() "__closure" instead of "this".
2834 (cp_parser_lambda_body): Call build_capture_proxy.
2835 * semantics.c (build_capture_proxy, is_lambda_ignored_entity): New.
2836 (insert_pending_capture_proxies, insert_capture_proxy): New.
2837 (is_normal_capture_proxy, is_capture_proxy): New.
2838 (add_capture): Add __ to field names here, return capture proxy.
2839 (add_default_capture): Use this_identifier, adjust to expect
2840 add_capture to return a capture proxy.
2841 (outer_lambda_capture_p, thisify_lambda_field): Remove.
2842 (finish_id_expression, lambda_expr_this_capture): Adjust.
2843 (build_lambda_expr): Initialize LAMBDA_EXPR_PENDING_PROXIES.
2844 * pt.c (tsubst_copy_and_build): Check that LAMBDA_EXPR_PENDING_PROXIES
2845 is null.
2846
2847 * name-lookup.c (pushdecl_maybe_friend_1): Do check for shadowing
2848 of artificial locals.
2849
2850 * parser.c (cp_parser_lambda_expression): Clear
2851 LAMBDA_EXPR_THIS_CAPTURE after parsing.
2852 * pt.c (tsubst_copy_and_build): Make sure it isn't set.
2853
2854 * cp-tree.h (struct tree_lambda_expr): Change common to typed.
2855 Move non-pointers to end of struct.
2856
2857 * pt.c (tsubst_decl): Handle DECL_VALUE_EXPR on reference.
2858 * decl.c (check_initializer): Handle DECL_VALUE_EXPR_P.
2859
2860 * semantics.c (finish_non_static_data_member): Preserve dereference
2861 in template.
2862
2863 2011-06-16 Jason Merrill <jason@redhat.com>
2864
2865 PR c++/44160
2866 * parser.c (cp_parser_lambda_body): Share code between
2867 simple and complex cases instead of using cp_parser_function_body.
2868
2869 PR c++/45378
2870 * decl.c (check_initializer): Check narrowing.
2871
2872 PR c++/49229
2873 * pt.c (tsubst_decl) [FUNCTION_DECL]: Handle substitution failure.
2874
2875 PR c++/49251
2876 * semantics.c (finish_id_expression): Mark even dependent
2877 variables as used.
2878
2879 PR c++/49420
2880 * error.c (dump_template_argument): Don't try to omit default
2881 template args from an argument pack.
2882
2883 2011-06-15 H.J. Lu <hongjiu.lu@intel.com>
2884
2885 PR c++/49412
2886 * decl.c (get_dso_handle_node): Mark __dso_handle hidden if
2887 assembler supports hidden visibility.
2888
2889 2011-06-14 Jason Merrill <jason@redhat.com>
2890
2891 PR c++/49107
2892 * cp-tree.h (DEFERRED_NOEXCEPT_SPEC_P): Handle overload.
2893 * method.c (defaulted_late_check): Only maybe_instantiate_noexcept
2894 if the declaration had an exception-specifier.
2895 (process_subob_fn): Don't maybe_instantiate_noexcept.
2896 * pt.c (maybe_instantiate_noexcept): Handle overload.
2897 * typeck2.c (nothrow_spec_p_uninst): New.
2898 (merge_exception_specifiers): Add 'fn' parm. Build up overload.
2899 * typeck.c (merge_types): Adjust.
2900
2901 * pt.c (deduction_tsubst_fntype): Don't save input_location.
2902 (maybe_instantiate_noexcept): Likewise.
2903
2904 2011-06-14 Joseph Myers <joseph@codesourcery.com>
2905
2906 * Make-lang.in (cp/method.o): Update dependencies.
2907 * method.c: Include common/common-target.h.
2908 (use_thunk): Use targetm_common.have_named_sections.
2909
2910 2011-06-14 Steve Ellcey <sje@cup.hp.com>
2911
2912 * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
2913
2914 2011-06-14 Jason Merrill <jason@redhat.com>
2915
2916 * error.c (type_to_string): Print typedef-stripped version too.
2917
2918 PR c++/49117
2919 * call.c (perform_implicit_conversion_flags): Print source type as
2920 well as expression.
2921
2922 PR c++/49389
2923 * typeck2.c (build_m_component_ref): Preserve rvalueness.
2924
2925 PR c++/49369
2926 * class.c (build_base_path): Fix cv-quals in unevaluated context.
2927
2928 PR c++/49290
2929 * semantics.c (cxx_fold_indirect_ref): Local, more permissive copy
2930 of fold_indirect_ref_1.
2931 (cxx_eval_indirect_ref): Use it.
2932
2933 2011-06-11 Jan Hubicka <jh@suse.cz>
2934
2935 * decl2.c (cp_write_global_declarations): Process aliases; look trhough
2936 same body aliases.
2937
2938 2011-06-10 Paolo Carlini <paolo.carlini@oracle.com>
2939
2940 PR c++/41769
2941 * decl.c (grokdeclarator): Reject operator names in parameters.
2942
2943 2011-06-10 Jan Hubicka <jh@suse.cz>
2944
2945 * decl2.c (clear_decl_external): New functoin.
2946 (cp_write_global_declarations): Use it.
2947
2948 2011-06-10 Paolo Carlini <paolo.carlini@oracle.com>
2949
2950 * cp-tree.h (error_operand_p): Remove.
2951
2952 2011-06-09 David Krauss <potswa@mac.com>
2953
2954 PR c++/49118
2955 * typeck2.c (build_x_arrow): Push fake template context
2956 to produce diagnostic on acyclic endless operator-> drill-down.
2957 * call.c (build_new_op): Change Boolean overload status
2958 value to a pointer to the overload function.
2959 * cp-tree.h: Likewise.
2960 * typeck.c: Likewise.
2961 * parser.c: Likewise.
2962 * decl2.c: Likewise.
2963 * pt.c: Likewise.
2964
2965 2011-06-09 Jason Merrill <jason@redhat.com>
2966
2967 * semantics.c (maybe_constant_value): Handle overflowed input.
2968 (non_const_var_error): Handle non-constant DECL_INITIAL.
2969
2970 * pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae.
2971
2972 * parser.c (cp_parser_constant_expression): Just return the
2973 non-constant expression.
2974
2975 * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
2976
2977 2011-06-09 Paolo Carlini <paolo.carlini@oracle.com>
2978
2979 PR c++/29003
2980 * decl.c (grokdeclarator): Reject operator names in typedefs.
2981
2982 2011-06-08 Jason Merrill <jason@redhat.com>
2983
2984 PR c++/49107
2985 * cp-tree.def (DEFERRED_NOEXCEPT): New.
2986 * cp-tree.h (struct tree_deferred_noexcept): New.
2987 (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
2988 (DEFERRED_NOEXCEPT_SPEC_P): New.
2989 (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
2990 (union lang_tree_node): Add tree_deferred_noexcept.
2991 (maybe_instantiate_noexcept): Declare.
2992 * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
2993 * error.c (dump_exception_spec): Likewise.
2994 * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
2995 * ptree.c (cxx_print_xnode): Likewise.
2996 * tree.c (cp_tree_equal): Likewise.
2997 * decl.c (cp_tree_node_structure): Likewise.
2998 (duplicate_decls): Call maybe_instantiate_noexcept.
2999 * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
3000 (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
3001 DEFERRED_NOEXCEPT_SPEC_P.
3002 * typeck2.c (merge_exception_specifiers): Likewise.
3003 * decl2.c (mark_used): Call maybe_instantiate_noexcept.
3004 * method.c (process_subob_fn, defaulted_late_check): Likewise.
3005 * pt.c (tsubst_exception_specification): Add defer_ok parm.
3006 Build DEFERRED_NOEXCEPT.
3007 (maybe_instantiate_noexcept): New.
3008 (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
3009 * search.c (check_final_overrider): Call maybe_instantiate_noexcept.
3010
3011 * semantics.c (potential_constant_expression_1): Handle destructor
3012 call.
3013
3014 2011-06-08 Jakub Jelinek <jakub@redhat.com>
3015
3016 * cp-tree.h (struct tinst_level): Add chain_next GTY
3017 markup.
3018
3019 2011-06-08 Jason Merrill <jason@redhat.com>
3020
3021 PR c++/49322
3022 * pt.c (deduction_tsubst_fntype): Don't free the tinst entry
3023 if a pending_template entry is pointing at it.
3024
3025 2011-06-07 Jason Merrill <jason@redhat.com>
3026
3027 PR c++/48969
3028 PR c++/44175
3029 * error.c (subst_to_string): New.
3030 (cp_printer): Use it for 'S'.
3031 (print_instantiation_partial_context_line): Handle subst context.
3032 * pt.c (push_tinst_level): Handle subst context.
3033 (deduction_tsubst_fntype): Don't track specific substitutions.
3034 Use push_tinst_level.
3035
3036 * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
3037 (fn_type_unification): Don't call push_deduction_access_scope here.
3038
3039 2011-06-06 Jason Merrill <jason@redhat.com>
3040
3041 PR c++/48780
3042 * typeck.c (perform_integral_promotions): Don't promote scoped enums.
3043 * call.c (convert_arg_to_ellipsis): Promote them here in old ABI.
3044
3045 2011-06-06 Nicola Pero <nicola.pero@meta-innovation.com>,
3046
3047 PR obj-c++/48275
3048 * parser.c (cp_parser_objc_at_property_declaration): Allow setter
3049 and getter names to use all the allowed method names.
3050
3051 2011-06-06 Jason Merrill <jason@redhat.com>
3052
3053 PR c++/49298
3054 * semantics.c (potential_constant_expression_1): Handle FIELD_DECL.
3055
3056 PR objc++/49221
3057 * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than
3058 at_function_scope_p.
3059
3060 PR c++/49134
3061 * tree.c (build_target_expr): Deal with ARM ABI tweaks.
3062
3063 2011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com>
3064
3065 * init.c (build_delete): Warn when deleting type with non-virtual
3066 destructor.
3067
3068 2011-06-03 Jakub Jelinek <jakub@redhat.com>
3069
3070 PR c++/49276
3071 * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of
3072 DECL_CONTEXT.
3073
3074 2011-06-01 Jason Merrill <jason@redhat.com>
3075
3076 * pt.c (build_non_dependent_expr): Remove special handling of
3077 REFERENCE_REF_P.
3078
3079 PR c++/44175
3080 * pt.c (template_args_equal): Handle one arg being NULL_TREE.
3081 (deduction_tsubst_fntype): Handle excessive non-infinite recursion.
3082
3083 PR c++/49253
3084 * typeck2.c (build_x_arrow): Don't use build_min_nt.
3085
3086 2010-05-31 Fabien Chêne <fabien@gcc.gnu.org>
3087
3088 PR c++/48010
3089 * name-lookup.c (supplement_binding_1): If the old binding was a
3090 type name, also check that the DECL actually refers to the same
3091 type or is not a type.
3092
3093 2011-05-31 Jason Merrill <jason@redhat.com>
3094
3095 PR c++/44870
3096 * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR. Handle
3097 ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions.
3098 (build_min_non_dep): Preserve reference refs.
3099 (build_min_non_dep_call_vec): Likewise
3100
3101 2011-05-30 Jakub Jelinek <jakub@redhat.com>
3102
3103 PR c++/49223
3104 * semantics.c (finish_omp_clauses): Call require_complete_type
3105 even for copyin/copyprivate clauses. Only call
3106 cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
3107
3108 2011-05-28 Jason Merrill <jason@redhat.com>
3109
3110 PR c++/46124
3111 * parser.c (cp_parser_lambda_expression): Improve error recovery.
3112 (cp_parser_lambda_declarator_opt): Likewise. Return bool.
3113
3114 2011-05-27 Jason Merrill <jason@redhat.com>
3115
3116 PR c++/47277
3117 * parser.c (cp_parser_pseudo_destructor_name): Commit to parse
3118 after we see the ~.
3119
3120 * mangle.c (mangle_decl_string): Make sure we don't try to mangle
3121 templates.
3122
3123 PR c++/47049
3124 * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing.
3125 * decl.c (start_preparsed_function): Don't call comdat_linkage for
3126 a template.
3127
3128 PR c++/47132
3129 * mangle.c (write_expression): Handle MODOP_EXPR.
3130
3131 PR c++/47277
3132 * parser.c (cp_parser_unqualified_id): Don't check
3133 constructor_name_p for enums.
3134
3135 PR c++/47687
3136 * pt.c (dependent_type_p_r): Avoid infinite recursion.
3137
3138 PR c++/48284
3139 * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
3140 with INDIRECT_REF of REFERENCE_TYPE.
3141
3142 PR c++/49181
3143 * pt.c (get_mostly_instantiated_function_type): Use push_access_scope.
3144
3145 2011-05-27 Nathan Froyd <froydnj@codesourcery.com>
3146
3147 * cp-tree.h (building_stmt_tree): Delete.
3148 * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list.
3149 (build_aggr_init_full_exprs): Call building_stmt_list_p
3150 instead of building_stmt_tree.
3151 (initialize_local_var): Likewise.
3152 (finish_function): Likewise.
3153 * decl2.c (finish_anon_union): Likewise.
3154 * init.c (begin_init_stmts): Likewise.
3155 (finish_init_stmts): Likewise.
3156 (expand_aggr_init_1): Likewise.
3157 * name-lookup.c (do_local_using_decl): Likewise.
3158 (do_namespace_alias): Likewise.
3159 (do_using_directive): Likewise.
3160 (cp_emit_debug_info_for_using): Likewise.
3161 * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty.
3162
3163 2011-05-27 Paolo Carlini <paolo.carlini@oracle.com>
3164
3165 PR c++/42056
3166 * typeck2.c (build_functional_cast): Complain early for invalid uses
3167 of 'auto' and set type to error_mark_node.
3168
3169 2011-05-26 Jason Merrill <jason@redhat.com>
3170
3171 PR c++/47721
3172 * parser.c (cp_parser_member_declaration): Allow friend T.
3173 * friend.c (make_friend_class): Ignore non-classes.
3174 * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM.
3175
3176 DR 1004
3177 * pt.c (convert_template_argument): Don't complain about using
3178 injected-class-name as template template argument.
3179
3180 PR c++/47956
3181 * decl.c (check_static_variable_definition): Now static.
3182 (cp_finish_decl): Call it here.
3183 (grokdeclarator): Not here.
3184 * pt.c (instantiate_class_template_1): Or here.
3185 * cp-tree.h: Don't declare it.
3186
3187 2011-05-26 Janis Johnson <janis187@us.ibm.com>
3188 Nathan Froyd <froydnj@codesourcery.com>
3189
3190 PR c++/2288
3191 PR c++/18770
3192 * name-lookup.h (enum scope_kind): Add sk_cond.
3193 * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
3194 Detect and report error for redeclaration from for-init or if
3195 or switch condition.
3196 (begin_scope): Handle sk_cond.
3197 * semantics.c (begin_if_stmt): Use sk_cond.
3198 (begin switch_stmt): Ditto.
3199
3200 2011-05-26 Jason Merrill <jason@redhat.com>
3201
3202 PR c++/48211
3203 * name-lookup.h (cp_class_binding): Make base a pointer.
3204 * name-lookup.c (new_class_binding): Adjust.
3205 (poplevel_class): Adjust.
3206
3207 PR c++/48424
3208 * decl.c (grokparms): Function parameter packs don't need to
3209 go at the end.
3210 * pt.c (type_unification_real): But they aren't deduced otherwise.
3211
3212 2011-05-25 Jason Merrill <jason@redhat.com>
3213
3214 PR c++/48536
3215 * decl.c (build_enumerator): If incremented enumerator won't fit in
3216 previous integral type, find one it will fit in.
3217
3218 PR c++/48599
3219 * decl.c (create_array_type_for_decl): Complain about array of auto.
3220
3221 PR c++/44994
3222 PR c++/49156
3223 * error.c (dump_template_bindings): Set processing_template_decl
3224 for a partial instantiation.
3225
3226 PR c++/45401
3227 * decl.c (grokdeclarator): Don't change type when adding rvalue ref
3228 to another reference type.
3229
3230 PR c++/44311
3231 * decl.c (case_conversion): New.
3232 (finish_case_label): Use it.
3233
3234 * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT.
3235
3236 PR c++/45698
3237 * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT.
3238
3239 PR c++/46005
3240 * decl.c (grokdeclarator): Complain about auto typedef.
3241
3242 PR c++/46245
3243 * decl.c (grokdeclarator): Complain later for auto parameter.
3244 * pt.c (splice_late_return_type): Handle use in a template
3245 type-parameter.
3246
3247 PR c++/46696
3248 * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN.
3249
3250 PR c++/47184
3251 * parser.c (cp_parser_parameter_declaration): Recognize
3252 list-initialization.
3253 (cp_parser_direct_declarator): Check for the closing
3254 paren before parsing definitely.
3255
3256 PR c++/48935
3257 * parser.c (cp_parser_constructor_declarator_p): Don't check
3258 constructor_name_p for enums.
3259 (cp_parser_diagnose_invalid_type_name): Correct error message.
3260
3261 PR c++/45418
3262 * init.c (perform_member_init): Handle list-initialization
3263 of array of non-trivial class type.
3264
3265 PR c++/45080
3266 * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
3267 * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
3268
3269 PR c++/48292
3270 * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of
3271 function parameter pack.
3272 (tsubst_pack_expansion): Likewise.
3273
3274 * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has
3275 TS_COMMON.
3276
3277 2011-05-25 Jakub Jelinek <jakub@redhat.com>
3278
3279 * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER
3280 as TS_TYPED.
3281
3282 PR c++/49136
3283 * semantics.c (cxx_eval_bit_field_ref): Handle the
3284 case when BIT_FIELD_REF doesn't cover only a single field.
3285
3286 2011-05-24 Jason Merrill <jason@redhat.com>
3287
3288 PR c++/49042
3289 * pt.c (get_mostly_instantiated_function_type): Use
3290 push_deferring_access_checks rather than set flag_access_control.
3291
3292 2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>,
3293
3294 * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
3295 syntax error in declaring an ObjC instance variable.
3296
3297 2011-05-24 Jason Merrill <jason@redhat.com>
3298
3299 PR c++/48884
3300 * class.c (pushclass): Accept NULL argument.
3301 (popclass): Deal with popping null class.
3302 * pt.c (push_access_scope, pop_access_scope): Use them rather than
3303 push_to_top_level/pop_from_top_level.
3304 (push_deduction_access_scope, pop_defarg_context): New.
3305 (fn_type_unification): Use them.
3306 * name-lookup.c (lookup_name_real_1): Check current_class_type.
3307
3308 2011-05-24 Paolo Carlini <paolo.carlini@oracle.com>
3309
3310 * decl.c (grokdeclarator): Use current_class_name.
3311
3312 2011-05-24 Joseph Myers <joseph@codesourcery.com>
3313
3314 * Make-lang.in (GXX_OBJS): Remove prefix.o.
3315 (g++$(exeext)): Use libcommon-target.a.
3316 (CXX_C_OBJS): Remove prefix.o.
3317
3318 2011-05-23 Jason Merrill <jason@redhat.com>
3319
3320 * pt.c (tsubst_copy_and_build): Use current_class_name.
3321
3322 PR c++/49102
3323 * call.c (convert_arg_to_ellipsis): Call force_rvalue.
3324
3325 PR c++/49105
3326 * typeck.c (cp_build_c_cast): Don't strip cv-quals when
3327 converting to reference.
3328 (build_static_cast_1): Update for glvalues.
3329
3330 PR c++/49105
3331 * typeck.c (build_const_cast_1): Handle rvalue references.
3332
3333 PR c++/47263
3334 * decl.c (use_eh_spec_block): Do use an EH spec block for a
3335 lambda op().
3336
3337 PR c++/49058
3338 * call.c (splice_viable): Be strict in templates.
3339
3340 PR c++/47336
3341 * error.c (dump_template_bindings): Suppress access control.
3342
3343 PR c++/47544
3344 * pt.c (instantiate_decl): Handle =default.
3345
3346 PR c++/48617
3347 * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE.
3348
3349 2011-05-23 Nathan Froyd <froydnj@codesourcery.com>
3350
3351 * call.c (build_over_call): Tweak call to check_function_arguments.
3352 * typeck.c (cp_build_function_call_vec): Likewise.
3353
3354 2011-05-23 Jonathan Wakely <jwakely.gcc@gmail.com>
3355
3356 PR c++/18016
3357 * init.c (perform_member_init): Check for self-initialization.
3358
3359 2011-05-22 Jason Merrill <jason@redhat.com>
3360
3361 PR c++/48647
3362 * typeck.c (composite_pointer_type_r): Return error_mark_node
3363 on error in SFINAE context.
3364
3365 2011-05-20 Jason Merrill <jason@redhat.com>
3366
3367 PR c++/48945
3368 * decl.c (grokdeclarator): Don't add set const function-cv-qual
3369 for constexpr fns to memfn_quals, just add it to the type.
3370 (revert_static_member_fn): Don't complain about quals.
3371 (check_static_quals): New.
3372 (grokfndecl): Call it.
3373 (start_preparsed_function): Don't call revert_static_member_fn.
3374
3375 PR c++/48945
3376 * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
3377
3378 PR c++/48780
3379 * cvt.c (type_promotes_to): Don't promote scoped enums.
3380
3381 PR c++/49066
3382 * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
3383
3384 PR c++/48873
3385 * tree.c (stabilize_expr): Fix typo.
3386
3387 DR 1073
3388 PR c++/49082
3389 * typeck.c (comp_except_specs): noexcept(false) is not compatible
3390 with throw(type-list).
3391 * typeck2.c (merge_exception_specifiers): noexcept(false)
3392 beats any more limited specification.
3393
3394 PR c++/24163
3395 PR c++/29131
3396 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
3397 unqualified lookup.
3398 * semantics.c (perform_koenig_lookup): Add complain parm.
3399 * cp-tree.h: Adjust.
3400 * parser.c (cp_parser_postfix_expression): Adjust.
3401 (cp_parser_perform_range_for_lookup): Adjust.
3402
3403 2011-05-20 Jason Merrill <jason@redhat.com>
3404
3405 * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
3406
3407 2011-05-20 Joseph Myers <joseph@codesourcery.com>
3408
3409 * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
3410
3411 2011-05-19 Jakub Jelinek <jakub@redhat.com>
3412
3413 PR c++/49043
3414 * decl.c (check_omp_return): Stop searching on sk_function_parms.
3415
3416 PR c++/48869
3417 * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
3418 pass it down to locate_fn_flags.
3419 * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
3420 * semantics.c (cxx_omp_create_clause_info): Adjust callers.
3421 * cp-gimplify.c: Include splay-tree.h.
3422 (splay_tree_compare_decl_uid, omp_var_to_track,
3423 omp_cxx_notice_variable): New functions.
3424 (struct cp_genericize_omp_taskreg): New type.
3425 (struct cp_genericize_data): Add omp_ctx field.
3426 (cp_genericize_r): Attempt to determine implicitly determined
3427 firstprivate class type variables.
3428 (cp_genericize): Clear omp_ctx.
3429 * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
3430
3431 2011-05-18 Jason Merrill <jason@redhat.com>
3432
3433 PR c++/48948
3434 PR c++/49015
3435 * class.c (finalize_literal_type_property): Do check
3436 for constexpr member functions of non-literal class.
3437 (finish_struct): Don't call check_deferred_constexpr_decls.
3438 * cp-tree.h: Don't declare it.
3439 (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
3440 * decl.c (grok_special_member_properties): Don't check it
3441 (grokfnedcl): Don't call validate_constexpr_fundecl.
3442 (start_preparsed_function): Do call it.
3443 * pt.c (tsubst_decl): Don't call it.
3444 (instantiate_class_template_1): Don't call
3445 check_deferred_constexpr_decls.
3446 * semantics.c (literal_type_p): Check for any incompleteness.
3447 (ensure_literal_type_for_constexpr_object): Likewise.
3448 (is_valid_constexpr_fn): Revert deferral changes.
3449 (validate_constexpr_fundecl): Likewise.
3450 (register_constexpr_fundef): Likewise.
3451 (check_deferred_constexpr_decls): Remove.
3452
3453 2011-05-16 Jason Merrill <jason@redhat.com>
3454
3455 PR c++/48969
3456 * pt.c (deduction_tsubst_fntype): Use a VEC initially.
3457
3458 2011-05-15 Paolo Carlini <paolo.carlini@oracle.com>
3459
3460 * cxx-pretty-print.c: Update comment.
3461 * semantics.c (trait_expr_value, finish_trait_expr):
3462 Reorder the cases.
3463 * parser.c (cp_parser_primary_expression): Likewise.
3464
3465 2011-05-15 Jonathan Wakely <jwakely.gcc@gmail.com>
3466
3467 PR c++/48994
3468 * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
3469
3470 2011-05-13 Ville Voutilainen <ville.voutilainen@gmail.com>
3471
3472 Implement final on class.
3473 * class.c (check_bases): Diagnose derivation from a final class.
3474 * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
3475 (CLASSTYPE_FINAL): New.
3476 * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
3477 CLASSTYPE_FINAL.
3478 * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
3479
3480 2011-05-13 Jason Merrill <jason@redhat.com>
3481
3482 PR c++/48969
3483 * pt.c (deduction_tsubst_fntype): New.
3484 (fn_type_unification): Use it.
3485 (init_template_processing): Initialize hash table.
3486 (print_template_statistics): Print hash table stats.
3487
3488 * call.c (build_op_call): Use timevar_cond_start/stop.
3489 (build_user_type_conversion): Likewise.
3490
3491 2011-05-12 Jason Merrill <jason@redhat.com>
3492
3493 * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
3494 * semantics.c (validate_constexpr_fundecl): Set it.
3495 (check_deferred_constexpr_decls): Clear it.
3496 (register_constexpr_fundef): Make sure it isn't set.
3497 * decl.c (grok_special_member_properties): Check it.
3498
3499 2011-05-11 Jason Merrill <jason@redhat.com>
3500
3501 PR c++/48948
3502 * semantics.c (validate_constexpr_fundecl): Defer checking if
3503 an argument type is being defined.
3504 (is_valid_constexpr_fn): Add defer_ok parm.
3505 (cxx_eval_call_expression): Adjust.
3506 (check_deferred_constexpr_decls): New.
3507 (literal_type_p): Make sure type isn't being defined.
3508 (ensure_literal_type_for_constexpr_object): Handle type being defined.
3509 * cp-tree.h: Declare check_deferred_constexpr_decls.
3510 * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
3511 (start_preparsed_function, cp_finish_decl): Not here.
3512 * class.c (finalize_literal_type_property): Don't call
3513 validate_constexpr_fundecl.
3514 (finish_struct): Call check_deferred_constexpr_decls.
3515 * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
3516 (instantiate_class_template): Call check_deferred_constexpr_decls.
3517
3518 * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
3519 rather than DECL_TEMPLATE_INSTANTIATION.
3520 (cxx_eval_call_expression): Likewise.
3521
3522 * semantics.c (register_constexpr_fundef): Add to hash table here.
3523 (validate_constexpr_fundecl): Not here.
3524
3525 * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
3526
3527 * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
3528 do call maybe_constant_value in C++0x mode.
3529 * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
3530
3531 PR c++/48745
3532 * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
3533
3534 2011-05-11 Nathan Froyd <froydnj@codesourcery.com>
3535
3536 * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
3537 TYPE_VALUES_RAW.
3538 (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
3539 (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
3540 (TEMPLATE_TYPE_PARM_INDEX): Likewise.
3541
3542 2011-05-10 Jason Merrill <jason@redhat.com>
3543
3544 PR c++/48930
3545 * class.c (type_build_ctor_call): New.
3546 * cp-tree.h: Declare it.
3547 * decl.c (check_initializer): Use it instead of
3548 TYPE_NEEDS_CONSTRUCTING.
3549 * init.c (build_value_init, build_value_init_noctor): Likewise.
3550 (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
3551 (build_vec_init): Likewise.
3552 * typeck2.c (process_init_constructor_array): Likewise.
3553 (process_init_constructor_record): Likewise.
3554
3555 PR c++/48736
3556 * pt.c (tsubst_copy_and_build): Handle substitution of a pack
3557 expansion producing another expansion.
3558
3559 2011-05-10 Ville Voutilainen <ville.voutilainen@gmail.com>
3560
3561 Fixes for override/final.
3562 * class.c (check_for_override): Diagnose final on a nonvirtual
3563 member function, diagnose override for a virtual with no matching
3564 override. Don't fiddle around with DECL_VINDEX.
3565
3566 2011-05-10 Nathan Froyd <froydnj@codesourcery.com>
3567
3568 * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
3569 * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3570 * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
3571 operand of EXPR_PACK_EXPANSION.
3572 (cp_tree_operand_length): Declare.
3573 * tree.c (cp_tree_operand_length): Define.
3574 (cp_tree_equal): Call it.
3575 * pt.c (value_dependent_expr_P): Likewise.
3576 * mangle.c (write_expression): Likewise.
3577
3578 2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
3579
3580 PR c++/48737
3581 PR c++/48744
3582 * decl.c (reshape_init): Take a complain parameter and do
3583 not call error if tf_error is not set.
3584 (check_initializer, reshape_init_r, reshape_init_array,
3585 reshape_init_array_1, reshape_init_vector, reshape_init_class):
3586 Adjust.
3587 * typeck2.c (digest_init_r): Take a complain parameter and
3588 pass it to convert_for_initialization.
3589 (digest_init, digest_init_flags, process_init_constructor_array,
3590 process_init_constructor_record, process_init_constructor_union,
3591 process_init_constructor, digest_init_r): Adjust.
3592 * init.c (expand_default_init, build_new_1): Likewise.
3593 * typeck.c (cp_build_modify_expr): Likewise.
3594 * decl2.c (grokfield): Likewise.
3595 * call.c (convert_like_real, convert_default_arg): Likewise.
3596 * semantics.c (finish_compound_literal): Pass complain to
3597 reshape_init and digest_init.
3598 * cp-tree.h: Adjust declarations.
3599
3600 2011-05-07 Fabien Chêne <fabien@gcc.gnu.org>
3601
3602 PR c++/48859
3603 * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
3604 recursion if there is user defined constructor.
3605
3606 2011-05-09 Jason Merrill <jason@redhat.com>
3607
3608 PR c++/34772
3609 * decl.c (initialize_local_var): Use DECL_INITIAL for simple
3610 initialization.
3611
3612 2011-05-08 Ville Voutilainen <ville.voutilainen@gmail.com>
3613
3614 Implement final/override for member functions.
3615 * class.c (check_for_override): Check for DECL_OVERRIDE_P.
3616 * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
3617 (cp_virt_specifiers, enum virt_specifier): New.
3618 * decl.c (set_virt_specifiers): New.
3619 (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
3620 * parser.c (make_call_declarator): add virt-specifiers parameter.
3621 (cp_parser_lambda_declarator_opt): Adjust.
3622 (cp_parser_direct_declarator): Likewise.
3623 (cp_parser_virt_specifier_seq_opt): New.
3624 * search.c (check_final_overrider): Diagnose attempts to override
3625 a final member function.
3626
3627 2011-05-09 Dodji Seketeli <dodji@redhat.com>
3628
3629 PR c++/48574
3630 * class.c (fixed_type_or_null): Use type_dependent_p_push to test
3631 if the instance has a dependent initializer.
3632
3633 2011-05-08 Paolo Carlini <paolo.carlini@oracle.com>
3634
3635 PR c++/48816
3636 * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
3637 effectively unused variable.
3638
3639 2011-05-07 Eric Botcazou <ebotcazou@adacore.com>
3640
3641 * name-lookup.h (global_bindings_p): Adjust prototype.
3642 * name-lookup.c (global_bindings_p): Return bool.
3643
3644 2011-05-06 Jason Merrill <jason@redhat.com>
3645
3646 * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
3647 appropriate.
3648
3649 PR c++/48909
3650 * semantics.c (cxx_eval_conditional_expression): Check
3651 integer_zerop instead.
3652 (potential_constant_expression_1): Likewise.
3653
3654 PR c++/48911
3655 * semantics.c (cxx_eval_array_reference): Handle implicit
3656 initializers.
3657
3658 2011-05-06 Nathan Froyd <froydnj@codesourcery.com>
3659
3660 * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
3661 * call.c (standard_conversion): Call class_of_this_parm.
3662 * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
3663 (pp_cxx_direct_abstract_declarator): Likewise.
3664 * decl2.c (change_return_type): Likewise.
3665 (cp_reconstruct_complex_type): Likewise.
3666 * error.c (dump_type_suffix, dump_function_decl): Likewise.
3667 * mangle.c (write_function_type): Likewise.
3668 * pt.c (unify): Likewise.
3669 * typeck.c (merge_types, type_memfn_quals): Likewise.
3670 * decl.c (build_this_parm): Call type_of_this_parm.
3671
3672 2011-05-06 Dodji Seketeli <dodji@redhat.com>
3673
3674 PR c++/48838
3675 * cp-tree.h (non_static_member_function_p): Declare new function.
3676 * tree.c (non_static_member_function_p): Define it.
3677 * semantics.c (finish_call_expr): Use it.
3678
3679 2011-05-05 Nathan Froyd <froydnj@codesourcery.com>
3680
3681 * decl.c (finish_case_label): Omit the loc argument to
3682 build_case_label.
3683
3684 2011-05-05 Jason Merrill <jason@redhat.com>
3685
3686 * cp-tree.h (REFERENCE_REF_P): Just check the type.
3687 * cvt.c (convert_from_reference): Adjust.
3688 * pt.c (build_non_dependent_expr): Adjust.
3689 * semantics.c (finish_offsetof): Adjust.
3690 * tree.c (lvalue_kind): Use it.
3691
3692 PR c++/48873
3693 * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
3694
3695 2011-05-05 Eric Botcazou <ebotcazou@adacore.com>
3696
3697 * decl.c (start_preparsed_function): Do not set
3698 dont_save_pending_sizes_p.
3699
3700 2011-05-05 Joseph Myers <joseph@codesourcery.com>
3701
3702 * parser.c (cp_parser_objc_method_definition_list): Update call to
3703 objc_start_method_definition.
3704
3705 2011-05-04 Jason Merrill <jason@redhat.com>
3706
3707 PR c++/48749
3708 * class.c (resolves_to_fixed_type_p): Don't look closely
3709 in templates.
3710
3711 2011-05-03 Paolo Carlini <paolo.carlini@oracle.com>
3712
3713 PR c++/28501
3714 * call.c (add_builtin_candidate): Handle REALPART_EXPR and
3715 IMAGPART_EXPR.
3716
3717 2011-05-02 Lawrence Crowl <crowl@google.com>
3718
3719 * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
3720 (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
3721 Change TV_NAME_LOOKUP to start/stop.
3722 (define_label): Refactor timevar calls out to a wrapper function.
3723 Change TV_NAME_LOOKUP to start/stop.
3724 (xref_tag): Likewise.
3725 (lookup_label): Refactor timevar calls out to a wrapper function.
3726 Change TV_NAME_LOOKUP to start_cond/stop_cond.
3727
3728 * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
3729 TV_TEMPLATE_INST.
3730 (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
3731 (lookup_template_class): Refactor timevar calls out to a wrapper
3732 function. Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
3733 (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
3734
3735 * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
3736 (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
3737 (push_namespace): Likewise.
3738 (pop_nested_namespace): Likewise.
3739 (pushdecl_namespace_level): Likewise.
3740 (store_class_bindings): Likewise.
3741 (push_to_top_level): Likewise.
3742 (identifier_type_value): Refactor timevar calls out to a wrapper
3743 function. Change TV_NAME_LOOKUP to start/stop.
3744 (find_binding): Likewise.
3745 (push_using_decl): Likewise.
3746 (lookup_arg_dependent): Likewise.
3747 (push_using_directive): Likewise.
3748 (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
3749 to plain code. Change TV_NAME_LOOKUP to start/stop.
3750 (lookup_type_current_level): Likewise. Refactor inner return to
3751 break.
3752 (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
3753 code. Change TV_NAME_LOOKUP to start_cond/stop_cond.
3754 (pushdecl_top_level_1): Likewise.
3755 (lookup_using_namespace): Likewise.
3756 (pushdecl_with_scope): Refactor timevar calls out to a wrapper
3757 function. Change TV_NAME_LOOKUP to start_cond/stop_cond.
3758 (push_overloaded_decl): Likewise.
3759 (push_class_level_binding): Likewise.
3760 (namespace_binding): Likewise.
3761 (set_namespace_binding): Likewise.
3762 (supplement_binding): Likewise.
3763 (unqualified_namespace_lookup): Likewise.
3764 (lookup_name_real): Likewise.
3765 (lookup_type_scope): Likewise.
3766 (namespace_ancestor): Likewise.
3767 (lookup_name_innermost_nonclass_level): Likewise.
3768 (pushtag): Likewise.
3769 (pop_from_top_level): Likewise.
3770 (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
3771 function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Wrap long
3772 lines.
3773 (add_using_namespace): Refactor timevar calls out to a wrapper
3774 function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Bypass
3775 wrapper on call to self.
3776
3777 * decl2.c: (cp_write_global_declarations): Add start/stop of
3778 new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
3779 Remove push/pop calls to TV_VARCONST.
3780
3781 * parser.c: Add include of "timevar.h".
3782 (cp_parser_explicit_instantiation): Add push/pop calls to
3783 TV_TEMPLATE_INST.
3784 (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
3785 (cp_parser_class_specifier): Add wrapper to add push/pop calls to
3786 TV_PARSE_STRUCT.
3787 (cp_parser_function_definition_from_specifiers_and_declarator): Add
3788 push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
3789 (cp_parser_late_parsing_for_member): Add push/pop calls to
3790 new TV_PARSE_INMETH.
3791
3792 * call.c: Add include of "timevar.h".
3793 (convert_class_to_reference): Wrap and add push/pop calls to
3794 TV_OVERLOAD.
3795 (build_op_call): Likewise.
3796 (build_conditional_expr): Likewise.
3797 (build_new_op): Likewise.
3798 (build_new_method_call): Likewise.
3799 (build_user_type_conversion): Reorganize to single return and add
3800 push/pop calls to TV_OVERLOAD.
3801 (perform_overload_resolution): Likewise.
3802
3803 * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
3804
3805 2011-05-02 Jason Merrill <jason@redhat.com>
3806
3807 * tree.c (build_vec_init_expr): Take complain parm.
3808 (build_vec_init_elt): Likewise. Free arg vector.
3809 (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
3810 * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
3811 (VEC_INIT_EXPR_INIT): Likewise.
3812 Adjust build_vec_init_expr declaration.
3813 * init.c (perform_member_init): Adjust.
3814
3815 Revert:
3816 PR c++/40975
3817 * cp-tree.def (VEC_INIT_EXPR): Add third operand.
3818 * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
3819 * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
3820 * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
3821 (build_vec_init_elt): Don't expect an array type.
3822 (build_array_copy): Adjust.
3823 * init.c (perform_member_init): Adjust.
3824 (build_new_1): Use build_vec_init_expr.
3825
3826 PR c++/48834
3827 * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
3828 Protect an explicit target.
3829
3830 PR c++/48446
3831 * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
3832 (compute_array_index_type): Revert earlier 48446 changes.
3833 (grokdeclarator): Use stabilize_vla_size.
3834
3835 2011-05-02 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
3836 Eric Botcazou <ebotcazou@adacore.com>
3837
3838 * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
3839 instead of inappropriate zero values.
3840
3841 2011-05-02 Paolo Carlini <paolo.carlini@oracle.com>
3842
3843 PR c++/47969
3844 * decl.c (compute_array_index_type): Check build_expr_type_conversion
3845 return value for NULL_TREE.
3846
3847 2011-04-29 Paolo Carlini <paolo.carlini@oracle.com>
3848
3849 PR c++/48606
3850 * init.c (perform_member_init): Check build_value_init return
3851 value for error_mark_node.
3852
3853 2011-04-29 Diego Novillo <dnovillo@google.com>
3854 Le-Chun Wu <lcwu@google.com>
3855
3856 * call.c (conversion_null_warnings): Also handle assignments
3857 when warning about NULL conversions.
3858
3859 2011-04-29 Le-Chun Wu <lcwu@google.com>
3860
3861 * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
3862 * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
3863 (build_over_call): Use it to determine whether to emit a NULL
3864 warning for template function instantiations.
3865 (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
3866 EXPLICIT_TARGS is set.
3867
3868 2011-04-29 Nicola Pero <nicola.pero@meta-innovation.com>,
3869 Mike Stump <mikestump@comcast.net>
3870
3871 * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
3872 in maintainer mode. Use the --output-file option of gperf instead
3873 of > to prevent creating an empty cp/cfns.h when gperf is not
3874 available.
3875
3876 2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
3877
3878 PR c++/48798
3879 * semantics.c (finish_base_specifier): cv-qualified base class
3880 is fine, per DR 484.
3881
3882 2011-04-28 Dodji Seketeli <dodji@redhat.com>
3883
3884 PR c++/48656
3885 * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
3886 considering call expressions involving a member function.
3887
3888 2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
3889
3890 PR c++/48530
3891 * tree.c (build_cplus_new): Check build_target_expr return
3892 value for error_mark_node.
3893
3894 2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
3895
3896 PR c++/48771
3897 * semantics.c (literal_type_p): Reference types are literal types,
3898 per the FDIS.
3899 (valid_type_in_constexpr_fundecl_p): Remove.
3900 (is_valid_constexpr_fn): Adjust.
3901
3902 2011-04-27 Jason Merrill <jason@redhat.com>
3903
3904 PR libstdc++/48760
3905 Implement list-initialization of _Complex.
3906 * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
3907 (check_initializer): Likewise.
3908 * call.c (build_complex_conv): New.
3909 (implicit_conversion): Call it.
3910 (convert_like_real): Handle it.
3911 * typeck2.c (check_narrowing): Handle it.
3912
3913 * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
3914 decide whether to delete.
3915 (build_vec_init): Pass sfk_complete_destructor.
3916
3917 PR c++/40975
3918 * cp-tree.def (VEC_INIT_EXPR): Add third operand.
3919 * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
3920 * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
3921 * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
3922 (build_vec_init_elt): Don't expect an array type.
3923 (build_array_copy): Adjust.
3924 * init.c (perform_member_init): Adjust.
3925 (build_new_1): Use build_vec_init_expr.
3926
3927 * class.c (resolve_address_of_overloaded_function): Don't
3928 change OVERLOAD to TREE_LIST.
3929 * pt.c (print_candidates_1): Remove nonsensical assert.
3930
3931 PR c++/48046
3932 * parser.c (cp_parser_diagnose_invalid_type_name): Commit
3933 to tentative parse sooner.
3934
3935 2011-04-26 Jason Merrill <jason@redhat.com>
3936
3937 PR c++/42687
3938 * parser.c (cp_parser_primary_expression): Set *idk to
3939 CP_ID_KIND_NONE for a parenthesized identifier.
3940
3941 * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
3942 (cxx_print_identifier): Correct indentation.
3943
3944 PR c++/48530
3945 * decl.c (cxx_maybe_build_cleanup): Add complain parm.
3946 * tree.c (force_target_expr): Add complain parm.
3947 (build_target_expr_with_type): Likewise.
3948 (get_target_expr_sfinae): Split out.
3949 (build_vec_init_expr, bot_manip): Adjust.
3950 * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
3951 (build_delete, build_dtor_call): Likewise.
3952 (perform_direct_initialization_if_possible): Adjust.
3953 (build_vec_init): Handle error return.
3954 * cvt.c (force_rvalue): Add complain parm.
3955 Call build_special_member_call directly.
3956 * decl2.c (delete_sanity): Add complain parm.
3957 (build_cleanup): Adjust.
3958 * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
3959 * semantics.c (finish_stmt_expr_expr): Adjust.
3960 (finish_compound_literal): Adjust.
3961 * parser.c (cp_parser_delete_expression): Adjust.
3962 * typeck2.c (build_functional_cast): Adjust.
3963 * cp-tree.h: Adjust.
3964
3965 2011-04-26 Martin Jambor <mjambor@suse.cz>
3966
3967 * class.c (cp_fold_obj_type_ref): Remove.
3968 * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
3969
3970 2011-04-25 Paolo Carlini <paolo.carlini@oracle.com>
3971
3972 * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
3973 * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
3974 (UNDERLYING_TYPE_TYPE): Add.
3975 * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
3976 as TS_COMMON.
3977 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
3978 cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
3979 (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
3980 * semantics.c (finish_underlying_type): New.
3981 * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
3982 * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
3983 * cxx-pretty-print.c (p_cxx_type_id): Likewise.
3984 * tree.c (cp_walk_subtrees): Likewise.
3985 * pt.c (for_each_template_parm_r, tsubst, unify,
3986 dependent_type_p_r): Likewise.
3987 * mangle.c (write_type): Sorry for __underlying_type.
3988
3989 2011-04-25 Jason Merrill <jason@redhat.com>
3990
3991 PR c++/48707
3992 * decl.c (type_dependent_init_p): New.
3993 (cp_finish_decl): Check it.
3994 * pt.c (any_type_dependent_elements_p): New.
3995 * cp-tree.h: Declare it.
3996
3997 2011-04-20 Jason Merrill <jason@redhat.com>
3998
3999 * semantics.c (finish_compound_literal): Don't put an array
4000 with a dtor in a static variable.
4001
4002 * call.c (build_over_call): Handle trivial dtor.
4003
4004 * search.c (lookup_fnfields_slot): Call complete_type.
4005
4006 PR c++/48594
4007 * decl2.c (build_offset_ref_call_from_tree): Move
4008 non-dependency of object outside condition.
4009
4010 PR c++/48657
4011 * decl.c (cp_finish_decl): Simplify template handling.
4012
4013 2011-04-20 Jim Meyering <meyering@redhat.com>
4014
4015 * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
4016
4017 2011-04-19 Jason Merrill <jason@redhat.com>
4018
4019 PR c++/46304
4020 * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
4021
4022 PR c++/45267
4023 * decl.c (duplicate_decls): Keep always_inline attribute
4024 in sync with DECL_DISREGARD_INLINE_LIMITS.
4025
4026 2011-04-18 Jason Merrill <jason@redhat.com>
4027
4028 PR c++/48569
4029 * typeck2.c (build_functional_cast): Handle VOID_TYPE.
4030
4031 PR c++/48537
4032 * init.c (build_value_init): Handle UNION_TYPE the same.
4033
4034 2011-04-18 Jakub Jelinek <jakub@redhat.com>
4035
4036 PR c++/48632
4037 * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
4038 for type dependent pointers.
4039
4040 2011-04-18 Jim Meyering <meyering@redhat.com>
4041
4042 * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
4043
4044 2011-04-17 Jan Hubicka <jh@suse.cz>
4045
4046 * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
4047 gotos.
4048
4049 2011-04-17 Jason Merrill <jason@redhat.com>
4050
4051 PR c++/48531
4052 * typeck2.c (build_functional_cast): Disallow array type.
4053
4054 * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
4055
4056 2011-04-17 Jan Hubicka <jh@suse.cz>
4057
4058 * class.c (cp_fold_obj_type_ref): Drop vtable_method.
4059
4060 2011-04-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4061
4062 Implement N3271
4063 * parser.c (cp_convert_range_for): Split into
4064 cp_parser_perform_range_for_lookup.
4065 (cp_parser_perform_range_for_lookup): New.
4066 (cp_parser_range_for_member_function): New.
4067 (cp_parser_for_init_statement): Correct error message.
4068 * semantics.c (finish_call_expr): Accept COMPONENT_REF.
4069
4070 2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
4071
4072 * parser.c (cp_parser_objc_protocol_declaration): Updated for
4073 change from objc_declare_protocols() to objc_declare_protocol().
4074
4075 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
4076
4077 PR objc++/48479
4078 * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
4079 and return immediately.
4080
4081 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
4082
4083 * cp-tree.def (SWITCH_STMT): Add an extra operand.
4084 * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
4085 * cp-tree.h (SWITCH_STMT_SCOPE): Define.
4086 * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
4087 (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
4088
4089 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
4090
4091 * cp-tree.def (IF_STMT): Add an extra operand.
4092 * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
4093 * cp-tree.h (IF_SCOPE): Define.
4094 * semantics.c (begin_if_stmt): Pass scope to build_stmt.
4095 (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
4096
4097 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
4098
4099 * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
4100 * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
4101 * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
4102 * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
4103 Use FOR_SCOPE instead of TREE_CHAIN.
4104 (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
4105 (finish_for_stmt): Likewise.
4106
4107 2011-04-14 Jason Merrill <jason@redhat.com>
4108
4109 * parser.c (cp_parser_postfix_expression): Fix flags passed to
4110 build_new_method_call.
4111 * semantics.c (finish_call_expr): Likewise.
4112
4113 PR c++/48531
4114 * init.c (build_value_init_noctor): Check complain consistently.
4115
4116 PR c++/48557
4117 * typeck.c (cp_build_binary_op): Don't decay void operands.
4118
4119 PR c++/48446
4120 * decl.c (compute_array_index_type): Use get_temp_regvar instead
4121 of variable_size.
4122 * init.c (get_temp_regvar): No longer static.
4123 * cp-tree.h: Declare it.
4124
4125 2011-04-14 Nicola Pero <nicola.pero@meta-innovation.com>
4126
4127 * parser.c (cp_parser_objc_class_declaration): Updated for change
4128 in objc_declare_class().
4129
4130 2011-04-14 Nathan Froyd <froydnj@codesourcery.com>
4131
4132 * decl.c (poplevel): Use block_chainon.
4133
4134 2011-04-13 Jason Merrill <jason@redhat.com>
4135
4136 PR c++/48594
4137 * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
4138 or pointer to (non-member) function.
4139
4140 2011-04-13 Jakub Jelinek <jakub@redhat.com>
4141
4142 PR c++/48570
4143 * semantics.c (cxx_eval_array_reference): Handle reading from
4144 wchar_t, char16_t and char32_t STRING_CST.
4145
4146 2011-04-13 Dodji Seketeli <dodji@redhat.com>
4147
4148 PR c++/48574
4149 * class.c (fixed_type_or_null): We cannot determine the dynamic
4150 type of a reference variable if its initializer is dependent.
4151
4152 2011-04-13 Jason Merrill <jason@redhat.com>
4153
4154 PR c++/48581
4155 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
4156 unqualified lookup failing if we're still in a template.
4157
4158 2011-04-12 Nathan Froyd <froydnj@codesourcery.com>
4159
4160 * cp-lang.c (cp_init_ts): Call cp_common_init_ts. Move
4161 tree_contains_struct initialization to...
4162 * cp-objcp-common.c (cp_common_init_ts): ...here. Use MARK_*
4163 macros.
4164 * cp-objcp-common.h (cp_common_init_ts): Declare.
4165 * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
4166 calling TREE_CHAIN.
4167
4168 2011-04-12 Nicola Pero <nicola.pero@meta-innovation.com>
4169
4170 * parser.c (cp_parser_objc_message_expression): Updated call
4171 to objc_build_message_expr.
4172
4173 2011-04-12 Martin Jambor <mjambor@suse.cz>
4174
4175 * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
4176 cgraph_get_create_node.
4177 * decl2.c (cp_write_global_declarations): Call cgraph_get_node
4178 instead of cgraph_get_create_node.
4179 * method.c (make_alias_for_thunk): Call cgraph_get_node
4180 instead of cgraph_get_create_node, assert it returns non-NULL.
4181 (use_thunk): Likewise.
4182 * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
4183 when flag_syntax_only is not set. Call cgraph_get_node instead of
4184 cgraph_get_create_node.
4185 (maybe_clone_body): Call cgraph_get_node instead of
4186 cgraph_get_create_node.
4187
4188 2011-04-12 Martin Jambor <mjambor@suse.cz>
4189
4190 * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
4191 instead of cgraph_node.
4192 * decl2.c (cxx_callgraph_analyze_expr): Likewise.
4193 (cp_write_global_declarations): Likewise.
4194 * optimize.c (maybe_clone_body): Likewise.
4195 * semantics.c (maybe_add_lambda_conv_op): Likewise.
4196 * mangle.c (mangle_decl): Likewise.
4197 * method.c (make_alias_for_thunk): Likewise.
4198 (use_thunk): Likewise.
4199
4200 2011-04-11 Jason Merrill <jason@redhat.com>
4201
4202 PR c++/48535
4203 * decl.c (cp_complete_array_type_or_error): New.
4204 * semantics.c (finish_compound_literal): Use it.
4205 * cp-tree.h: Declare it.
4206
4207 PR c++/48535
4208 * semantics.c (finish_compound_literal): Handle references.
4209
4210 PR c++/48535
4211 * semantics.c (finish_compound_literal): Take complain parm.
4212 (build_lambda_object): Adjust.
4213 * cp-tree.h: Adjust.
4214 * call.c (convert_like_real): Adjust.
4215 * decl.c (check_initializer): Adjust.
4216 * parser.c (cp_parser_postfix_expression): Adjust.
4217 (cp_parser_functional_cast): Adjust.
4218 * pt.c (tsubst_copy_and_build): Adjust.
4219 * typeck2.c (process_init_constructor_record): Adjust.
4220
4221 PR c++/48534
4222 * cvt.c (ocp_convert): Use build_nop to convert to underlying type
4223 of scoped enum.
4224
4225 PR c++/48523
4226 * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
4227 than cp_build_indirect_ref.
4228
4229 PR c++/48457, Core 1238
4230 * call.c (reference_binding): Allow rvalue reference to bind to
4231 function lvalue.
4232 * tree.c (lvalue_kind): Functions are always lvalues.
4233
4234 2011-04-07 Jason Merrill <jason@redhat.com>
4235
4236 PR c++/48500
4237 * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
4238 arguments even if we don't know the function.
4239
4240 PR c++/48481
4241 * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
4242 at the end of the chain.
4243 * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
4244 (iterative_hash_template_arg): Likewise.
4245
4246 PR c++/48481
4247 * cp-tree.h (OVL_ARG_DEPENDENT): New.
4248 * name-lookup.c (add_function): Set it.
4249 * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
4250
4251 PR c++/48481
4252 * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
4253 Release unused vector.
4254
4255 PR c++/48451
4256 * pt.c (fn_type_unification): Don't clear incomplete pack flag.
4257 (type_unification_real): Clear it here instead.
4258
4259 PR c++/48468
4260 * except.c (build_noexcept_spec): Propagate error_mark_node.
4261 (finish_noexcept_expr): Likewise.
4262
4263 PR c++/48452
4264 * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
4265 in SFINAE context.
4266
4267 PR c++/48450
4268 * call.c (resolve_args): Take complain.
4269 (build_new_function_call, build_operator_new_call): Pass it.
4270 (build_op_call, build_new_op, build_new_method_call): Pass it.
4271
4272 PR c++/48450
4273 * typeck.c (check_for_casting_away_constness): Take complain.
4274 (build_static_cast_1, build_reinterpret_cast_1): Pass it.
4275 (build_const_cast_1): Pass it. Take full complain parm.
4276 (build_const_cast, cp_build_c_cast): Adjust.
4277
4278 * tree.c (build_aggr_init_expr): Always return error_mark_node
4279 on abstract violation.
4280
4281 PR c++/48450
4282 * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
4283 (bot_manip): Adjust.
4284 * cp-tree.h: Adjust.
4285 * call.c (convert_like_real, build_cxx_call): Adjust.
4286 (perform_direct_initialization_if_possible): Adjust.
4287 * cvt.c (ocp_convert): Adjust.
4288 * init.c (build_value_init): Adjust.
4289 * semantics.c (maybe_add_lambda_conv_op): Adjust.
4290 * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
4291 * typeck2.c (build_functional_cast): Adjust.
4292
4293 * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
4294 level.
4295 (perform_member_init): Not here.
4296 * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
4297 case to templates.
4298 (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
4299
4300 PR c++/48449
4301 * typeck2.c (build_functional_cast): Check complain consistently.
4302 Use build_value_init and abstract_virtuals_error_sfinae.
4303 (abstract_virtuals_error_sfinae): Split out.
4304 * cp-tree.h: Declare it.
4305 * init.c (build_new_1): Use it.
4306 (build_value_init_noctor): Handle FUNCTION_TYPE.
4307
4308 * semantics.c (finish_decltype_type): Simplify handling of unknown
4309 type.
4310
4311 * semantics.c (finish_decltype_type): Add complain parm.
4312 * cp-tree.h: Adjust.
4313 * parser.c (cp_parser_decltype): Adjust.
4314 * pt.c (tsubst): Adjust.
4315
4316 PR c++/48450
4317 * cvt.c (ocp_convert): Handle converting scoped enum to bool.
4318
4319 2011-03-31 Jason Merrill <jason@redhat.com>
4320
4321 PR c++/48277
4322 * semantics.c (finish_call_expr): Remove assert.
4323
4324 PR c++/48280
4325 * method.c (defaultable_fn_check): Templates are not defaultable.
4326
4327 * parser.c (cp_parser_init_declarator): Avoid redundant
4328 cp_finish_decl for member declarations.
4329
4330 2011-03-30 Jason Merrill <jason@redhat.com>
4331
4332 PR c++/48212
4333 * semantics.c (non_const_var_error): Just return if DECL_INITIAL
4334 is error_mark_node.
4335
4336 2011-03-30 Jason Merrill <jason@redhat.com>
4337
4338 PR c++/48369
4339 * semantics.c (potential_constant_expression_1): Handle
4340 UNORDERED_EXPR and ORDERED_EXPR.
4341
4342 PR c++/48281
4343 * semantics.c (finish_compound_literal): Do put static/constant
4344 arrays in static variables.
4345
4346 * call.c (convert_like_real) [ck_list]: Build up the
4347 initializer_list object directly.
4348 * decl.c (build_init_list_var_init): Adjust.
4349
4350 * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
4351 * decl.c (reshape_init_array_1): Likewise.
4352
4353 2011-03-29 Jason Merrill <jason@redhat.com>
4354
4355 PR c++/48265
4356 * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
4357 the variable is constant before looking at its initializer.
4358
4359 PR c++/48319
4360 * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
4361
4362 PR c++/48089
4363 * semantics.c (potential_constant_expression_1): Change error about
4364 use of *this in constructor into sorry.
4365
4366 PR c++/48296
4367 * decl.c (cp_finish_decl): Defer validation of constexpr member
4368 functions.
4369 * class.c (finalize_literal_type_property): Validate them here.
4370 * semantics.c (is_valid_constexpr_fn): Don't check completeness.
4371
4372 * semantics.c (is_valid_constexpr_fn): Specify input location.
4373
4374 2011-03-28 Jason Merrill <jason@redhat.com>
4375
4376 PR c++/48313
4377 * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
4378 from overloaded function.
4379
4380 Core 1232
4381 * call.c (build_array_conv): New.
4382 (implicit_conversion): Use it.
4383
4384 * call.c (reference_binding): Allow direct binding to an array
4385 rvalue.
4386
4387 Core 898
4388 * parser.c (cp_parser_compound_statement): Add function_body parm.
4389 Complain about non-body compound-stmt in constexpr fn.
4390 (cp_parser_primary_expression, cp_parser_statement): Adjust.
4391 (cp_parser_implicitly_scoped_statement): Adjust.
4392 (cp_parser_function_body, cp_parser_try_block): Adjust.
4393 (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
4394 (cp_parser_objc_try_catch_finally_statement): Adjust.
4395
4396 Core 898
4397 * semantics.c (constexpr_fn_retval): New. Allow using-declaration
4398 and using-definition.
4399 (register_constexpr_fundef): Call it.
4400
4401 * except.c (build_noexcept_spec): Call cxx_constant_value after
4402 converting to bool.
4403
4404 2011-03-25 Kai Tietz <ktietz@redhat.com>
4405
4406 * lex.c (interface_strcmp): Handle dos-paths.
4407 (handle_pragma_implementation): Use filename_cmp instead of
4408 strcmp.
4409 (in_main_input_context): Likewise.
4410
4411 2011-03-25 Jason Merrill <jason@redhat.com>
4412
4413 Core 1135
4414 * method.c (defaulted_late_check): Check for exception spec mismatch.
4415 (defaultable_fn_check): Allow exception spec and virtual.
4416 * class.c (check_for_override): A virtual dtor is non-trivial.
4417
4418 PR c++/48289
4419 * pt.c (build_non_dependent_expr): Keep dereferences outside the
4420 NON_DEPENDENT_EXPR.
4421
4422 2011-03-25 Kai Tietz <ktietz@redhat.com>
4423
4424 * decl.c (decls_match): Replace target hook
4425 call of comp_type_attributes by version in tree.c file.
4426 * search.c (check_final_overrider): Likewise.
4427 * typeck.c (structural_comptypes): Likewise.
4428
4429 2011-03-21 Kai Tietz <ktietz@redhat.com>
4430
4431 PR target/12171
4432 * cxx-pretty-print.c (pp_cxx_ptr_operator):
4433 Display allowed attributes for function pointer types.
4434 * error.c (dump_type_prefix): Likewise.
4435
4436 * tree.c (cxx_attribute_table): Adjust table.
4437
4438 2011-03-18 Jason Merrill <jason@redhat.com>
4439
4440 PR c++/48162
4441 * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
4442
4443 PR c++/48118
4444 * call.c (build_over_call): Don't skip ck_rvalue.
4445
4446 2011-03-17 Jason Merrill <jason@redhat.com>
4447
4448 PR c++/47504
4449 * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
4450 the conversion set TREE_OVERFLOW.
4451
4452 Core 1212
4453 * semantics.c (finish_decltype_type): Return T&& for xvalue.
4454 * typeck.c (unlowered_expr_type): Preserve cv-quals.
4455
4456 PR c++/48166
4457 * decl.c (revert_static_member_fn): Strip function-cv-quals.
4458
4459 2011-03-16 Jason Merrill <jason@redhat.com>
4460
4461 PR c++/48089
4462 * semantics.c (potential_constant_expression_1): Don't allow *this
4463 in a constructor.
4464 (register_constexpr_fundef): Use potential_rvalue_constant_expression.
4465
4466 PR c++/47301
4467 * decl.c (compute_array_index_type): Don't bother trying to deal
4468 with literal classes in ABI v1.
4469
4470 PR c++/46336
4471 * decl.c (duplicate_decls): Return NULL_TREE for clashing
4472 C functions.
4473
4474 PR c++/47570
4475 * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
4476 use the generic binary expression handling.
4477
4478 2011-03-16 Diego Novillo <dnovillo@google.com>
4479
4480 * Make-lang.in (CXX_PARSER_H): New.
4481 (cp/parser.o): Add dependency on CXX_PARSER_H.
4482 Add dependency on tree-pretty-print.h
4483 (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
4484 * cp-lang.c: Include parser.h.
4485 * parser.c: Include parser.h.
4486 (struct cp_token): Add bitfield purged_p.
4487 Update all users.
4488 Move to parser.h.
4489 (CPP_PURGED): Remove. Update all users.
4490 (struct cp_lexer): Change field buffer to be a VEC of cp_token.
4491 Remove field buffer_length.
4492 Update all users.
4493 Move to parser.h.
4494 (struct tree_check): Move to parser.h.
4495 (cp_token_position): Likewise.
4496 (struct cp_token_cache): Likewise.
4497 (CPP_KEYWORD): Likewise.
4498 (CPP_TEMPLATE_ID): Likewise.
4499 (CPP_NESTED_NAME_SPECIFIER): Likewise.
4500 (N_CP_TTYPES): Likewise.
4501 (enum cp_parser_status_kind): Likewise.
4502 (struct cp_parser_context): Likewise.
4503 (struct cp_default_arg_entry_d): Likewise.
4504 (struct cp_unparsed_functions_entry_d): Likewise.
4505 (struct cp_parser): Likewise.
4506 (cp_lexer_dump_tokens): New.
4507 (cp_lexer_debug_tokens): New.
4508 (cp_lexer_finished_p): New.
4509 (cp_lexer_alloc): Factor out of cp_lexer_new_main.
4510 (cp_lexer_new_main): Re-write main lexing loop to push
4511 tokens into the new VEC buffer.
4512 (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
4513 Do not abort if the token type is not recognized, just print
4514 its code.
4515 * parser.h: New file.
4516 * config-lang.in (gtfiles): Add cp/parser.h.
4517
4518 2011-03-16 Jason Merrill <jason@redhat.com>
4519
4520 Core 1148
4521 * typeck.c (check_return_expr): Fix conditions for setting
4522 LOOKUP_PREFER_RVALUE.
4523
4524 * call.c (build_over_call): Remove require_complete_type_sfinae call.
4525
4526 PR c++/48132
4527 * decl.c (check_array_designated_initializer): Allow integer index.
4528 (reshape_init_array_1): Set index on the elements.
4529
4530 2011-03-16 Jason Merrill <jason@redhat.com>
4531
4532 PR c++/48113
4533 * typeck.c (convert_for_initialization): Use
4534 perform_implicit_conversion_flags.
4535 * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
4536 rvaluedness_matches_p on ck_rvalue.
4537 (convert_like_real) [ck_rvalue]: And restore it here.
4538
4539 PR c++/48115
4540 * call.c (convert_arg_to_ellipsis): Handle incomplete type.
4541
4542 2011-03-16 Jason Merrill <jason@redhat.com>
4543
4544 * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
4545 committed to this tentative parse.
4546
4547 PR c++/47999
4548 * semantics.c (finish_call_expr): Preserve reference semantics
4549 in templates.
4550
4551 * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
4552
4553 2011-03-16 Jakub Jelinek <jakub@redhat.com>
4554
4555 * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
4556 DECL_LANG_SPECIFIC is NULL.
4557
4558 2011-03-15 Jason Merrill <jason@redhat.com>
4559
4560 Core 1074
4561 * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
4562 check value_dependent_expression_p on the operand.
4563
4564 * semantics.c (push_cx_call_context): Return bool.
4565 (cxx_eval_call_expression): Handle excess depth.
4566
4567 Core 1191
4568 * method.c (synthesized_method_walk): Cleanups don't affect the
4569 triviality of a constructor, but do affect deletion and exception
4570 specification.
4571
4572 2011-03-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4573
4574 * decl2.c (cp_check_const_attributes): New.
4575 (cplus_decl_attributes): Call cp_check_const_attributes.
4576
4577 2011-03-15 Jason Merrill <jason@redhat.com>
4578
4579 PR c++/34758
4580 * call.c (convert_default_arg): Use DECL_ORIGIN of fn. Check for
4581 recursion first.
4582 (push_defarg_context, pop_defarg_context): New.
4583 * parser.c (cp_parser_late_parsing_default_args): Use them.
4584 * cp-tree.h: Declare them.
4585
4586 2011-03-11 Dodji Seketeli <dodji@redhat.com>
4587
4588 * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
4589 the argument of the indirection operator should not be dependent.
4590 Fix the comment.
4591
4592 2011-03-11 Jason Merrill <jason@redhat.com>
4593
4594 PR c++/47125
4595 * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
4596
4597 PR c++/47144
4598 * parser.c (cp_parser_template_type_arg): Set
4599 type_definition_forbidden_message.
4600
4601 PR c++/47808
4602 * decl.c (compute_array_index_type): Discard folding
4603 if it didn't produce a constant.
4604
4605 2011-03-11 Jakub Jelinek <jakub@redhat.com>
4606
4607 PR c++/48035
4608 * init.c (build_zero_init_1): Extracted from build_zero_init.
4609 Add FIELD_SIZE argument, if non-NULL and field bit_position
4610 as not smaller than that, don't add that field's initializer.
4611 Pass DECL_SIZE as last argument to build_zero_init_1
4612 for DECL_FIELD_IS_BASE fields.
4613 (build_zero_init): Use build_zero_init_1.
4614
4615 2011-03-10 Jason Merrill <jason@redhat.com>
4616
4617 PR c++/48029
4618 * pt.c (iterative_hash_template_arg): Remove special case for
4619 ARRAY_TYPE.
4620
4621 PR c++/47198
4622 * parser.c (cp_parser_single_declaration): Just return if
4623 cp_parser_parse_and_diagnose_invalid_type_name complained.
4624
4625 2011-03-09 Jason Merrill <jason@redhat.com>
4626
4627 PR c++/44629
4628 * pt.c (unify): An unresolved overload is a nondeduced context.
4629
4630 2011-03-09 Martin Jambor <mjambor@suse.cz>
4631
4632 PR tree-optimization/47714
4633 * method.c (use_thunk): Clear addressable flag of thunk arguments.
4634
4635 2011-03-08 Dodji Seketeli <dodji@redhat.com>
4636
4637 PR c++/47705
4638 * pt.c (convert_nontype_argument): Only call decay_conversion on
4639 arrays.
4640
4641 2011-03-08 Jason Merrill <jason@redhat.com>
4642
4643 PR c++/47488
4644 * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
4645
4646 PR c++/47705
4647 * pt.c (convert_nontype_argument): Don't crash on non-pointer
4648 argument to pointer parameter.
4649
4650 PR c++/45651
4651 * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
4652 !TREE_PUBLIC decls.
4653
4654 2011-03-08 Dodji Seketeli <dodji@redhat.com>
4655
4656 PR c++/47957
4657 * name-lookup.c (binding_to_template_parms_of_scope_p): Only
4658 consider scopes of primary template definitions. Adjust comments.
4659
4660 2011-03-07 Jason Merrill <jason@redhat.com>
4661
4662 PR c++/48003
4663 * pt.c (convert_nontype_argument): Fix -fpermissive allowing
4664 integer overflow.
4665 * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
4666
4667 PR c++/48015
4668 * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
4669
4670 PR c++/48008
4671 * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
4672 (write_CV_qualifiers_for_type): Not here.
4673
4674 2011-03-06 Joseph Myers <joseph@codesourcery.com>
4675
4676 * lang-specs.h: Match -save-temps* instead of -save-temps.
4677
4678 2011-03-05 Jason Merrill <jason@redhat.com>
4679
4680 * mangle.c (write_expression): Change ABI v6 to v5.
4681 (write_type): Likewise.
4682
4683 2011-03-04 Jan Hubicka <jh@suse.cz>
4684
4685 PR lto/47497
4686 * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
4687 and cgraph_add_thunk.
4688 * method.c (make_alias_for_thunk, use_thunk): Likewise.
4689 * mangle.c (mangle_decl): Likewise.
4690
4691 2011-03-04 Jason Merrill <jason@redhat.com>
4692
4693 PR c++/47971
4694 * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
4695 (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
4696
4697 PR c++/46220
4698 * search.c (check_final_overrider): Allow pointer to same incomplete
4699 class type with different cv-quals.
4700
4701 2011-03-03 Paolo Carlini <paolo.carlini@oracle.com>
4702
4703 PR c++/47974
4704 * pt.c (tsubst_template_args): Check argument t for error_mark_node.
4705
4706 2011-03-03 Jason Merrill <jason@redhat.com>
4707
4708 PR c++/47950
4709 * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
4710
4711 2011-03-02 Jason Merrill <jason@redhat.com>
4712
4713 PR c++/47950
4714 * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
4715
4716 PR c++/47774
4717 * tree.c (build_vec_init_elt): Split out from...
4718 (build_vec_init_expr): ...here.
4719 (diagnose_non_constexpr_vec_init): New fn.
4720 * semantics.c (potential_constant_expression_1): Use it.
4721 * cp-tree.h: Declare it.
4722
4723 2011-03-01 Jason Merrill <jason@redhat.com>
4724
4725 PR c++/46159
4726 * parser.c (cp_parser_primary_expression): Don't warn about a
4727 failed tentative parse.
4728
4729 PR c++/47200
4730 * semantics.c (cxx_bind_parameters_in_call): Don't call
4731 adjust_temp_type on non-constant args.
4732
4733 PR c++/47851
4734 * call.c (standard_conversion): Provide requested cv-quals on
4735 class rvalue conversion.
4736
4737 PR c++/46282
4738 * decl2.c (grokbitfield): Handle type-dependent width.
4739
4740 2011-02-28 Jason Merrill <jason@redhat.com>
4741
4742 PR c++/47873
4743 * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
4744 after checking for a non-thunk.
4745
4746 2011-02-26 Jason Merrill <jason@redhat.com>
4747
4748 PR c++/47904
4749 * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
4750 * pt.c (iterative_hash_template_arg): And hash it.
4751
4752 PR c++/47897
4753 * semantics.c (non_const_var_error): Split out from...
4754 (cxx_eval_constant_expression): ...here.
4755 (potential_constant_expression_1) [VAR_DECL]: Use it.
4756 Allow dependent variables.
4757
4758 2011-02-24 Jason Merrill <jason@redhat.com>
4759
4760 * parser.c (cp_parser_constant_expression): Set
4761 non_integral_constant_expression correctly for C++0x too.
4762 (cp_parser_static_assert): Allow non-constant expression.
4763 (cp_parser_direct_declarator): Expect non_constant_p to be set
4764 properly for C++0x.
4765 * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
4766 * semantics.c (maybe_constant_value): Check type_unknown_p too.
4767 (potential_rvalue_constant_expression): New.
4768 (require_potential_rvalue_constant_expression): New.
4769
4770 2011-02-23 Jason Merrill <jason@redhat.com>
4771
4772 * cp-tree.h (DECL_PARM_LEVEL): New.
4773 (struct lang_decl_parm): Add level field.
4774 * name-lookup.c (function_parm_depth): New fn.
4775 * name-lookup.h: Declare it.
4776 * parser.c (cp_parser_parameter_declaration_list): Use it.
4777 * mangle.c (struct globals): Add parm_depth field.
4778 (write_bare_function_type): Adjust it.
4779 (write_expression): Include the level delta in PARM_DECL mangling
4780 for abi >= 6.
4781
4782 * semantics.c (finish_decltype_type): Remove shortcut for decltype
4783 of id-expression.
4784 * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
4785
4786 2011-02-23 Nathan Froyd <froydnj@codesourcery.com>
4787
4788 PR c++/46868
4789 * parser.c (cp_parser_class_specifier): Require a closing brace
4790 to attempt error recovery.
4791
4792 2011-02-23 Jakub Jelinek <jakub@redhat.com>
4793
4794 PR c++/47833
4795 * pt.c (struct pending_template): Add chain_next GTY option.
4796 * decl.c (struct named_label_use_entry): Likewise.
4797
4798 2011-02-22 Paolo Carlini <paolo.carlini@oracle.com>
4799
4800 PR c++/47242
4801 * semantics.c (build_lambda_object): Bail out if a field is
4802 error_mark_node.
4803
4804 2011-02-22 Dodji Seketeli <dodji@redhat.com>
4805
4806 PR c++/47666
4807 * class.c (dfs_declare_virt_assop_and_dtor)
4808 (declare_virt_assop_and_dtor): New static functions.
4809 (add_implicitly_declared_members): Use
4810 declare_virt_assop_and_dtor.
4811
4812 2011-02-21 Jason Merrill <jason@redhat.com>
4813
4814 PR c++/47207
4815 * decl2.c (decl_constant_var_p): A constexpr var needs an
4816 initializer to be constant.
4817 * semantics.c (cxx_eval_constant_expression): Complain about
4818 constexpr var used in its own initializer.
4819 * call.c (set_up_extended_ref_temp): Set
4820 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
4821
4822 2011-02-20 Jason Merrill <jason@redhat.com>
4823
4824 PR c++/47199
4825 * semantics.c (cxx_eval_call_expression): Call
4826 cxx_eval_constant_expression in trivial shortcut.
4827
4828 PR c++/46831
4829 * call.c (convert_class_to_reference): Don't try to set up a
4830 second conv sequence for non-viable candidates.
4831
4832 PR c++/47703
4833 * error.c (location_of): Handle non-tagged types.
4834
4835 PR c++/46472
4836 * method.c (process_subob_fn): Instantiate constexpr templates.
4837 * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
4838
4839 2011-02-20 Dodji Seketeli <dodji@redhat.com>
4840
4841 PR c++/46394
4842 * pt.c (tsubst_pack_expansion): do not use
4843 cp_tree_equal/same_type_p to detect an expansion of a parameter
4844 pack.
4845
4846 2011-02-19 Jason Merrill <jason@redhat.com>
4847
4848 PR c++/47503
4849 * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
4850
4851 2011-02-18 Paolo Carlini <paolo.carlini@oracle.com>
4852
4853 PR c++/47795
4854 * semantics.c (finish_non_static_data_member): Early return if
4855 object is error_mark_node.
4856
4857 2011-02-18 Dodji Seketeli <dodji@redhat.com>
4858
4859 PR c++/47208
4860 * pt.c (do_auto_deduction): Do not mention error_mark_node in
4861 diagnostics.
4862 * semantics.c (finish_id_expression): Do not pass erroneous decl
4863 to decl_constant_var_p.
4864
4865 2011-02-17 Jakub Jelinek <jakub@redhat.com>
4866
4867 PR c++/47783
4868 * cvt.c (convert_from_reference): Call mark_exp_read.
4869
4870 2011-02-11 Dodji Seketeli <dodji@redhat.com>
4871
4872 PR c++/47172
4873 * pt.c (finish_call_expr): Consider a call expression that has a
4874 dependent "this" pointer as being dependent. Add comments.
4875 (dependent_type_p, type_dependent_expression_p): Update comments.
4876
4877 2011-02-16 Dodji Seketeli <dodji@redhat.com>
4878
4879 PR c++/47326
4880 * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
4881 expansion arguments are not evaluated.
4882
4883 2011-02-16 Jakub Jelinek <jakub@redhat.com>
4884
4885 PR c++/47704
4886 * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
4887 instead of TYPE_LANG_FLAG_3.
4888 * pt.c (lookup_template_class): Copy over
4889 ENUM_FIXED_UNDERLYING_TYPE_P.
4890
4891 2011-02-15 Jason Merrill <jason@redhat.com>
4892
4893 PR c++/46807
4894 * method.c (synthesized_method_walk): Always exit early for
4895 trivial fn in C++98 mode.
4896
4897 2011-02-14 Jason Merrill <jason@redhat.com>
4898
4899 PR c++/47482
4900 * parser.c (cp_parser_enumerator_definition): Call
4901 fold_non_dependent_expr.
4902
4903 2011-02-09 Jason Merrill <jason@redhat.com>
4904
4905 * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
4906 * semantics.c (finish_fname): Only return the name if we're in
4907 a function.
4908
4909 * decl.c (build_enumerator): Don't perform integral promotions on
4910 non-integral constants.
4911
4912 * cvt.c (convert_to_void): Handle null op1.
4913
4914 * class.c (type_has_constexpr_default_constructor): Make sure the
4915 caller stripped an enclosing array.
4916 * init.c (perform_member_init): Strip arrays before calling it.
4917
4918 PR c++/47511
4919 * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
4920
4921 2011-02-03 Dodji Seketeli <dodji@redhat.com>
4922
4923 PR c++/47398
4924 * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
4925 template parameters in account.
4926
4927 2011-02-03 Nathan Froyd <froydnj@codesourcery.com>
4928
4929 PR c++/46890
4930 * parser.c (cp_parser_class_specifier): Fix setting of
4931 want_semicolon.
4932
4933 2011-01-31 Jakub Jelinek <jakub@redhat.com>
4934
4935 PR c++/47416
4936 * semantics.c (build_data_member_initialization): Handle
4937 STATEMENT_LIST always instead of just for CLEANUP_BODY.
4938
4939 2011-01-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4940
4941 * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
4942 LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
4943
4944 2011-01-29 Dodji Seketeli <dodji@redhat.com>
4945
4946 PR c++/47311
4947 * cp-tree.h (fixup_template_parms): Declare.
4948 * pt.c (end_template_parm_list): Do not fixup template parms here.
4949 (fixup_template_parms): Remove static. Fix typo in the
4950 comments. Remove useless code statement.
4951 (fixup_template_parm): For a template template parameter, fixup
4952 its attributes before fixing up its type.
4953 * parser.c
4954 (cp_parser_template_declaration_after_export): After parsing
4955 template parameters fixup their types.
4956
4957 2011-01-26 Jakub Jelinek <jakub@redhat.com>
4958
4959 PR c++/47476
4960 * semantics.c (potential_constant_expression_1): Handle
4961 TRUTH_XOR_EXPR.
4962
4963 2011-01-26 Dave Korn <dave.korn.cygwin@gmail.com>
4964
4965 PR c++/43601
4966 * semantics.c (expand_or_defer_fn_1): Handle it.
4967 * decl2.c (decl_needed_p): Likewise.
4968
4969 2011-01-21 Jason Merrill <jason@redhat.com>
4970
4971 PR c++/47041
4972 * semantics.c (build_constexpr_constructor_member_initializers):
4973 Handle trivial copy.
4974
4975 2011-01-21 Jakub Jelinek <jakub@redhat.com>
4976
4977 PR c++/47388
4978 * semantics.c (begin_for_stmt): If -fno-for-scope, don't
4979 assume init must be NULL if scope is NULL.
4980 (begin_range_for_stmt): Likewise.
4981
4982 2011-01-21 Jason Merrill <jason@redhat.com>
4983
4984 PR c++/46552
4985 * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
4986
4987 PR c++/46977
4988 * semantics.c (potential_constant_expression_1): Split out from
4989 potential_constant_expression. Add want_rval parm. Handle
4990 template expression forms. Don't enforce restriction on address
4991 of automatic variable here. Add a couple of diagnostics that
4992 had been missing.
4993 (require_potential_constant_expression): New entry point.
4994 (build_data_member_initialization, register_constexpr_fundef): Adjust.
4995 (maybe_constant_value): Check potential_constant_expression.
4996 * pt.c (fold_non_dependent_expr_sfinae): Likewise.
4997 * tree.c (build_vec_init_expr): Adjust.
4998
4999 2011-01-19 Jakub Jelinek <jakub@redhat.com>
5000
5001 PR c++/47303
5002 * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
5003 or DECL_EXTERNAL.
5004
5005 2011-01-17 Jason Merrill <jason@redhat.com>
5006
5007 PR c++/47067
5008 * semantics.c (base_field_constructor_elt): New fn.
5009 (cxx_eval_bare_aggregate): Use it.
5010 (build_data_member_initialization): Leave COMPONENT_REF for
5011 vfield inits.
5012
5013 2011-01-14 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
5014
5015 * parser.c (cp_parser_range_for): Remove the "unused variable" warning
5016 workaround.
5017
5018 2011-01-15 Giovanni Funchal <gafunchal@gmail.com>
5019 Jonathan Wakely <jwakely.gcc@gmail.com>
5020
5021 PR c++/33558
5022 * decl.c (grokdeclarator): Reject mutable reference members.
5023
5024 2011-01-14 Jason Merrill <jason@redhat.com>
5025
5026 PR c++/47289
5027 * pt.c (coerce_template_parms): Fix error recovery.
5028
5029 PR c++/46903
5030 * typeck2.c (check_narrowing): Only check arithmetic types.
5031
5032 PR c++/46688
5033 * tree.c (build_vec_init_expr): Handle flexible array
5034 properly.
5035
5036 2011-01-13 Kai Tietz <kai.tietz@onevision.com>
5037
5038 PR c++/47213
5039 * cp-tree.h (CLASSTYPE_VISIBILITY): Use
5040 TYPE_MAIN_DECL instead of TYPE_NAME.
5041 (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
5042 * decl2.c (determine_visibility): Add check
5043 of CLASS_TYPE_P for underlying_type.
5044
5045 2011-01-12 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
5046
5047 * cp-tree.h (begin_for_scope): New prototype.
5048 (begin_for_stmt): Update prototype.
5049 (begin_range_for_stmt): Update prototype.
5050 * init.c (build_vec_init): Update call to begin_for_stmt.
5051 * parser.c (cp_parser_for): New.
5052 (cp_parser_c_for): Add three new parameters.
5053 (cp_parser_range_for): Likewise. Most parsing code removed.
5054 (cp_parser_iteration_statement): Call cp_parser_for instead of
5055 cp_parser_c_for and cp_parser_range_for.
5056 (cp_parser_for_init_statement): Add new parameter and return type.
5057 (cp_parser_block_declaration): Update call to
5058 cp_parser_simple_declaration.
5059 (cp_parser_simple_declaration): Add new parameter.
5060 Update call to cp_parser_init_declarator.
5061 (cp_parser_init_declarator): Add new parameter.
5062 * pt.c (tsubst_expr): Update call to begin_for_stmt.
5063 * semantics.c (begin_for_scope): New.
5064 (begin_for_stmt): Add two new parameters.
5065 (begin_range_for_stmt): Likewise.
5066
5067 2011-01-12 Nicola Pero <nicola.pero@meta-innovation.com>
5068
5069 * parser.c (cp_parser_objc_at_property_declaration): Improved
5070 error message.
5071
5072 2011-01-11 Dodji Seketeli <dodji@redhat.com>
5073
5074 PR debug/46955
5075 * cp-lang.c (get_template_innermost_arguments_folded)
5076 (get_template_argument_pack_elems_folded)
5077 (template_arg_needs_folding, fold_cplus_constants): New static
5078 functions.
5079 (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
5080 get_template_innermost_arguments_folded.
5081 (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
5082 get_template_argument_pack_elems_folded.
5083
5084 2011-01-11 Jason Merrill <jason@redhat.com>
5085
5086 PR c++/46658
5087 * init.c (build_new_1): Handle value-init in templates differently.
5088
5089 PR c++/45520
5090 * tree.c (maybe_dummy_object): Check current_class_ref against
5091 context, not current_class_type.
5092
5093 2011-01-08 Nicola Pero <nicola.pero@meta-innovation.com>
5094
5095 PR objc/47078
5096 * parser.c (cp_parser_objc_typename): If the type is unknown, for
5097 error recovery purposes behave as if it was not specified so that
5098 the default type is used.
5099
5100 2011-01-07 Jakub Jelinek <jakub@redhat.com>
5101
5102 PR c++/47022
5103 * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
5104 for the second build_x_va_arg argument.
5105
5106 2011-01-05 Tom Tromey <tromey@redhat.com>
5107
5108 * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
5109 (lvalue_or_else): Likewise.
5110
5111 2011-01-01 Kai Tietz <kai.tietz@onevision.com>
5112
5113 PR target/38662
5114 * tree.c (cxx_type_hash_eq):
5115 Allow METHOD_TYPE, too.
5116
5117 \f
5118 Copyright (C) 2011 Free Software Foundation, Inc.
5119
5120 Copying and distribution of this file, with or without modification,
5121 are permitted in any medium without royalty provided the copyright
5122 notice and this notice are preserved.