re PR c++/37093 (ICE with pointer to member template parameters)
[gcc.git] / gcc / cp / ChangeLog
1 2009-11-02 Dodji Seketeli <dodji@redhat.com>
2
3 PR c++/37093
4 * pt.c (check_valid_ptrmem_cst_expr): New function.
5 (convert_nontype_argument): Use it to output an error for
6 illegal pointer to member expressions used as template arguments.
7
8 2009-11-02 Jason Merrill <jason@redhat.com>
9
10 Restrict DR 757 change to C++0x mode.
11 * decl2.c (mark_used): Check cxx_dialect.
12 * decl.c (grokfndecl): Do check type linkage in C++98 mode.
13 (grokvardecl): Likewise.
14 * pt.c (check_instantiated_arg): Likewise.
15
16 2009-11-02 Jakub Jelinek <jakub@redhat.com>
17
18 PR c++/41774
19 * name-lookup.c (handle_namespace_attrs): Pass 1 as last argument to
20 push_visibility.
21 * parser.c (cp_parser_namespace_definition): Pass 1 as argument to
22 pop_visibility.
23 * rtti.c (push_abi_namespace): Pass 2 as last argument to
24 push_visibility.
25 (pop_abi_namespace): Pass 2 as argument to pop_visibility.
26
27 2009-10-31 Jason Merrill <jason@redhat.com>
28
29 * tree.c (cv_unqualified): New fn.
30 * cp-tree.h: Declare it.
31 * typeck.c (decay_conversion): Use it instead of TYPE_MAIN_VARIANT.
32
33 * rtti.c (tinfo_name): Fix lengths for private case.
34
35 2009-10-31 Jason Merrill <jason@redhat.com>
36
37 PR c++/41754
38 * call.c (compare_ics): Avoid bad union use when
39 comparing two ck_lists.
40
41 2009-10-30 Jerry Quinn <jlquinn@optonline.net>
42
43 * mangle.c (mangle_type_string_for_rtti): Reapply 153734.
44 (needs_fake_anon): Likewise.
45 (write_name): Likewise.
46 (write_nested_name): Likewise.
47 * cp-tree.h (mangle_type_string_for_rtti): Likewise.
48 (get_anonymous_namespace): Likewise.
49 * name-lookup.c (get_anonymous_namespace_name): Likewise.
50 * rtti.c (tinfo_name): Likewise, with +1 in the second
51 build_string call fixed.
52 (tinfo_base_init): Likewise.
53
54 2009-10-30 Jason Merrill <jason@redhat.com>
55
56 Revert:
57 * decl.c (cp_fname_init): Correct build_string argument.
58
59 2009-10-30 Jerry Quinn <jlquinn@optonline.net>
60
61 * mangle.c (mangle_type_string_for_rtti): Revert 153734.
62 (needs_fake_anon): Likewise.
63 (write_name): Likewise.
64 (write_nested_name): Likewise.
65 * cp-tree.h (mangle_type_string_for_rtti): Likewise.
66 (get_anonymous_namespace): Likewise.
67 * name-lookup.c (get_anonymous_namespace_name): Likewise.
68 * rtti.c (tinfo_name): Likewise.
69 (tinfo_base_init): Likewise.
70
71 2009-10-30 Dodji Seketeli <dodji@redhat.com>
72
73 PR c++/41863
74 * pt.c (iterative_hash_template_arg): articifial parms
75 don't have DECL_PARM_INDEX set. Do not hash it.
76
77 2009-10-28 Jerry Quinn <jlquinn@optonline.net>
78
79 * mangle.c (mangle_type_string_for_rtti): Revert r149964.
80 (needs_fake_anon): Likewise.
81 (write_name): Likewise.
82 (write_nested_name): Likewise.
83 * cp-tree.h (mangle_type_string_for_rtti): Likewise.
84 (get_anonymous_namespace): Likewise.
85 * name-lookup.c (get_anonymous_namespace_name): Likewise.
86 * rtti.c (tinfo_name): Insert '*' in front of private names.
87 (tinfo_base_init): Use it.
88
89 2009-10-28 Jason Merrill <jason@redhat.com>
90
91 Core issue 812, 861
92 * name-lookup.c (set_decl_namespace): Deal properly with inline
93 namespaces.
94 (qualified_lookup_using_namespace): Overhaul.
95 * pt.c (print_candidates): Handle getting an OVERLOAD.
96
97 2009-10-28 Jason Merrill <jason@redhat.com>
98
99 * decl.c (cp_fname_init): Correct build_string argument.
100
101 2009-10-27 Jason Merrill <jason@redhat.com>
102
103 Allow no-capture lambdas to convert to function pointer.
104 * semantics.c (maybe_add_lambda_conv_op): New.
105 * parser.c (cp_parser_lambda_expression): Call it.
106 (cp_parser_lambda_declarator_opt): Make op() static if
107 no captures.
108 * mangle.c (write_closure_type_name): Adjust.
109 * semantics.c (finish_this_expr): Adjust.
110 * decl.c (grok_op_properties): Allow it.
111 * call.c (build_user_type_conversion_1): Handle static conversion op.
112 (build_op_call): And op().
113
114 2009-10-26 Jakub Jelinek <jakub@redhat.com>
115
116 PR debug/41828
117 * cp-lang.c (cxx_dwarf_name): Return NULL instead of
118 <anonymous ...> for anonymous aggregate names.
119
120 2009-10-26 Jason Merrill <jason@redhat.com>
121
122 PR c++/38796, Core issue 906
123 * cp-tree.h (DECL_DEFAULTED_OUTSIDE_CLASS_P): New.
124 (DECL_DEFAULTED_IN_CLASS_P): New.
125 * class.c (user_provided_p): Non-static.
126 (check_methods): Use it.
127 (check_bases_and_members): Check defaulted fns.
128 (defaultable_fn_p): Move and rename to...
129 * method.c (defaultable_fn_check): ...this.
130 (defaulted_late_check): New.
131 * pt.c (tsubst_decl): Call it.
132 * decl2.c (grokfield): Adjust.
133 * decl.c (cp_finish_decl): Adjust.
134 (grok_special_member_properties): Use user_provided_p.
135
136 2009-10-26 Dodji Seketeli <dodji@redhat.com>
137
138 PR c++/41785
139 * pt.c (template_args_equal): Handle comparison of
140 an ARGUMENT_PACK_SELECT node with the arguments node it selects into.
141 * cp-tree.def: Fix a typo in the description of TYPE_PACK_EXPANSION.
142
143 2009-10-26 Dodji Seketeli <dodji@redhat.com>
144
145 PR c++/41020
146 * decl.c (decls_match): Use DECL_IS_BUILTIN instead of
147 DECL_BUILT_IN.
148
149 2009-10-23 Dodji Seketeli <dodji@redhat.com>
150
151 PR c++/40808
152 * mangle.c (write_template_args): Allow mangling of empty template
153 argument list. Updated function comments.
154
155 2009-10-23 Jason Merrill <jason@redhat.com>
156
157 * semantics.c (lambda_expr_this_capture): Use thisify_lambda_field.
158
159 * semantics.c (outer_lambda_capture_p): New fn.
160 (thisify_lambda_field): Factor out...
161 (add_default_capture): ...from here.
162 (finish_id_expression): Use them.
163
164 Core issue 899
165 * call.c (add_function_candidate): Only permit explicit conversion
166 ops if copy ctor was called with a single argument.
167
168 * call.c (initialize_reference): Tweak error message.
169
170 2009-10-21 Jakub Jelinek <jakub@redhat.com>
171
172 * mangle.c (finish_mangling_get_identifier): Use
173 obstack_base (mangle_obstack) instead of name_base.
174
175 2009-10-19 Jakub Jelinek <jakub@redhat.com>
176
177 * parser.c (cp_lexer_print_token, cp_parser_is_string_literal,
178 cp_parser_string_literal, cp_parser_primary_expression): Likewise.
179 (cp_lexer_get_preprocessor_token): Use C_LEX_STRING_JOIN instead
180 of C_LEX_RAW_STRINGS.
181
182 2009-10-15 Jason Merrill <jason@redhat.com>
183
184 PR c++/38888
185 * error.c (dump_template_bindings): Wrap argument packs in {}.
186
187 PR c++/38798
188 * parser.c (CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS): New.
189 (cp_parser_type_specifier): Don't try to parse a class-specifier
190 or enum-specifier in that case.
191 (cp_parser_trailing_type_id): New.
192 (cp_parser_late_return_type_opt): Call it.
193 (cp_parser_type_id_1): Add is_trailing_return parm.
194 (cp_parser_type_specifier_seq): Likewise.
195
196 2009-10-14 Jason Merrill <jason@redhat.com>
197
198 PR c++/39866
199 * call.c (print_z_candidates): Don't print deleted candidates.
200 (print_z_candidate): Note deleted candidates.
201
202 2009-10-14 Larry Evans <cppljevans@suddenlink.net>
203
204 PR c++/40092
205 * tree.c (cp_tree_equal): Add test for TEMPLATE_PARM_PARAMETER_PACK
206 equality.
207
208 2009-10-12 Jason Merrill <jason@redhat.com>
209
210 PR c++/37875
211 * parser.c (cp_parser_decltype): Set greater_than_is_operator_p.
212
213 PR c++/37766
214 * pt.c (type_unification_real): Call convert_template_argument
215 for function default template arguments.
216 (check_default_tmpl_args): Suggest -std=c++0x when function default
217 template args seen in C++98 mode.
218
219 2009-10-11 Jason Merrill <jason@redhat.com>
220
221 PR c++/37204
222 * typeck.c (build_reinterpret_cast_1): Handle rvalue refs
223 properly.
224
225 2009-10-11 Richard Guenther <rguenther@suse.de>
226
227 * tree.c (cp_free_lang_data): Drop anonymous aggregate names.
228
229 2009-10-08 Jason Merrill <jason@redhat.com>
230
231 PR c++/36816
232 * pt.c (maybe_adjust_types_for_deduction): Do rvalue ref adjustment
233 even when DEDUCE_EXACT.
234
235 PR c++/37177
236 * pt.c (resolve_nondeduced_context): New.
237 * cvt.c (convert_to_void): Call it.
238 * semantics.c (finish_decltype_type): Likewise.
239 * typeck.c (decay_conversion): Here too.
240 * pt.c (tsubst_decl): Don't clobber input_location.
241 Don't register a bad specialization.
242
243 2009-10-07 Gabriel Dos Reis <gdr@cs.tamu.edu>
244
245 * cp-tree.h: Fix location of documentation for DECL_LANG_FLAG_7.
246
247 2009-10-07 Jason Merrill <jason@redhat.com>
248
249 PR c++/39863
250 * pt.c (tsubst_pack_expansion): Don't do anything now if we
251 have incomplete packs of different lengths.
252
253 PR c++/41038
254 * tree.c (build_qualified_name): Call convert_from_reference.
255
256 2009-10-06 Jason Merrill <jason@redhat.com>
257
258 Fix lookup of initialized captures in unevaluated context.
259 * cp-tree.h (DECL_NORMAL_CAPTURE_P): New.
260 * name-lookup.c (qualify_lookup): Check it.
261 * parser.c (cp_parser_lambda_introducer): Pass explicit_init_p
262 to add_capture.
263 * semantics.c (add_capture): Set DECL_NORMAL_CAPTURE_P
264 on captures without explicit init.
265 (add_default_capture): Pass explicit_init_p.
266
267 Fix capture by copy of types with explicit copy constructor.
268 * cp-tree.h (TARGET_EXPR_DIRECT_INIT_P): New.
269 (DIRECT_INIT_EXPR_P): New.
270 * typeck.c (convert_for_initialization): Just return if
271 DIRECT_INIT_EXPR_P.
272 * semantics.c (build_lambda_object): Use
273 TARGET_EXPR_DIRECT_INIT_P for normal captures.
274
275 2009-10-05 Jason Merrill <jason@redhat.com>
276
277 * parser.c: Mark lambda_scope and lambda_count for PCH.
278
279 2009-10-03 Jason Merrill <jason@redhat.com>
280
281 PR c++/41553
282 * parser.c (cp_parser_lambda_introducer): Avoid infinite loop on
283 parse error.
284
285 2009-10-02 Jason Merrill <jason@redhat.com>
286
287 * mangle.c (write_unnamed_type_name): Implement.
288 (local_class_index): Split out from...
289 (discriminator_for_local_entity): ...here.
290 (nested_anon_class_index): New.
291 * cp-tree.h (TYPE_FUNCTION_SCOPE_P): New.
292
293 2009-10-02 Janis Johnson <janis187@us.ibm.com>
294
295 * call.c (convert_arg_to_ellipsis): Avoid promoting decimal32
296 to double.
297
298 2009-10-01 Jason Merrill <jason@redhat.com>
299
300 * parser.c (cp_parser_lambda_expression): Compute visibility.
301 (no_linkage_lambda_type_p): Remove.
302 * cp-tree.h: Remove declaration.
303 * tree.c (no_linkage_check): Don't call it. Don't check template
304 args. Don't check TREE_PUBLIC Types.
305
306 2009-10-01 Gabriel Dos Reis <gdr@cse.tamu.edu>
307 Jason Merrill <jason@redhat.com>
308
309 * decl.c (grokdeclarator): Set constexprness before announcing
310 friendship.
311
312 2009-10-01 Gabriel Dos Reis <gdr@cs.tamu.edu>
313
314 * decl.c (record_builtin_java_type): Undo unintended change.
315 (cxx_init_decl_processing): Likewise.
316
317 2009-10-01 Jason Merrill <jason@redhat.com>
318
319 * pt.c (register_specialization): Push DECL_SOURCE_LOCATION to the
320 clones.
321
322 * decl.c (grok_special_member_properties): Only adjust
323 TYPE_HAS_COMPLEX_* if the function is defaulted in the class body.
324 (cp_finish_decl): Push DECL_DELETED_FN/DECL_DEFAULTED_FN to the
325 clones.
326
327 2009-09-30 Gabriel Dos Reis <gdr@cs.tamu.edu>
328
329 * decl.c (check_for_uninitialized_const_var): Check constexpr
330 variables too.
331 (grokdeclarator): Handle `constexpr'.
332 (check_tag_decl): Reject `constexpr'.
333 (check_function_type): Check constexpr functions.
334 * cp-tree.h (ds_constexpr): New cp_decl_spec enumerator.
335 (CLASSTYPE_LITERAL_P): New.
336 (lang_type_class::is_literal): New.
337 (lang_type_class::dummy): Adjust width.
338 (literal_type_p): Declare.
339 * parser.c (cp_parser_check_decl_spec): Print it.
340 (cp_parser_decl_specifier_seq): Accept "constexpr".
341 * semantics.c (validate_constexpr_fundecl): Define.
342 (literal_type_p): Define.
343
344 2009-09-30 Jason Merrill <jason@redhat.com>
345
346 * semantics.c (lambda_expr_this_capture): Fix default capture
347 of explicit capture of 'this'.
348
349 2009-09-30 Jason Merrill <jason@redhat.com>
350
351 * parser.c (cp_parser_lambda_expression): Don't add __ to __this.
352
353 2009-09-30 Jason Merrill <jason@redhat.com>
354
355 * cp-tree.h (LANG_DECL_U2_CHECK): Check LANG_DECL_HAS_MIN.
356
357 2009-09-29 John Freeman <jfreeman08@gmail.com>
358 Jason Merrill <jason@redhat.com>
359
360 Add support for lambda-expressions as per N2927.
361 * cp-tree.def (VEC_INIT_EXPR, LAMBDA_EXPR): New.
362 * cp-tree.h (LAMBDA_TYPE_P, LAMBDA_FUNCTION_P): New.
363 (LAMBDA_EXPR_DEFAULT_CAPTURE_MODE): New.
364 (LAMBDA_EXPR_DEFAULT_CAPTURE_LIST): New.
365 (LAMBDA_EXPR_THIS_CAPTURE, LAMBDA_EXPR_CAPTURES_THIS_P): New.
366 (LAMBDA_EXPR_MUTABLE_P, LAMBDA_EXPR_DEDUCE_RETURN_TYPE_P): New.
367 (LAMBDA_EXPR_RETURN_TYPE, LAMBDA_EXPR_LOCATION): New.
368 (LAMBDA_EXPR_EXTRA_SCOPE, LAMBDA_EXPR_DISCRIMINATOR): New.
369 (struct tree_lambda_expr): New.
370 (union lang_tree_node): Add lambda_expression.
371 (struct lang_type_class): Add lazy_move_ctor flag, lambda_expr field.
372 (CLASSTYPE_LAZY_MOVE_CTOR, CLASSTYPE_LAMBDA_EXPR): New.
373 (LAMBDA_TYPE_EXTRA_SCOPE, VEC_INIT_EXPR_SLOT): New.
374 (VEC_INIT_EXPR_INIT, DECLTYPE_FOR_LAMBDA_CAPTURE): New.
375 (DECLTYPE_FOR_LAMBDA_RETURN): New.
376 (enum special_function_kind): Add sfk_move_constructor.
377 (LAMBDANAME_PREFIX, LAMBDANAME_FORMAT, LAMBDANAME_P): New.
378 * parser.c (cp_parser_lambda_expression, cp_parser_lambda_introducer)
379 (cp_parser_lambda_declarator_opt, cp_parser_lambda_body): New.
380 (start_lambda_scope, record_lambda_scope, finish_lambda_scope): New.
381 (no_linkage_lambda_type_p): New.
382 (cp_parser_primary_expression): Recognize lambda expression.
383 (cp_parser_init_declarator): Note lambda scope.
384 (cp_parser_function_definition_after_declarator): Likewise.
385 (cp_parser_late_parsing_default_args): Likewise.
386 (cp_parser_skip_to_closing_parenthesis): Skip to end of lambda capture
387 lists, too.
388 (cp_parser_parameter_declaration): Don't defer lambda default args.
389 * semantics.c (finish_non_static_data_member, finish_id_expression):
390 Handle default capture for lambda expressions.
391 (finish_this_expr): Handle 'this' keyword inside of lambda expressions.
392 (outer_automatic_var_p): New.
393 (finish_decltype_type): Handle decltypes within lambda expressions.
394 (classtype_has_nothrow_assign_or_copy_p): Synthesized move constructor.
395 (build_lambda_expr, build_lambda_object, begin_lambda_type)
396 (lambda_return_type, lambda_capture_field_type, apply_lambda_return_type)
397 (capture_decltype, add_capture, add_default_capture)
398 (lambda_expr_this_capture): New.
399 * mangle.c (write_unnamed_type_name): New. Incomplete.
400 (write_closure_type_name): New.
401 (write_unqualified_name): Recognize unnamed, closure types.
402 (write_type): Do not write decltypes from lambda expressions.
403 (decl_mangling_context): New.
404 (write_name): Use it. Handle PARM_DECL scope.
405 (write_prefix): Likewise. Handle VAR_DECL/FIELD_DECL scope.
406 (write_compact_number): Factor out from...
407 (write_expression, write_template_param): ...here.
408 (discriminator_for_local_entity): Recognize lambdas.
409 (write_local_name): Handle PARM_DECL scope.
410 * typeck.c (structural_comptypes): Compare decltypes from lambda
411 expressions.
412 (check_return_expr): Deduce lambda return type from multiple return
413 statements.
414 * class.c (add_implicitly_declared_members): Add lazy move constructor
415 for lambda types.
416 (check_bases_and_members): Delete default constructor and assignment
417 operator for lambda types.
418 (maybe_note_name_used_in_class): Do not confuse lambda expression with
419 defining a class.
420 * decl.c (reshape_init_r): Array copy.
421 (grokfndecl): Synthesized move constructor.
422 (cp_tree_node_structure): Lambda expression.
423 * method.c (use_thunk): Synthesized move constructor.
424 (do_build_copy_constructor): Likewise.
425 (locate_copy): Likewise.
426 (implicitly_declare_fn): Likewise.
427 * cp-objcp-common.c (cp_tree_size): Handle LAMBDA_EXPR.
428 * error.c (dump_aggr_type): Recognize lambda type.
429 (dump_function_decl): Recognize lambda function.
430 (function_category): Likewise.
431 (dump_function_name): Hide lambda name.
432 * tree.c (build_array_copy, move): New.
433 (special_function_p): Synthesized move constructor.
434 (no_linkage_check): Handle lambdas.
435 * search.c (lookup_fnfields_1): Synthesized move constructor.
436 * cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr):
437 Handle VEC_INIT_EXPR.
438 * typeck2.c (digest_init_r): Array copy.
439 * pt.c (get_template_info): Don't touch typedefs.
440 (instantiate_decl): Don't resubstitute artificial decls.
441 (tsubst_decl, tsubst, tsubst_copy_and_build): Handle lambdas.
442 (lookup_template_class): Don't fall back on name lookup.
443 * name-lookup.c (make_lambda_name): New.
444 (pushdecl_class_level): Handle default capture for lambda expressions.
445 (qualify_lookup): Handle decltypes within lambda expressions.
446 (pushtag): Handle ts_within_enclosing_non_class in function scope.
447
448 2009-09-28 Janis Johnson <janis187@us.ibm.com>
449
450 * mangle.c (write_builtin_type): Support decimal float types.
451
452 2009-09-28 Richard Henderson <rth@redhat.com>
453
454 * cp-objcp-common.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
455
456 2009-09-24 Jakub Jelinek <jakub@redhat.com>
457
458 * method.c (make_thunk, make_alias_for): Don't set
459 DECL_NO_STATIC_CHAIN.
460 * decl.c (builtin_function_1, grokfndecl): Likewise.
461 * lex.c (build_lang_decl): Likewise.
462
463 2009-09-23 Dodji Seketeli <dodji@redhat.com>
464
465 PR debug/41065
466 * decl.c (cp_finish_decl): Record the types used by the global
467 variable declaration we've just parsed.
468
469 2009-09-22 Dodji Seketeli <dodji@redhat.com>
470
471 * cp-lang.c (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
472 LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P,
473 LANG_HOOKS_GET_GENERIC_FUNCTION_DECL): Initialize these
474 hooks for the c++ FE.
475 * cp-tree.h (function_parameter_pack_p, get_function_template_decl,
476 function_parameter_expanded_from_pack_p): Declare ...
477 * pt.c (function_parameter_pack_p, get_function_template_decl,
478 function_parameter_expanded_from_pack_p): ... new hooks.
479 (get_template_info): Make this more robust.
480 (template_args_variadic_p, make_ith_pack_parameter_name): Add a new
481 line between comment and function.
482 (get_template_argument_pack_elems): Fix comment.
483 (tsubst_decl): Arguments of function parameter packs are not
484 parameter packs themselves.
485
486 2009-09-21 Jason Merrill <jason@redhat.com>
487
488 PR c++/41421
489 * tree.c (trivial_type_p): Fix logic.
490
491 2009-09-21 Jason Merrill <jason@redhat.com>
492
493 * name-lookup.c (push_class_level_binding): Sanity check.
494
495 2009-09-18 Jason Merrill <jason@redhat.com>
496
497 * decl2.c (determine_visibility): Make anonymous types internal.
498 (mark_used): Complain about types without linkage used in
499 decls with internal linkage.
500 (vague_linkage_fn_p): Split out from...
501 * decl.c (maybe_commonize_var): ...here.
502 (grokdeclarator): Adjust linkage when a typedef gives linkage name.
503 * tree.c (no_linkage_check): Check the enclosing class and template
504 arguments.
505
506 * cp-tree.h (TYPE_NAMESPACE_SCOPE_P): New.
507
508 * pt.c (get_pattern_parm): New.
509 (listify): Split out from...
510 (listify_autos): ...here.
511 (unify): Deduce std::initializer_list for T.
512 * call.c (build_over_call): Warn about it.
513
514 2009-09-17 Andrew Pinski <pinskia@gcc.gnu.org>
515
516 PR c++/39365
517 * typeck.c (cp_build_unary_op): Check TREE_CODE for bools instead of
518 using same_type_p.
519 (convert_for_assignment): Likewise.
520 * cvt.c (type_promotes_to): Likewise.
521
522 2009-09-14 Richard Henderson <rth@redhat.com>
523 Jakub Jelinek <jakub@redhat.com>
524
525 * cp-tree.h (finish_asm_stmt): Update decl.
526 * parser.c (cp_parser_asm_definition): Parse asm goto.
527 (cp_parser_asm_label_list): New.
528 * pt.c (tsubst_copy_asm_operands): Don't recurse on labels.
529 (tsubst_expr): Handle asm labels.
530 * semantics.c (finish_asm_stmt): Add and use labels parameter.
531
532 2009-09-14 Richard Henderson <rth@redhat.com>
533
534 * except.c (init_exception_processing): Don't call
535 default_init_unwind_resume_libfunc.
536 (cp_protect_cleanup_actions): Return the decl to call.
537 (build_exc_ptr): Use __builtin_eh_pointer.
538 * optimize.c (clone_body): Set eh_lp_nr, not eh_region.
539
540 2009-09-13 Richard Guenther <rguenther@suse.de>
541 Rafael Avila de Espindola <espindola@google.com>
542
543 * except.c (init_exception_processing): Do not set
544 lang_eh_runtime_type.
545 (choose_personality_routine): Do not set eh_personality_decl,
546 set pragma_java_exceptions.
547 * cp-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
548 (LANG_HOOKS_EH_PERSONALITY): Likewise.
549 (cp_eh_personality_decl): New.
550 (cp_eh_personality): Likewise.
551 * Make-lang.in (cp-lang.o): Add $(EXPR_H) and $(EXCEPT_H)
552 dependencies.
553
554 2009-09-13 Wei Guozhi <carrot@google.com>
555
556 PR c++/3187
557 * cp/optimize.c (build_delete_destructor_body): New function.
558 (maybe_clone_body): Call build_delete_destructor_body for
559 deleting destructor.
560
561 2009-09-10 Jason Merrill <jason@redhat.com>
562
563 * repo.c (extract_string, get_base_filename, init_repo): constify.
564
565 2009-09-09 Jason Merrill <jason@redhat.com>
566
567 * error.c (find_typenames_r): Also add decltypes.
568
569 2009-09-09 Paolo Carlini <paolo.carlini@oracle.com>
570
571 PR c++/28293
572 * decl2.c (grokfield): Check for explicit template argument lists.
573
574 2009-09-09 Jack Howarth <howarth@bromo.med.uc.edu>
575
576 PR bootstrap/41180
577 * Make-lang.in: Remove redundant code from linkage for darwin10.
578
579 2009-09-08 Paolo Carlini <paolo.carlini@oracle.com>
580
581 PR c++/39923
582 * decl.c (build_init_list_var_init): Check return value of
583 perform_implicit_conversion.
584
585 2009-09-08 Jason Merrill <jason@redhat.com>
586
587 * class.c (currently_open_class): Make sure we're dealing with the
588 main variant.
589
590 * cp-tree.h (enum overload_flags): Remove OP_FLAG.
591 * method.c (lazily_declare_fn): Check for dtorness in ABI warning.
592
593 * name-lookup.c (is_class_level): Remove.
594 (push_binding_level, leave_scope, resume_scope): Adjust.
595 (pushlevel_class): Adjust.
596 (poplevel_class): Make sure we're on class_binding_level.
597
598 * decl.c (grokmethod): Rename from start_method.
599 (finish_method): Remove.
600 * cp-tree.h: Adjust.
601 * parser.c (cp_parser_save_member_function_body): Adjust.
602
603 2009-09-03 Doug Kwan <dougkwan@google.com>
604
605 * tree.c (cp_fix_function_decl_p): New.
606 (cp_free_lang_data): New.
607
608 2009-09-03 Diego Novillo <dnovillo@google.com>
609
610 * Make-lang.in (decl2.o): Add dependency on $(POINTER_SET_H).
611 * decl2.c: Include pointer-set.h.
612 (collect_candidates_for_java_method_aliases): New.
613 (cp_write_global_declarations): Call it.
614 Add local variable CANDIDATES. If set, call
615 build_java_method_aliases.
616 (build_java_method_aliases): Add argument CANDIDATES.
617 Use it to determine if FNDECL should get a hidden alias.
618 * cp-objcp-common.h (LANG_HOOKS_FREE_LANG_DATA): Define.
619 * cp-tree.h (cp_free_lang_data): Declare.
620
621 2009-09-03 Richard Guenther <rguenther@suse.de>
622
623 * method.c (use_thunk): Use cgraph_finalize_function to hand
624 off thunks to the cgraph.
625 * semantics.c (emit_associated_thunks): Do not emit thunks
626 for really extern functions.
627
628 2009-09-03 Diego Novillo <dnovillo@google.com>
629
630 * cp-lang.c (lang_hooks): Remove const qualifier.
631
632 2009-09-02 Jason Merrill <jason@redhat.com>
633
634 * semantics.c (describable_type): Don't pretend to be in a template.
635
636 * ptree.c (cxx_print_type) [DECLTYPE_TYPE]: Print the expression.
637
638 2009-09-01 Alexandre Oliva <aoliva@redhat.com>
639
640 * cp-tree.h (TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS): New.
641 * cp-lang.c (cxx_dwarf_name): Pass it.
642 * error.c (count_non_default_template_args): Take flags as
643 argument. Adjust all callers. Skip counting of default
644 arguments if the new flag is given.
645
646 2009-09-01 Dodji Seketeli <dodji@redhat.com>
647
648 PR bootstrap/41205
649 * pt.c (make_ith_pack_parameter_name): Don't use strnlen that is a
650 GNU extension.
651
652 2009-09-01 Richard Guenther <rguenther@suse.de>
653
654 * cp-objcp-common.c (cp_expr_size): Use tree_expr_size.
655 * cp-objcp-common.h (LANG_HOOKS_EXPR_SIZE): Do not define.
656
657 2009-09-01 Richard Guenther <rguenther@suse.de>
658
659 * cp-objcp-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
660
661 2009-08-31 Dodji Seketeli <dodji@redhat.com>
662
663 PR debug/30161
664 * cp-tree.h (get_template_info): Parameter should be const.
665 (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): Fix typo.
666 (get_template_argument_pack_elems,
667 get_primary_template_innermost_parameters,
668 get_template_innermost_arguments, template_template_parameter_p):
669 Declare ...
670 * pt.c (get_template_argument_pack_elems,
671 get_template_innermost_parameters, get_template_innermost_arguments,
672 template_template_parameter_p):
673 ... New C++ front end implementation of new language hooks.
674 (primary_template_instantiation_p): New private helper.
675 (make_ith_pack_parameter_name): Use snprintf and strnlen instead of
676 printf and strlen.
677 (get_template_info): Const-ify parameter.
678 * cp-lang.c (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
679 LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
680 LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
681 LANG_HOOKS_GENERIC_TYPE_PARAMETER_DECL_P): Initialize these
682 interfaces for the C++ front-end.
683
684 2009-08-31 Jason Merrill <jason@redhat.com>
685
686 PR c++/41127
687 * parser.c (cp_parser_enum_specifier): Make sure the : is followed by a
688 type-specifier-seq before we commit.
689
690 2009-08-28 Richard Guenther <rguenther@suse.de>
691
692 PR lto/41058
693 * cp-gimplify.c (cp_genericize_r): Do not leak zero-sized stores
694 into the generic IL.
695
696 2009-08-27 Richard Guenther <rguenther@suse.de>
697
698 * class.c (build_vtbl_ref_1): Remove excess vertical space.
699 * Make-lang.in (CXX_TREE_H): Remove c-common.def dependency
700 tracked by $(TREE_H).
701 * semantics.c (expand_or_defer_fn): Zero DECL_SAVED_TREE.
702
703 2009-08-26 Jason Merrill <jason@redhat.com>
704
705 * call.c (build_builtin_candidate): Don't set LOOKUP_ONLYCONVERTING
706 if we're contextually converting to bool.
707 (build_conditional_expr): Likewise.
708 * typeck.c (condition_conversion): Likewise.
709
710 * call.c (build_conditional_expr): Fix logic errors.
711 (build_new_op): Remove dead COND_EXPR handling.
712
713 2009-08-24 Jason Merrill <jason@redhat.com>
714
715 * cp-tree.h (DECL_DEFERRED_FN): Remove.
716 (struct lang_decl_fn): Remove deferred flag.
717 * class.c (build_clone): Don't set it.
718 * decl2.c (note_vague_linkage_fn): Don't check or set it.
719 (mark_used): Don't check it.
720 * method.c (make_thunk, make_alias_for): Don't set it.
721
722 * decl2.c (mark_used): Streamline logic.
723
724 PR c++/41109
725 PR c++/41110
726 PR c++/41134
727 * cp-tree.h (DECL_ODR_USED): New macro.
728 (struct lang_decl_base): Add odr_used flag.
729 * decl.c (duplicate_decls): Propagate it. Use it for error.
730 * pt.c (register_specialization): Use it for error.
731 * decl2.c (mark_used): Use it as gating flag rather than TREE_USED.
732 (cp_write_global_declarations): Use it for error.
733 (tree_used_ok): Remove.
734 * cp-tree.h: Remove tree_used_ok.
735 * call.c (build_call_a): Don't call it.
736 * init.c (build_offset_ref): Likewise.
737
738 2009-08-21 Jakub Jelinek <jakub@redhat.com>
739
740 PR c++/41131
741 * tree.c (lvalue_p_1) <case CONST_DECL>: Return clk_none if
742 not TREE_STATIC.
743
744 2009-08-19 Jason Merrill <jason@redhat.com>
745
746 PR c++/41119
747 PR c++/41120
748 * decl2.c (mark_used): Increment function_depth during synthesis.
749 * parser.c (cp_parser_default_argument): Not here.
750
751 2009-08-19 Jakub Jelinek <jakub@redhat.com>
752
753 * method.c (use_thunk): Call free_after_compilation after
754 assemble_end_function.
755
756 2009-08-17 Richard Guenther <rguenther@suse.de>
757
758 * decl.c (build_ptrmemfunc_type): Keep variant chain intact.
759 Avoid useless copy.
760 (finish_enum): Keep variant chain intact.
761 * tree.c (cp_build_reference_type): Likewise.
762
763 2009-08-16 Jason Merrill <jason@redhat.com>
764
765 Make TREE_USED match the [basic.def.odr] concept for FUNCTION_DECL
766 and VAR_DECL, so mark_used only has effect the first time.
767 * decl2.c (mark_used): Just return if TREE_USED is already set.
768 Don't set TREE_USED if cp_unevaluated_operand is set.
769 (tree_used_ok): New fn.
770 * init.c (build_offset_ref): Check it instead of TREE_USED.
771 * call.c (build_call_a): Likewise.
772 * cp-tree.h: Declare it.
773 (DECL_NO_LINKAGE_CHECKED): No longer needed.
774 (struct lang_decl_base): Remove no_linkage_checked bitfield.
775
776 * decl2.c (finish_static_data_member_decl): Don't set TREE_USED.
777
778 * decl2.c (mark_used): It's ok to synthesize for default args now.
779
780 2009-08-10 Jason Merrill <jason@redhat.com>
781
782 Implement DR 757: It's OK for a decl to use a type without linkage
783 so long as the decl is defined in the current translation unit.
784 * decl2.c (no_linkage_decls): New vector.
785 (mark_used): Add decls that use types with no linkage.
786 (cp_write_global_declarations): Check that they are defined.
787 (decl_defined_p, no_linkage_error): New fns.
788 * cp-tree.h (DECL_NO_LINKAGE_CHECKED): New macro.
789 (struct lang_decl_base): Add flag.
790 * decl.c (grokfndecl): Don't check type linkage.
791 (grokvardecl): If the type has no linkage, just make sure
792 DECL_LANG_SPECIFIC is set.
793 * pt.c (check_instantiated_arg): Don't check type linkage.
794 * name-lookup.c (is_local_extern): New fn.
795 * name-lookup.h: Declare it.
796
797 2009-08-05 Jason Merrill <jason@redhat.com>
798
799 PR c++/40948
800 * init.c (build_vec_init): Evaluate the initializer before
801 starting the initialization try block.
802
803 2009-08-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
804
805 PR c++/36069
806 * typeck.c (convert_for_assignment): Do not warn for any boolean
807 variant. Use explicit location.
808
809 2009-08-04 Dodji Seketeli <dodji@redhat.com>
810
811 PR c++/39987
812 * pt.c (tsubst_default_argument): Let access checks of the
813 default argument happen in the context of the current function.
814
815 2009-08-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
816
817 PR c++/16696
818 * call.c (build_new_op): Only try prefix operator if -fpermissive,
819 otherwise just error.
820
821 2009-08-04 Dodji Seketeli <dodji@redhat.com>
822
823 PR debug/39706
824 * error.c (lang_decl_name): Print qualified names for decls
825 in namespace scope.
826
827 2009-08-03 Jason Merrill <jason@redhat.com>
828 Jakub Jelinek <jakub@redhat.com>
829
830 PR c++/40948
831 * init.c (build_vec_init): Look through a TARGET_EXPR around a
832 CONSTRUCTOR.
833
834 2009-07-31 Jason Merrill <jason@redhat.com>
835 Douglas Gregor <doug.gregor@gmail.com>
836
837 Remove implicit binding of lvalues to rvalue references (N2831)
838 * call.c (convert_class_to_reference): Binding an lvalue to an
839 rvalue reference is bad. If the user-defined conversion is bad,
840 set bad_p before merging conversions.
841 (maybe_handle_ref_bind): Don't push down bad_p.
842 (reference_binding): Binding an lvalue to an rvalue reference is bad.
843 (convert_like_real): Give a helpful error about binding lvalue
844 to rvalue reference.
845 (reference_related_p): No longer static.
846 * typeck.c (build_typed_address): New.
847 (build_static_cast_1): Add static_cast from lvalue to &&.
848 * cp-tree.h: Adjust.
849
850 2009-07-31 Jason Merrill <jason@redhat.com>
851
852 * call.c (reference_binding): Rename lvalue_p to is_lvalue.
853 Do direct binding of "rvalues" in memory to rvalue references.
854 * tree.c (lvalue_p_1): Can't be both non-addressable lvalue and
855 "rvalue" in memory.
856 * typeck.c (build_static_cast_1): Do direct binding of memory
857 "rvalues" to rvalue references.
858 * cvt.c (cp_fold_convert): New.
859 * cp-tree.h: Declare it.
860
861 2009-07-31 Jason Merrill <jason@redhat.com>
862
863 * typeck.c (build_address): Do fold away ADDR_EXPR of INDIRECT_REF.
864 * tree.c (rvalue): Use cp_build_qualified_type, not TYPE_MAIN_VARIANT.
865
866 2009-07-29 Jason Merrill <jason@redhat.com>
867
868 PR c++/14912
869 * cp-tree.h (enum tsubst_flags): Add tf_no_class_instantiations.
870 * error.c (count_non_default_template_args): Pass it.
871 * pt.c (tsubst) [TYPENAME_TYPE]: Don't complete type if it's set.
872
873 2009-07-29 Richard Guenther <rguenther@suse.de>
874
875 PR c++/40834
876 * cp-gimplify.c (cp_genericize_r): Properly walk the BIND_EXPR
877 vars.
878
879 2009-07-26 Simon Martin <simartin@users.sourceforge.net>
880
881 PR c++/40749
882 * decl.c (grokdeclarator): Do not set TREE_NO_WARNING for functions
883 with a qualified return type.
884
885 2009-07-24 Jason Merrill <jason@redhat.com>
886
887 Core issue 901
888 * call.c (build_op_delete_call): If this is for a new-expression
889 and the op delete is deleted, do nothing.
890
891 Core issue 702
892 * call.c (compare_ics): Give list-initialization of std::init_list
893 priority over conversion to scalar, too.
894
895 2009-07-22 Jason Merrill <jason@redhat.com>
896
897 * mangle.c (mangle_type_string_for_rtti): Rename to be clearer.
898 (needs_fake_anon): New.
899 (write_name): Check it.
900 (write_nested_name): Add a fake anonymous namespace scope if true.
901 * name-lookup.c (get_anonymous_namespace_name): No longer static.
902 * rtti.c, cp-tree.h: Adjust.
903
904 2009-07-22 Richard Guenther <rguenther@suse.de>
905
906 PR c++/40799
907 * cp-gimplify.c (cp_gimplify_expr): Move handling of using
908 related exprs to ...
909 (cp_genericize_r): ... genericization stage.
910 (cp_genericize): Adjust.
911
912 2009-07-21 Jason Merrill <jason@redhat.com>
913
914 Core issue 934
915 * call.c (reference_binding): Implement binding to { }.
916 (initialize_reference): Binding temporary to non-const && is fine.
917 * decl.c (grok_reference_init): Remove error for CONSTRUCTOR.
918
919 * decl.c (reshape_init_r): { T } is not an aggregate initializer
920 for class T.
921
922 2009-07-17 Richard Guenther <rguenther@suse.de>
923
924 PR c/40401
925 * decl.c (finish_function): Do not emit unused result warnings
926 from here.
927 * cp-objcp-common.h (LANG_HOOKS_POST_GIMPLIFY_PASS): Use
928 c_warn_unused_result_pass.
929 * semantics.c (expand_or_defer_fn): Adjust assertion about IL status.
930 * optimize.c (clone_body): Clone in GENERIC.
931 (maybe_clone_body): Do not clear DECL_SAVED_TREE.
932 * decl2.c (cp_write_global_declarations): Fix body test.
933 Do not call cgraph_optimize.
934 * Make-lang.in (optimize.o): Add tree-iterator.h dependency.
935 * method.c (use_thunk): Register thunk with
936 cgraph_finalize_function.
937 * error.c (function_category): Guard access of DECL_LANG_SPECIFIC.
938
939 2009-07-17 Richard Guenther <rguenther@suse.de>
940
941 * init.c (build_vec_delete_1): Do not set DECL_REGISTER on the
942 temporary pointer.
943
944 2009-07-17 Aldy Hernandez <aldyh@redhat.com>
945 Manuel López-Ibáñez <manu@gcc.gnu.org>
946
947 PR 40435
948 * typeck.c, init.c, class.c, method.c, rtti.c, except.c, error.c,
949 tree.c, cp-gimplify.c, cxx-pretty-print.c, pt.c, semantics.c,
950 call.c, cvt.c, mangle.c: Add location argument to
951 fold_{unary,binary,ternary}, fold_build[123], build_call_expr,
952 build_size_arg, build_fold_addr_expr, build_call_array,
953 non_lvalue, size_diffop, fold_build1_initializer,
954 fold_build2_initializer, fold_build3_initializer,
955 fold_build_call_array, fold_build_call_array_initializer,
956 fold_single_bit_test, omit_one_operand, omit_two_operands,
957 invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref,
958 fold_indirect_ref, combine_comparisons, fold_builtin_*,
959 fold_call_expr, build_range_check, maybe_fold_offset_to_address,
960 round_up, round_down.
961
962 2009-07-16 Jason Merrill <jason@redhat.com>
963
964 PR libstdc++/37907
965 Split POD into "standard-layout" and "trivial" as per N2230,
966 Support std::is_standard_layout and std::is_trivial traits.
967 * cp-tree.h (enum cp_trait_kind): Add CPTK_IS_STD_LAYOUT,
968 CPTK_IS_TRIVIAL.
969 (struct lang_type_class): Add non_std_layout.
970 (CLASSTYPE_NON_STD_LAYOUT): New.
971 * class.c (check_bases): Set it.
972 (check_field_decls): Likewise.
973 (check_bases_and_members): Likewise.
974 * parser.c (cp_parser_primary_expression): Handle RID_IS_STD_LAYOUT,
975 RID_IS_TRIVIAL.
976 (cp_parser_trait_expr): Likewise.
977 * semantics.c (trait_expr_value): Handle CPTK_IS_STD_LAYOUT,
978 CPTK_IS_TRIVIAL.
979 (finish_trait_expr): Likewise.
980 * tree.c (scalarish_type_p, trivial_type_p, std_layout_type_p): New.
981 (pod_type_p): Use them.
982 (type_has_nontrivial_copy_init, type_has_nontrivial_default_init): New.
983
984 Adjust bits of the language that no longer refer to POD types.
985 * call.c (convert_arg_to_ellipsis): Use type_has_nontrivial_copy_init
986 and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
987 (build_x_va_arg): Likewise.
988 (call_builtin_trap): Remove.
989 * decl.c (declare_local_label): Use type_has_nontrivial_default_init
990 and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
991 (cp_finish_decl): Likewise.
992 (check_previous_goto_1, check_goto): Adjust error.
993 * typeck.c (build_class_member_access_expr): Check
994 CLASSTYPE_NON_STD_LAYOUT rather than CLASSTYPE_NON_POD_P.
995
996 2009-07-14 Taras Glek <tglek@mozilla.com>
997 Rafael Espindola <espindola@google.com>
998
999 * Make-lang.in: Added CP_PLUGIN_HEADERS and
1000 c.install-target to export cp-tree.h cxx-pretty-print.h
1001 name-lookup.h headers for plugins.
1002
1003 2009-07-14 Jason Merrill <jason@redhat.com>
1004
1005 PR c++/37276
1006 * decl.c (decls_match): A non-extern-C declaration doesn't match
1007 a builtin extern-C declaration.
1008
1009 PR c++/40746
1010 * name-lookup.c (qualified_lookup_using_namespace): Don't stop
1011 looking in used namespaces just because we found something on
1012 another branch.
1013
1014 PR c++/40740
1015 * semantics.c (perform_koenig_lookup): Handle empty template args.
1016
1017 * call.c (build_over_call): Use can_trust_pointer_alignment.
1018
1019 2009-07-14 Dodji Seketeli <dodji@redhat.com>
1020
1021 PR debug/40705
1022 PR c++/403057
1023 * decl2.c (grokfield): Don't call set_underlying_type on typedef
1024 decls that are type names.
1025
1026 2009-07-13 Andrew Pinski <andrew_pinski@playstation.sony.com>
1027
1028 PR C++/22154
1029 * parser.c (cp_parser_elaborated_type_specifier): Accept typename in
1030 front of qualified names.
1031
1032 2009-07-12 Jason Merrill <jason@redhat.com>
1033
1034 PR c++/36628
1035 * tree.c (rvalue): Use lvalue_or_rvalue_with_address_p.
1036
1037 PR c++/37206
1038 * cp-tree.h (enum cp_lvalue_kind_flags): Add clk_rvalueref.
1039 * tree.c (lvalue_p_1): Return it. Remove
1040 treat_class_rvalues_as_lvalues parm.
1041 (real_lvalue_p): Disallow pseudo-lvalues here.
1042 (lvalue_or_rvalue_with_address_p): New fn.
1043 * call.c (initialize_reference): Use it instead of real_lvalue_p.
1044
1045 PR c++/40689
1046 * init.c (build_new_1): Handle initializer list as array initializer.
1047 (build_vec_init): Likewise.
1048 * typeck.c (cp_build_modify_expr): Likewise.
1049 * typeck2.c (process_init_constructor_array): Error rather than abort
1050 if too many initializers.
1051
1052 2009-07-10 Jakub Jelinek <jakub@redhat.com>
1053
1054 PR c++/40502
1055 * error.c (cp_print_error_function): Check for NULL block.
1056
1057 2008-07-09 Simon Martin <simartin@users.sourceforge.net>
1058 Jason Merrill <jason@redhat.com>
1059
1060 * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
1061 append_type_to_template_for_access_check_1): Use CLASS_TYPE_P.
1062
1063 2009-07-09 Dodji Seketeli <dodji@redhat.com>
1064
1065 PR c++/40684
1066 * pt.c (type_unification_real): Use tsubst_template_arg instead
1067 of tsubst to substitute default template arguments.
1068
1069 2009-07-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
1070
1071 PR c++/31246
1072 * init.c (build_new_1): Set TREE_NO_WARNING for compiler-generated
1073 code.
1074 * cp-gimplify.c (genericize_eh_spec_block): Likewise.
1075
1076
1077 2009-07-07 Jason Merrill <jason@redhat.com>
1078
1079 PR c++/35828
1080 * pt.c (tsubst_decl): Don't abort if we didn't change anything
1081 in a TEMPLATE_DECL's args.
1082
1083 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
1084
1085 * semantics.c (finalize_nrv_r): Replace EXPR_LOCUS by
1086 EXPR_LOCATION.
1087
1088 2009-07-07 Jason Merrill <jason@redhat.com>
1089
1090 PR c++/37816
1091 * decl.c (build_enumerator): Don't add enumerators for a
1092 scoped enum to the enclosing class.
1093
1094 PR c++/40639
1095 * decl.c (start_enum): Allow dependent underlying type.
1096
1097 PR c++/40633
1098 * decl.c (finish_enum): Finish scope even in a template.
1099
1100 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
1101
1102 * init.c: Replace %J by an explicit location. Update all calls.
1103 * decl.c: Likewise.
1104 * typeck2.c: Likewise.
1105 * pt.c: Likewise.
1106 * name-lookup.c: Likewise.
1107
1108 2009-07-06 Manuel López-Ibáñez <manu@gcc.gnu.org>
1109
1110 * decl.c: Replace %H by an explicit location. Update all calls.
1111 * except.c: Likewise.
1112 * semantics.c: Likewise.
1113 * parser.c: Likewise.
1114
1115 2009-07-06 Simon Martin <simartin@users.sourceforge.net>
1116
1117 PR c++/40557
1118 * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
1119 append_type_to_template_for_access_check_1): Use
1120 RECORD_OR_UNION_CODE_P.
1121
1122 2009-07-04 Jason Merrill <jason@redhat.com>
1123
1124 * pt.c (retrieve_specialization): Don't get confused by a
1125 using-declaration that brings in another instance of this template
1126 from a base class.
1127
1128 * ptree.c (cxx_print_type): Fix logic.
1129
1130 * cp-tree.h (LANG_DECL_FN_CHECK): Fix non-checking version.
1131
1132 PR c++/40619
1133 * cp-tree.h (struct lang_decl_parm): New.
1134 (struct lang_decl): Add it.
1135 (LANG_DECL_PARM_CHECK): New.
1136 (DECL_PARM_INDEX): New.
1137 * decl2.c (parm_index): Remove.
1138 * lex.c (retrofit_lang_decl): Handle parms.
1139 (cxx_dup_lang_specific_decl): Likewise.
1140 * mangle.c (write_expression): Adjust.
1141 * tree.c (cp_tree_equal): Adjust.
1142 (decl_linkage): Only check DECL_COMDAT for functions and variables.
1143 * parser.c (cp_parser_parameter_declaration_list): Set
1144 DECL_PARM_INDEX.
1145 * pt.c (iterative_hash_template_arg): Hash it.
1146
1147 2009-07-03 Jason Merrill <jason@redhat.com>
1148
1149 * cp-tree.h (struct lang_decl): Overhaul.
1150 (struct lang_decl_flags): Remove.
1151 (struct lang_decl_base): New.
1152 (struct lang_decl_min): New.
1153 (struct lang_decl_fn): New.
1154 (struct lang_decl_ns): New.
1155 (CAN_HAVE_FULL_LANG_DECL_P): Replace with LANG_DECL_HAS_MIN.
1156 (LANG_DECL_MIN_CHECK): New.
1157 (LANG_DECL_FN_CHECK): New.
1158 (LANG_DECL_NS_CHECK): New.
1159 (STRIP_TEMPLATE): New.
1160 (NON_THUNK_FUNCTION_CHECK): Remove.
1161 (DECL_DECLARES_FUNCTION_P): New.
1162 (lots): Adjust.
1163 * lex.c (retrofit_lang_decl, cxx_dup_lang_specific_decl): Adjust.
1164 * decl.c (push_local_name, duplicate_decls): Adjust.
1165 * decl2.c (start_objects): Don't set u2sel.
1166 * semantics.c (finish_omp_threadprivate): Adjust.
1167 * class.c (build_clone): Don't do much on TEMPLATE_DECLs.
1168 (decl_cloned_function_p): Out-of-line implementation of macros.
1169 (clone_function_decl, adjust_clone_args): Use DECL_CLONED_FUNCTION_P.
1170 * mangle.c (write_unqualified_name): Don't check function flags
1171 on non-functions.
1172 * method.c (make_alias_for): Don't set DECL_CLONED_FUNCTION.
1173 * pt.c (build_template_decl): Don't set function flags.
1174 (check_default_tmpl_args): Check that it's a function.
1175 (instantiate_template): Use DECL_ABSTRACT_ORIGIN to find the
1176 cloned template.
1177
1178 * pt.c (tsubst_decl) [FUNCTION_DECL]: Don't tsubst
1179 DECL_CLONED_FUNCTION.
1180
1181 * cp-tree.h (struct lang_type_class): Move sorted_fields here.
1182 * class.c (finish_struct_1): Adjust.
1183 * ptree.c (cxx_print_decl, cxx_print_type): Adjust.
1184 * search.c (lookup_field_1): Adjust.
1185
1186 * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Remove.
1187 * decl.c (finish_method): Don't add to it.
1188 * class.c (fixup_pending_inline): Remove.
1189 (fixup_inline_methods): Remove.
1190 (finish_struct_1): Don't call it.
1191
1192 * error.c (dump_function_name): Handle null name.
1193
1194 2009-07-02 Mark Mitchell <mark@codesourcery.com>
1195
1196 * typeck.c (cp_build_binary_op): Move warnings about use of NULL
1197 in arithmetic earlier and allow comparisions of NULL with
1198 pointers-to-members.
1199
1200 2009-07-02 Jason Merrill <jason@redhat.com>
1201
1202 Use hash tables for template specialization lookup.
1203 * pt.c (struct spec_entry): New type.
1204 (decl_specializations, type_specializations): New hash tables.
1205 (register_specialization, retrieve_specialization): Use them.
1206 (reregister_specialization, lookup_template_class): Use them.
1207 (eq_specializations, hash_tmpl_and_args, hash_specialization): New.
1208 (iterative_hash_template_arg): New.
1209 (init_template_processing): New
1210 (process_partial_specialization): Don't look to see if we already
1211 have this partial specialization.
1212 (maybe_process_partial_specialization): Handle reassigning
1213 full specializations when we get an explicit specialization
1214 of the partial instantiation.
1215 (tsubst_friend_function): Adjust specialization reassignment code.
1216 (instantiate_template): Only do one lookup.
1217 (instantiate_decl): Don't do any lookup.
1218 * cp-tree.h: Declare init_template_processing.
1219 * decl.c (duplicate_decls): Pass args to reregister_specialization.
1220
1221 2009-07-01 Jason Merrill <jason@redhat.com>
1222
1223 * cp-tree.h (DECL_CLASS_TEMPLATE_P): Use DECL_IMPLICIT_TYPEDEF_P.
1224
1225 * pt.c (register_specialization): Use duplicate_decls to merge
1226 the argument with a previous specialization.
1227 (check_explicit_specialization): Call register_specialization to
1228 merge the TEMPLATE_DECL with a previous version.
1229 (determine_specialization): Return the args even if fn is a template.
1230
1231 2009-07-01 Ian Lance Taylor <iant@google.com>
1232
1233 * g++spec.c (lang_specific_driver): Bump num_args by 1.
1234
1235 2009-06-30 Jason Merrill <jason@redhat.com>
1236
1237 PR c++/40595
1238 * pt.c (tsubst_pack_expansion): Handle unexpanded packs in an
1239 EXPR_PACK_EXPANSION.
1240
1241 2009-06-29 Jason Merrill <jason@redhat.com>
1242
1243 PR c++/40274
1244 * error.c (dump_template_parms): Pass all args to
1245 count_non_default_template_args.
1246 (count_non_default_template_args): Pull out the inner ones.
1247
1248 2009-06-26 H.J. Lu <hongjiu.lu@intel.com>
1249
1250 * decl.c (duplicate_decls): Re-indent.
1251
1252 2009-06-25 Ian Lance Taylor <iant@google.com>
1253
1254 * call.c (avoid_sign_compare_warnings): New static function.
1255 (build_new_op): Call it.
1256 * typeck.c (cp_build_binary_op): Don't call warn_sign_compare if
1257 TREE_NO_WARNING is set on either operand.
1258
1259 2009-06-25 Ian Lance Taylor <iant@google.com>
1260
1261 * g++spec.c (SKIPOPT): define.
1262 (lang_specific_driver): Handle -static-libstdc++. Only add
1263 LIBSTDCXX_STATIC if we add LIBSTDCXX.
1264
1265 2009-06-25 Ian Lance Taylor <iant@google.com>
1266
1267 * cvt.c (convert_to_void): Only warn about COND_EXPR if neither
1268 the second nor third operand has side effects.
1269
1270 2009-06-25 Ian Lance Taylor <iant@google.com>
1271
1272 * parser.c (cp_parser_binary_expression): Increment
1273 c_inhibit_evaluation_warnings while parsing the right hand side of
1274 "true || x" or "false && x".
1275 * typeck.c (cp_build_binary_op): Only call warn_for_sign_compare
1276 if c_inhibit_evaluation_warnings is zero.
1277
1278 2009-06-24 Jason Merrill <jason@redhat.com>
1279
1280 * error.c (dump_decl): Do say "typedef" for the injected class name.
1281
1282 * pt.c (lookup_template_class): Use currently_open_class,
1283 compare template args later.
1284
1285 PR c++/40342
1286 * decl.c (decls_match): Check DECL_TI_TEMPLATE too.
1287 * class.c (resolve_address_of_overloaded_function): Fix typo.
1288
1289 2009-06-18 Aldy Hernandez <aldyh@redhat.com>
1290
1291 * class.c (get_vtable_decl): Replace finish_decl with cp_finish_decl.
1292 * decl.c (finish_decl): Remove.
1293 (declare_global_var): Replace finish_decl with cp_finish_decl.
1294 (start_method): Same.
1295 * rtti.c (emit_tinfo_decl): Same.
1296 * pt.c (tsubst_expr): Same.
1297 (instantiate_decl): Same.
1298 * decl2.c (grokbitfield): Same.
1299 * name-lookup.c (pushdecl_top_level_1): Same.
1300 * cp-tree.h: Remove finish_decl.
1301
1302 2009-06-16 David Edelsohn <edelsohn@gnu.org>
1303
1304 * g++-spec.c (LIBSTDCXX_STATIC): Default to NULL.
1305 (lang_specific_driver): Always allocate extra argument.
1306 Add LIBSTDCXX_STATIC to arglist if defined and linking
1307 statically.
1308
1309 2009-06-16 Ian Lance Taylor <iant@google.com>
1310
1311 * Make-lang.in (cp/class.o): Depend upon gt-cp-class.h.
1312 (cp/semantics.o): Depend upon gt-cp-semantics.h.
1313
1314 2009-06-16 Ian Lance Taylor <iant@google.com>
1315
1316 * parser.c (cp_unevaluated_operand): Define global variable.
1317 (cp_parser_question_colon_clause): Increment
1318 c_inhibit_evaluation_warnings when evaluating an expression which
1319 will never be executed.
1320 (cp_parser_decltype): Increment cp_unevaluated_operand and
1321 c_inhibit_evaluation_warnings, not skip_evaluation.
1322 (cp_parser_sizeof_operand): Likewise.
1323 (cp_parser_enclosed_template_argument_list): Save
1324 cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
1325 skip_evaluation.
1326 * cp-tree.h (struct saved_scope): Remove skip_evaluation field.
1327 Add unevaluated_operand and inhibit_evaluation_warnings fields.
1328 (cp_unevaluated_operand): Declare.
1329 * name-lookup.c (push_to_top_level): Save cp_unevaluated_operand
1330 and c_inhibit_evaluation_warnings rather than skip_evaluation.
1331 (pop_from_top_level): Restore cp_unevaluated_operand and
1332 c_inhibit_evaluation_warnings rather than skip_evaluation.
1333 * class.c (build_base_path): Check cp_unevaluated_operand rather
1334 than skip_evaluation.
1335 * typeck.c (build_class_member_access_expr): Likewise.
1336 (cp_build_binary_op): Don't warn about bad shift counts if
1337 c_inhibit_evaluation_warnings is non-zero.
1338 * pt.c (coerce_template_parms): Save state of
1339 cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
1340 skip_evaluation.
1341 (tsubst_aggr_type): Likewise.
1342 (tsubst_pack_expansion): Check cp_unevaluated_operand rather than
1343 skip_evaluation.
1344 (tsubst_copy): Likewise.
1345 (tsubst): Set cp_unevaluated_operand and
1346 c_inhibit_evaluation_warnings, not skip_evaluation.
1347 (tsubst_copy_and_build): Likewise.
1348 * call.c (convert_arg_to_ellipsis): Check cp_unevaluated_operand
1349 rather than skip_evaluation.
1350 * decl2.c (mark_used): Likewise.
1351 * semantics.c (finish_non_static_data_member): Likewise.
1352 * cvt.c (cp_convert_and_check): Check
1353 c_inhibit_evaluation_warnings rather than skip_evaluation.
1354 * mangle.c (write_type): Set cp_unevaluated_operand rather than
1355 skip_evaluation.
1356
1357 2009-06-15 Ian Lance Taylor <iant@google.com>
1358
1359 * parser.c (cp_parser_direct_declarator): Add braces around
1360 variables declared before label.
1361
1362 2009-06-15 Rafael Avila de Espindola <espindola@google.com>
1363
1364 * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Remove.
1365 * cp-tree.h (cxx_comdat_group): Change signature.
1366 * decl.c (duplicate_decls): Use DECL_COMDAT_GROUP.
1367 (cxx_comdat_group): Change signature.
1368 * decl2.c (comdat_linkage, maybe_make_one_only): Update call to
1369 make_decl_one_only.
1370 (constrain_visibility, get_guard): Use DECL_COMDAT_GROUP.
1371 * method.c (use_thunk): Update call to make_decl_one_only.
1372 * optimize.c (maybe_clone_body): Use DECL_COMDAT_GROUP
1373
1374 2009-06-12 Aldy Hernandez <aldyh@redhat.com>
1375
1376 * typeck.c (cp_build_binary_op): Pass location to overflow_warning.
1377 (build_modify_expr): New arg.
1378 * semantics.c (finish_unary_op_expr): Pass location to
1379 overflow_warning.
1380 (handle_omp_for_class_iterator): Pass location to build_modify_expr.
1381 * typeck.c (cxx_sizeof_or_alignof_type): Pass location to
1382 c_sizeof_or_alignof_type.
1383 (build_array_ref): New argument.
1384 (build_compound_expr): Same.
1385 (build_const_cast): Same.
1386 (build_ptrmemfunc): Pass location to build_c_cast.
1387 * init.c (avoid_placement_new_aliasing): Pass location to
1388 build_stmt.
1389 (build_vec_delete_1): Pass location to cp_build_modify_expr,
1390 build_compound_expr.
1391 * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
1392 * decl.c (poplevel): Pass location to c_build_bind_expr.
1393 (finish_case_label): Pass location to build_case_label.
1394 (finish_constructor_body): Same.
1395 (finish_destructor_body): Pass location to build_stmt.
1396 (cxx_maybe_build_cleanup): Same, but to build_compound_expr.
1397 * call.c (build_new_op): Pass location to build_array_ref.
1398 (build_x_va_arg): Pass location to build_va_arg.
1399 * except.c (expand_end_catch_block): Pass location to
1400 build_stmt.
1401 * cp-tree.h (build_array_ref): New argument.
1402 (build_compound_expr): Same.
1403 (build_c_cast): Same.
1404 * cp-gimplify.c (gimplify_if_stmt): Pass location on down.
1405 (gimplify_switch_stmt): Same.
1406 * typeck2.c (split_nonconstant_init_1): Same.
1407 * pt.c (tsubst_copy): Same.
1408 * semantics.c (add_decl_expr): Same.
1409 (do_poplevel): Same.
1410 (push_cleanup): Same.
1411 (finish_goto_stmt): Same.
1412 (finish_expr_stmt): Same.
1413 (begin_if_stmt): Same.
1414 (begin_while_stmt): Same.
1415 (begin_do_stmt): Same.
1416 (finish_return_stmt): Same.
1417 (begin_for_stmt): Same.
1418 (finish_break_stmt): Same.
1419 (finish_continue_stmt): Same.
1420 (begin_switch_stmt): Same.
1421 (begin_try_block): Same.
1422 (begin_handler): Same.
1423 (finish_asm_stmt): Same.
1424 (finish_label_stmt): Same.
1425 (finish_stmt_expr_expr): Same.
1426 (finalize_nrv_r): Same.
1427 (finish_omp_atomic): Same.
1428 * name-lookup.c (do_using_directive): Same.
1429 * decl2.c (grok_array_decl): Same.
1430 * parser.c (cp_parser_cast_expression): Same.
1431 (cp_parser_selection_statement): Same.
1432 (cp_parser_implicitly_scoped_statement): Same.
1433 (cp_parser_objc_selector_expression): Same.
1434 (cp_parser_objc_synchronized_statement): Same.
1435 (cp_parser_objc_throw_statement): Same.
1436 (cp_parser_omp_critical): Same.
1437 (cp_parser_omp_master): Same.
1438 * typeck.c (build_function_call): Add location argument.
1439 * init.c: Add location argument to all build_decl calls.
1440 * class.c: Same.
1441 * method.c: Same.
1442 * rtti.c: Same.
1443 * tree.c: Same.
1444 * pt.c: Same.
1445 * semantics.c: Same.
1446 * lex.c: Same.
1447 * decl2.c: Same.
1448 * cp-gimplify.c: Same.
1449 * decl.c: Same.
1450 (cp_make_fname_decl): Add location argument. Pass location ot
1451 build_decl.
1452 (finish_case_label): Same.
1453 * cp-tree.h (finish_case_label): Add location argument.
1454 * parser.c (cp_parser_label_for_labeled_statement): Pass location to
1455 finish_case_label.
1456
1457 2009-06-09 Jason Merrill <jason@redhat.com>
1458
1459 PR c++/40381
1460 * decl2.c (mark_used): Return after complaining about deleted fn.
1461
1462 2009-06-08 Jason Merrill <jason@redhat.com>
1463
1464 * parser.c (cp_parser_type_id_1): 'auto' type is ok with a
1465 late-specified return type.
1466
1467 2009-06-08 Jakub Jelinek <jakub@redhat.com>
1468
1469 PR c++/40373
1470 * call.c (check_dtor_name): Return false even if
1471 get_type_value (name) is error_mark_node.
1472
1473 PR c++/40370
1474 PR c++/40372
1475 * parser.c (cp_parser_direct_declarator): Don't set TREE_SIDE_EFFECTS
1476 on error_mark_node. Check for VLAs outside of function context
1477 before check whether to wrap bounds into a NOP_EXPR with
1478 TREE_SIDE_EFFECTS.
1479
1480 2009-06-08 Alexandre Oliva <aoliva@redhat.com>
1481
1482 * repo.c (get_base_filename): Use aux_base_name rather than
1483 alternate temporary file during second compare debug compilation.
1484 (finish_repo): Skip during -fcompare-debug-second.
1485
1486 2009-06-06 Ian Lance Taylor <iant@google.com>
1487
1488 * parser.c (cp_parser_label_for_labeled_statement): Support
1489 attribute on labels if immediately followed by semicolon.
1490 * semantics.c (finish_label_stmt): Return new label.
1491 * pt.c (tsubst_expr): Handle attributes for LABEL_EXPR.
1492
1493 2009-06-03 Ian Lance Taylor <iant@google.com>
1494
1495 * Make-lang.in (cc1plus-checksum.o): Depend upon $(CONFIG_H) and
1496 $(SYSTEM_H).
1497
1498 2009-06-02 Mark Mitchell <mark@codesourcery.com>
1499
1500 * decl.c (maybe_deduce_size_from_array_init): Use relayout_decl.
1501
1502 2009-06-02 Jason Merrill <jason@redhat.com>
1503
1504 PR c++/40308
1505 PR c++/40311
1506 * typeck.c (cp_build_modify_expr): Always pass init-lists to the
1507 conversion code.
1508 * call.c (implicit_conversion): Allow init-list conversion to scalar
1509 during direct-initialization, too. Mark the conversion bad if it
1510 has too many levels of braces.
1511 (convert_like_real): And give a helpful error.
1512
1513 PR c++/40306
1514 PR c++/40307
1515 * decl.c (cp_finish_decl): Handle auto deduction from ().
1516 * typeck.c (build_x_indirect_ref): Handle dereferencing an operand
1517 with dependent type that is known to be a pointer.
1518
1519 2009-06-02 Simon Martin <simartin@users.sourceforge.net>
1520
1521 PR c++/38089
1522 * pt.c (register_specialization): Properly setup DECL_CONTEXT for
1523 specializations in an invalid namespace.
1524
1525 2009-06-01 Aldy Hernandez <aldyh@redhat.com>
1526
1527 * error.c (print_instantiation_partial_context): Print column
1528 numbers.
1529
1530 2009-05-29 Ian Lance Taylor <iant@google.com>
1531
1532 * error.c (cp_printer): Don't use va_arg with enum type.
1533
1534 2009-05-28 Dodji Seketeli <dodji@redhat.com>
1535
1536 PR c++/39754
1537 * cp-tree.h (canonical_type_variant): Remove this function declaration.
1538 (strip_typedefs): New function declaration.
1539 * tree.c (strip_typedefs): New function definition.
1540 (canonical_type_variant): Remove function definition.
1541 * cvt.c (convert_from_reference): No need to use
1542 canonical_type_variant.
1543 * typeck.c (cp_build_indirect_ref): Likewise.
1544 * error.c (dump_template_bindings): Use strip_typedefs instead of
1545 canonical_type_variant.
1546 * pt.c (convert_template_argument, unify): Likewise.
1547 * mangle.c (canonicalize_for_substitution): Don't use
1548 canonical_type_variant.
1549
1550 2009-05-27 Jason Merrill <jason@redhat.com>
1551
1552 * call.c (implicit_conversion): Handle conversion from
1553 initializer-list to scalar.
1554 (convert_like_real): Likewise. Avoid crashing on list
1555 initialization with bad conversions.
1556 (can_convert): Use LOOKUP_EXPLICIT.
1557 (can_convert_arg_bad): Add flags parm.
1558 * cp-tree.h: Adjust.
1559 * typeck.c (convert_for_assignment): Pass flags.
1560
1561 2009-05-27 Ian Lance Taylor <iant@google.com>
1562
1563 * Make-lang.in (g++$(exeext)): Change $(COMPILER) to $(LINKER).
1564 (cc1plus-dummy$(exeext), cc1plus$(exeext)): Likewise.
1565
1566 2009-05-26 Ian Lance Taylor <iant@google.com>
1567
1568 * Make-lang.in (g++spec.o): Use $(COMPILER).
1569 (g++$(exeext), cc1plus-dummy$(exeext)): Likewise.
1570 (cc1plus$(exeext)): Likewise.
1571
1572 2009-05-26 Dodji Seketeli <dodji@redhat.com>
1573
1574 PR c++/40007
1575 * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Remove this accessor.
1576 (TI_TYPEDEFS_NEEDING_ACCESS_CHECKING): New accessor.
1577 (get_types_needing_access_check): Declare new entry point.
1578 * pt.c (append_type_to_template_for_access_check_1,
1579 get_types_needing_access_check): New functions.
1580 (perform_typedefs_access_check): Accept FUNCTION_DECLs and
1581 RECORD_TYPEs rather than TEMPLATE_DECLs. Use the new
1582 get_types_needing_access_check, no more
1583 MEMBER_TYPES_NEEDING_ACCESS_CHECK.
1584 (instantiate_class_template): Set input_location to the source
1585 location of the most specialized template definition.
1586 Perform access check using the RECORD_TYPE of the template, not its
1587 associated most generic TEMPLATE_DECL.
1588 (append_type_to_template_for_access_check): Augment function
1589 comments. Use the new get_types_needing_access_check, not
1590 MEMBER_TYPE_NEEDING_ACCESS_CHECK. Use the new
1591 append_type_to_template_for_access_check_1 subroutine.
1592
1593 2009-05-22 Jason Merrill <jason@redhat.com>
1594
1595 PR c++/38064
1596 * typeck.c (cp_build_binary_op): Allow ENUMERAL_TYPE in
1597 arithmetic comparisons.
1598 (cp_common_type): Handle scoped enums.
1599
1600 * call.c (promoted_arithmetic_type_p): Don't use INTEGRAL_TYPE_P.
1601 (add_builtin_candidate, add_builtin_candidates): Likewise.
1602 (convert_like_real): Likewise.
1603 * class.c (check_bitfield_decl): Likewise.
1604 * decl.c (check_static_variable_definition): Likewise.
1605 (compute_array_index_type): Likewise.
1606 * decl2.c (grokbitfield): Likewise.
1607 * init.c (build_new_1): Likewise.
1608 * pt.c (convert_nontype_argument): Likewise.
1609 (current_instantiation): Likewise.
1610 * tree.c (pod_type_p): Likewise.
1611 * typeck.c (build_static_cast_1): Likewise.
1612 (build_reinterpret_cast_1): Likewise.
1613
1614 2009-05-22 Richard Guenther <rguenther@suse.de>
1615
1616 PR middle-end/38964
1617 * init.c (avoid_placement_new_aliasing): Remove.
1618 (build_new_1): Do not call it.
1619
1620 2009-05-22 Mark Mitchell <mark@codesourcery.com>
1621
1622 * decl2.c (decl_needed_p): Consider dllexport'd functions needed.
1623 * semantics.c (expand_or_defer_fn): Similarly.
1624
1625 2009-05-20 Ian Lance Taylor <iant@google.com>
1626
1627 * parser.c (cp_parser_postfix_expression): Change args to a vec.
1628 Release it when done.
1629 (tree_vector): Define typedef. Define VEC functions.
1630 (cp_parser_parenthesized_expression_list): Change return type to
1631 vec. Change all callers.
1632 (cp_parser_new_expression): Change placement and initializer to
1633 vecs. Release them when done.
1634 (cp_parser_new_placement): Change return type to vec. Change all
1635 callers.
1636 (cp_parser_new_initializer): Likewise.
1637 * typeck.c (build_function_call_vec): Just call
1638 cp_build_function_call_vec.
1639 (cp_build_function_call): Just build a vec and call
1640 cp_build_function_call_vec.
1641 (cp_build_function_call_vec): New function based on old
1642 cp_build_function_call.
1643 (convert_arguments): Remove nargs and argarray parameters. Change
1644 values to a vec. Change caller.
1645 (build_x_compound_expr_from_vec): New function.
1646 (cp_build_modify_expr): Build vec to pass to
1647 build_special_member_call.
1648 * call.c (struct z_candidate): Add first_arg field. Change args
1649 field to vec.
1650 (convert_class_to_reference): Handle first argument separately.
1651 (add_candidate): Add first_arg parameter. Change args parameter
1652 to vec. Change all callers.
1653 (add_function_candidate, add_conv_candidate): Likewise.
1654 (add_template_candidate_real, add_template_candidate): Likewise.
1655 (add_template_conv_candidate): Likewise.
1656 (build_user_type_conversion_1): Handle first argument separately.
1657 (resolve_args): Change return type and parameter type to vecs.
1658 Change all callers.
1659 (perform_overload_resolution): Change args parameter to vec.
1660 Change all callers.
1661 (build_new_function_call, build_operator_new_call): Likewise.
1662 (add_candidates): Likewise.
1663 (build_op_call): New globally visible function, built from and
1664 replacing static function build_object_call.
1665 (build_new_op): Don't handle CALL_EXPR. Build vec, not tree_list,
1666 of arguments.
1667 (build_op_delete_call): Build vec to pass to
1668 cp_build_function_call_vec.
1669 (build_temp): Build vec to pass to build_special_member_call.
1670 (convert_like_real): Likewise.
1671 (perform_direct_initialization_if_possible): Likewise.
1672 (build_over_call): Handle first_arg field. Use build_call_array
1673 rather than build_call_list.
1674 (build_special_member_call): Change args parameter to vec. Change
1675 all callers.
1676 (build_new_method_call): Likewise.
1677 * init.c (expand_default_init): Change parms to vec.
1678 (build_raw_new_expr): Change placement and init to vecs. Change
1679 all callers.
1680 (build_new_1, build_new): Likewise.
1681 * class.c (resolve_address_of_overloaded_function): Build array to
1682 pass to fn_type_unification.
1683 * pt.c (tsubst_copy_and_build): For NEW_EXPR build vecs to pass to
1684 build_new. For CALL_EXPR create a vec rather than a tree_list;
1685 expand a pack if necessary.
1686 (fn_type_unification): Change args parameter to const tree *. Add
1687 nargs parameter. Change all callers.
1688 (type_unification_real): Likewise.
1689 (unify): Build array to pass to type_unification_real.
1690 (get_bindings): Build array to pass to fn_type_unification.
1691 (any_type_dependent_arguments_p): Change args parameter to a vec.
1692 Change all callers.
1693 (make_args_non_dependent): Renamed from build_non_dependent_args.
1694 Change return type to void. Change parameter type to vec. Change
1695 all callers.
1696 (do_auto_deduction): Pass an array to type_unification_real.
1697 * semantics.c (perform_koenig_lookup): Change args to vec. Change
1698 all callers.
1699 (finish_call_expr): Change args to vec. Change all callers. Call
1700 build_op_call instead of passing CALL_EXPR to build_new_op.
1701 (cxx_omp_create_clause_info): Allocate vec to pass to
1702 build_special_member_call.
1703 * decl2.c (build_offset_ref_call_from_tree): Change args parameter
1704 to vec. Change all callers.
1705 * name-lookup.c (lookup_function_nonclass): Likewise.
1706 (struct arg_lookup): Change args to vec.
1707 (arg_assoc_namespace): Handle args as a vec.
1708 (arg_assoc_args_vec): New static function.
1709 (lookup_arg_dependent): Change args parameter to vec. Change all
1710 callers.
1711 * method.c (do_build_assign_ref): Allocate vec to pass to
1712 build_special_member_call.
1713 * except.c (build_throw): Likewise.
1714 * typeck2.c (build_functional_cast): Likewise.
1715 * cvt.c (ocp_convert): Likewise.
1716 * tree.c (build_min_non_dep_call_vec): Change last parameter to
1717 vec. Change all callers.
1718 * cp-tree.h: Update declarations.
1719 * name-lookup.h: Update declarations.
1720
1721 2009-05-20 Sandra Loosemore <sandra@codesourcery.com>
1722
1723 * typeck.c (default_conversion): Check targetm.promoted_type.
1724 * decl.c (grokdeclarator): Check targetm.invalid_return_type.
1725 (grokparms): Check targetm.invalid_parameter_type.
1726 * cvt.c (ocp_convert): Check targetm.convert_to_type.
1727 (build_expr_type_conversion): Check targetm.promoted_type.
1728
1729 2009-05-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
1730
1731 * typeck.c (build_binary_op): Allow % on integal vectors.
1732
1733 2009-05-18 Jason Merrill <jason@redhat.com>
1734
1735 Implement explicit conversions ops as specified in N2437.
1736 * decl.c (grokdeclarator): Handle explicit conversion ops.
1737 (check_initializer): Pass flags to store_init_value.
1738 * decl2.c (maybe_emit_vtables): Likewise.
1739 * init.c (expand_aggr_init_1): Likewise.
1740 * call.c (convert_class_to_reference): Take flags parm,
1741 check DECL_NONCONVERTING_P.
1742 (build_user_type_conversion_1): Check DECL_NONCONVERTING_P.
1743 (add_builtin_candidates): Simplify getting type of conversion.
1744 (build_object_call): Likewise. Check DECL_NONCONVERTING_P.
1745 (implicit_conversion): Pass through LOOKUP_ONLYCONVERTING.
1746 (reference_binding): Take flags parm. Direct-initialize copy parm.
1747 (add_function_candidate): Direct-initialize the copy parm.
1748 (add_conv_candidate): Use LOOKUP_IMPLICIT, not LOOKUP_NORMAL.
1749 (build_builtin_candidate): Add LOOKUP_ONLYCONVERTING.
1750 (conditional_conversion): Likewise.
1751 (convert_like_real): Only complain about DECL_NONCONVERTING_P
1752 constructors.
1753 (perform_implicit_conversion_flags): Add flags parm to
1754 perform_implicit_conversion. Improve diagnostics.
1755 * cp-tree.h (LOOKUP_IMPLICIT): New macro.
1756 (LOOKUP_COPY_PARM): New bit macro.
1757 * cvt.c (build_expr_type_conversion): Check DECL_NONCONVERTING_P.
1758 * typeck.c (convert_for_assignment): Take flags parm, pass it to
1759 perform_implicit_conversion_flags.
1760 (cp_build_modify_expr): Pass flags to convert_for_assignment.
1761 (convert_for_initialization): Likewise.
1762 * typeck2.c (store_init_value): Take flags parm, pass to
1763 digest_init_flags.
1764 (digest_init_flags): Add flags parm to digest_init.
1765 (digest_init_r): Take flags parm, pass to convert_for_initialization.
1766 (process_init_constructor_array): Pass it.
1767 (process_init_constructor_record): Likewise.
1768 (process_init_constructor_union): Likewise.
1769
1770 2009-05-16 Jason Merrill <jason@redhat.com>
1771
1772 PR c++/40139
1773 * pt.c (tsubst_qualified_id): Retain the type if we aren't dealing
1774 with a dependent type. Actually look up the destructor.
1775 * semantics.c (finish_id_expression): Fix logic.
1776 (finish_qualified_id_expr): Don't try to use 'this' if we aren't in
1777 a function.
1778 * typeck.c (build_x_unary_op): Diagnose taking the address of a
1779 constructor or destructor.
1780 * tree.c (get_first_fn): Handle OFFSET_REF.
1781
1782 2009-05-17 Joseph Myers <joseph@codesourcery.com>
1783
1784 * tree.c (cxx_printable_name_internal): Allow consecutive
1785 translated and untranslated cached copies of the name of the
1786 current function.
1787
1788 2009-05-15 Ian Lance Taylor <iant@google.com>
1789
1790 * cp-tree.h (enum cp_lvalue_kind_flags): Rename from
1791 cp_lvalue_kind. Change all uses.
1792 (enum base_access_flags): Rename from enum base_access. Change
1793 all uses.
1794 * parser.c (enum cp_parser_flags): Remove enum tag.
1795
1796 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
1797
1798 PR 16302
1799 * call.c (build_new_op): Update calls to warn_logical_operator.
1800
1801 2009-05-14 Ian Lance Taylor <iant@google.com>
1802
1803 * class.c (layout_class_type): Change itk to unsigned int.
1804 * decl.c (finish_enum): Change itk to unsigned int.
1805 * parser.c (cp_parser_check_decl_spec): Change ds to int. Remove
1806 casts.
1807
1808 2009-05-13 David Mandelin <dmandelin@mozilla.com>:
1809
1810 * decl.c (duplicate_decls): Preserve parameter attributes.
1811
1812 2009-05-10 Jan Hubicka <jh@suse.cz>
1813
1814 * decl2.c (cxx_callgraph_analyze_expr): Use
1815 cgraph_mark_address_taken.
1816
1817 2009-05-10 Joseph Myers <joseph@codesourcery.com>
1818
1819 * call.c (name_as_c_string): Call type_as_string_translate.
1820 Translate identifiers to locale character set.
1821 * cp-tree.h (lang_decl_name): Update prototype.
1822 (type_as_string_translate, decl_as_string_translate,
1823 cxx_printable_name_translate): Declare.
1824 * cxx-pretty-print.c (M_): Define.
1825 (pp_cxx_unqualified_id, pp_cxx_canonical_template_parameter): Mark
1826 English fragments for conditional translation with M_.
1827 * decl.c (grokdeclarator): Translate identifiers to locale
1828 character set for diagnostics.
1829 * error.c (M_): Define.
1830 (dump_template_bindings, dump_type, dump_aggr_type,
1831 dump_type_prefix, dump_global_iord, dump_simple_decl, dump_decl,
1832 dump_function_decl, dump_template_parms, dump_expr,
1833 dump_binary_op, op_to_string, assop_to_string): Mark English
1834 fragments for conditional translation with M_.
1835 (type_as_string): Disable translation of identifiers.
1836 (type_as_string_translate): New.
1837 (expr_as_string): Disable translation of identifiers.
1838 (decl_as_string): Disable translation of identifiers.
1839 (decl_as_string_translate): New.
1840 (lang_decl_name): Add parameter translate.
1841 (args_to_string): Call type_as_string_translate.
1842 (cp_print_error_function): Call cxx_printable_name_translate.
1843 (print_instantiation_full_context,
1844 print_instantiation_partial_context): Call
1845 decl_as_string_translate.
1846 * parser.c (cp_lexer_get_preprocessor_token): Use %qE for
1847 identifier in diagnostic.
1848 * tree.c (cxx_printable_name): Change to
1849 cxx_printable_name_internal. Add parameter translate.
1850 (cxx_printable_name, cxx_printable_name_translate): New wrappers
1851 round cxx_printable_name_internal.
1852
1853 2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
1854
1855 PR c/36892
1856 * call.c (build_call_a): Updated warn_deprecated_use call.
1857 (build_over_call): Likewise.
1858 * decl.c (grokdeclarator): Likewise.
1859 (grokparms): Likewise.
1860 * semantics.c (finish_id_expression): Likewise.
1861 * typeck.c (build_class_member_access_expr): Likewise.
1862 (finish_class_member_access_expr): Likewise.
1863
1864 2009-05-06 Dodji Seketeli <dodji@redhat.com>
1865
1866 PR c++/17395
1867 * pt.c (tsubst_copy) <case PARM_DECL>: We don't want to tsubst the
1868 whole list of PARM_DECLs, just the current one.
1869
1870 2009-05-05 Shujing Zhao <pearly.zhao@oracle.com>
1871
1872 * cp-tree.h:
1873 (opname_tab, assignop_tab, update_member_visibility, yyerror, yyhook,
1874 mangle_compound_literal): Remove unused declarations.
1875 (build_vfield_ref, cxx_print_statistics, clone_function_decl,
1876 adjust_clone_args, maybe_push_cleanup_level, pushtag, make_anon_name,
1877 pushdecl_top_level_maybe_friend, pushdecl_top_level_and_finish,
1878 check_for_out_of_scope_variable, print_other_binding_stack,
1879 maybe_push_decl, cxx_mark_addressable, force_target_expr,
1880 build_target_expr_with_type, finish_case_label,
1881 cxx_maybe_build_cleanup, begin_eh_spec_block, finish_eh_spec_block,
1882 check_template_keyword, cxx_omp_predetermined_sharing,
1883 cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
1884 cxx_omp_clause_assign_op, cxx_omp_clause_dtor, cxx_omp_finish_clause,
1885 cxx_omp_privatize_by_reference): Rearrange the declarations line to
1886 match the comment that indicates the .c file which the functions are
1887 defined.
1888 (cxx_print_xnode, cxx_print_decl, cxx_print_type,
1889 cxx_print_identifier, cxx_print_error_function, pushdecl): Add comment.
1890
1891 2009-05-05 Nathan Sidwell <nathan@codesourcery.com>
1892
1893 * typeck.c (cp_build_compound_expr): Require RHS to have a known
1894 type.
1895 * class.c (resolve_address_of_overloaded_function): Use
1896 OVL_CURRENT for error message.
1897 (instantiate_type): Forbid COMPOUND_EXPRs and remove code dealing
1898 with them. Do not copy the node.
1899
1900 2009-05-05 Jakub Jelinek <jakub@redhat.com>
1901
1902 PR c++/40013
1903 * pt.c (tsubst): If magic NOP_EXPR with side-effects has no type,
1904 set it from its operand's type after tsubst_expr.
1905
1906 2009-05-04 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1907
1908 PR c++/28152
1909 * parser.c (cp_lexer_get_preprocessor_token): Do not store the
1910 canonical spelling for keywords.
1911 (cp_parser_attribute_list): Use the canonical spelling for
1912 keywords in attributes.
1913
1914 2009-05-01 Joseph Myers <joseph@codesourcery.com>
1915
1916 * cxx-pretty-print.c (is_destructor_name, pp_cxx_unqualified_id,
1917 pp_cxx_template_keyword_if_needed, pp_cxx_postfix_expression,
1918 pp_cxx_new_expression, pp_cxx_delete_expression,
1919 pp_cxx_unary_expression, pp_cxx_assignment_operator,
1920 pp_cxx_assignment_expression, pp_cxx_expression,
1921 pp_cxx_function_specifier, pp_cxx_decl_specifier_seq,
1922 pp_cxx_simple_type_specifier, pp_cxx_type_specifier_seq,
1923 pp_cxx_exception_specification, pp_cxx_direct_declarator,
1924 pp_cxx_ctor_initializer, pp_cxx_type_id, pp_cxx_statement,
1925 pp_cxx_namespace_alias_definition, pp_cxx_template_parameter,
1926 pp_cxx_canonical_template_parameter, pp_cxx_template_declaration,
1927 pp_cxx_declaration, pp_cxx_typeid_expression,
1928 pp_cxx_va_arg_expression, pp_cxx_offsetof_expression,
1929 pp_cxx_trait_expression): Mostly use pp_string and
1930 pp_cxx_ws_string in place of pp_identifier and pp_cxx_identifier
1931 for non-identifiers. Mark English strings for translation.
1932 * cxx-pretty-print.h (pp_cxx_ws_string): Define.
1933 * error.c (dump_template_parameter, dump_template_bindings,
1934 dump_type, dump_aggr_type, dump_type_prefix, dump_simple_decl,
1935 dump_decl, dump_template_decl, dump_function_decl,
1936 dump_parameters, dump_exception_spec, dump_template_parms,
1937 dump_expr, dump_binary_op, dump_unary_op, op_to_string,
1938 assop_to_string, args_to_string, cp_print_error_function,
1939 print_instantiation_full_context,
1940 print_instantiation_partial_context): Mostly use pp_string and
1941 pp_cxx_ws_string in place of pp_identifier and pp_cxx_identifier
1942 for non-identifiers. Mark English strings for translation.
1943 (dump_global_iord): Mark strings for translation; use longer
1944 strings instead of substituting single words.
1945 (function_category): Return a format string marked for
1946 translation, not a single word or phrase to substitute in a longer
1947 phrase.
1948
1949 2009-04-28 Ben Elliston <bje@au.ibm.com>
1950
1951 PR c++/35652
1952 Revert:
1953
1954 2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1955
1956 * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.
1957
1958 2009-04-27 Ian Lance Taylor <iant@google.com>
1959
1960 * semantics.c (finish_omp_clauses): Change type of c_kind to enum
1961 omp_clause_code.
1962
1963 2009-04-27 Jakub Jelinek <jakub@redhat.com>
1964
1965 PR c++/39875
1966 * cvt.c (convert_to_void) <case INDIRECT_REF>: Only warn about
1967 -Wunused-value if implicit.
1968
1969 2009-04-24 Ian Lance Taylor <iant@google.com>
1970
1971 * call.c (build_temp): Change 0 to enum constant.
1972 * cp-tree.h (cp_lvalue_kind): Typedef to int rather than enum
1973 type.
1974 * cp-gimplify.c (cp_gimplify_expr): Add cast to enum type.
1975 * decl2.c (constrain_visibility): Likewise.
1976 * parser.c (cp_lexer_get_preprocessor_token): Likewise.
1977 (cp_parser_flags): Typedef to int rather than enum type.
1978 (cp_parser_expression_stack_entry): Change prec field to enum
1979 cp_parser_prec.
1980
1981 * typeck.c (build_modify_expr): Add lhs_origtype parameter.
1982 Change all callers.
1983
1984 2009-04-22 Dodji Seketeli <dodji@redhat.com>
1985
1986 PR c++/39639
1987 * parser.c (cp_parser_template_argument_list): Display an error
1988 when an ellipsis is not preceded by a parameter pack. Also, warn
1989 about variadic templates usage without -std=c++0x.
1990
1991 2009-04-21 Taras Glek <tglek@mozilla.com>
1992
1993 * cp-tree.h: Update GTY annotations to new syntax.
1994 * decl.c: Likewise.
1995 * mangle.c: Likewise.
1996 * name-lookup.c: Likewise.
1997 * name-lookup.h: Likewise.
1998 * parser.c: Likewise.
1999 * pt.c: Likewise.
2000 * rtti.c: Likewise.
2001 * semantics.c: Likewise.
2002 * typeck2.c: Likewise.
2003
2004 2009-04-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2005
2006 PR c++/14875
2007 * parser.c (cp_parser_error): Pass token->flags to c_parse_error.
2008
2009 2009-04-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2010
2011 PR c++/35711
2012 * typeck.c (check_for_casting_away_constness): We diagnose casting
2013 away any qualifiers not just constness.
2014 (casts_away_constness): Mention that it handles more than just
2015 constness.
2016
2017 2009-04-21 Joseph Myers <joseph@codesourcery.com>
2018
2019 * ChangeLog, ChangeLog-1993, ChangeLog-1994, ChangeLog-1995,
2020 ChangeLog-1996, ChangeLog-1997, ChangeLog-1998, ChangeLog-1999,
2021 ChangeLog-2000, ChangeLog-2001, ChangeLog-2002, ChangeLog-2003,
2022 ChangeLog-2004, ChangeLog-2005, ChangeLog-2006, ChangeLog-2007,
2023 ChangeLog-2008, ChangeLog.ptr, ChangeLog.tree-ssa, NEWS,
2024 cfns.gperf: Add copyright and license notices.
2025 * cfns.h: Regenerate.
2026 * ChangeLog, ChangeLog-2004: Correct dates.
2027
2028 2009-04-21 Manuel López-Ibáñez <manu@gcc.gnu.org>
2029
2030 PR 16202
2031 * tree.c (lvalue_p_1): Use const_tree.
2032 Use CONST_CAST_TREE to avoid warning.
2033 (lvalue_p): Returns bool, receives const_tree.
2034
2035 2009-04-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2036
2037 PR c++/13358
2038 * parser.c (cp_parser_check_decl_spec): Drop redundant flags.
2039 * error.c (pedwarn_cxx98): New.
2040 * cp-tree.h (pedwarn_cxx98): Declare.
2041
2042 2009-04-20 Le-Chun Wu <lcwu@google.com>
2043
2044 PR c++/39803
2045 * init.c (build_vec_init): Set TREE_NO_WARNING on the
2046 compiler-generated INDIRECT_REF expression.
2047
2048 2009-04-20 Ian Lance Taylor <iant@google.com>
2049
2050 * typeck.c (build_function_call_vec): New function.
2051 (cp_build_function_call): Only pass first parameter to
2052 objc_rewrite_function_call.
2053 (build_modify_expr): Add rhs_origtype parameter. Change all
2054 callers.
2055 * decl.c (finish_decl): Add origtype parameter. Change all
2056 callers.
2057 * semantics.c (finish_call_expr): Pass VEC to
2058 resolve_overloaded_builtin.
2059
2060 2009-04-20 Ian Lance Taylor <iant@google.com>
2061
2062 * cp-tree.h (base_access): Change typedef to int.
2063 * parser.c (cp_parser_omp_flush): Change 0 to OMP_CLAUSE_ERROR.
2064 (cp_parser_omp_threadprivate): Likewise.
2065 * pt.c (unify_pack_expansion): Add casts to enum type.
2066
2067 2009-04-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
2068
2069 PR c/32061
2070 PR c++/36954
2071 * call.c (build_new_op): Save the original codes of operands
2072 before folding.
2073
2074 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
2075
2076 * cp-tree.h: Remove the prototype for insert_block.
2077 * decl.c (insert_block): Remove.
2078
2079 2009-04-16 Ian Lance Taylor <iant@google.com>
2080
2081 * cp-tree.h (enum tsubst_flags): Rename from enum tsubst_flags_t.
2082 (tsubst_flags_t): Change typedef from enum type to int.
2083
2084 2009-04-16 Paolo Bonzini <bonzini@gnu.org>
2085
2086 * decl.c (check_initializer): Use TYPE_VECTOR_OPAQUE
2087 instead of targetm.vector_opaque_p.
2088
2089 2009-04-15 Le-Chun Wu <lcwu@google.com>
2090
2091 PR c++/39551
2092 * call.c (build_over_call): Set TREE_NO_WARNING on the
2093 compiler-generated INDIRECT_REF expression.
2094 * cvt.c (convert_to_void): Emit warning when stripping off
2095 INDIRECT_REF.
2096
2097 2009-04-14 Diego Novillo <dnovillo@google.com>
2098
2099 * parser.c (cp_parser_type_specifier_seq): Move call to
2100 invoke_plugin_callbacks ...
2101 (cp_parser_type_specifier_seq): ... here.
2102
2103 2009-04-14 Le-Chun Wu <lcwu@google.com>
2104
2105 * Make-lang.in: Modify dependencies of files including plugin.h.
2106 * decl.c (finish_function): Call invoke_plugin_callbacks.
2107 * parser.c (cp_parser_type_specifier): Call invoke_plugin_callbacks.
2108
2109 2009-04-14 Jason Merrill <jason@redhat.com>
2110
2111 PR c++/39763
2112 * name-lookup.c (pushdecl_maybe_friend): Avoid all warnings
2113 about shadowing by tentative parms.
2114
2115 2009-04-13 Jason Merrill <jason@redhat.com>
2116
2117 PR c++/39480
2118 * call.c (build_over_call): Don't call memcpy if the target is
2119 the same as the source.
2120
2121 2009-04-13 Jason Merrill <jason@redhat.com>
2122
2123 PR c++/39750
2124 * pt.c (uses_template_parms): Handle CONSTRUCTOR.
2125
2126 2009-04-12 Jason Merrill <jason@redhat.com>
2127
2128 PR c++/39742
2129 * call.c (joust): Don't crash on variadic fn.
2130
2131 2009-04-10 Jason Merrill <jason@redhat.com>
2132
2133 PR c++/28301
2134 * parser.c (cp_parser_skip_to_end_of_block_or_statement): Return
2135 if we see a close brace without an open brace.
2136
2137 2009-04-10 H.J. Lu <hongjiu.lu@intel.com>
2138
2139 * parser.c (cp_parser_class_specifier): Remove the unused
2140 has_trailing_semicolon.
2141
2142 2009-04-10 Manuel López-Ibáñez <manu@gcc.gnu.org>
2143
2144 PR c++/20118
2145 * parser.c (cp_parser_check_template_parameters): Take a
2146 cp_declarator parameter.
2147 (cp_parser_elaborated_type_specifier): Update to
2148 cp_parser_check_template_parameters.
2149 (cp_parser_class_head): Likewise.
2150 (cp_parser_check_declarator_template_parameters): Likewise.
2151 (cp_parser_check_template_parameters): Handle first the non-error
2152 conditions. Give more accurate diagnostics if a declarator is
2153 given.
2154
2155 2009-04-08 Jason Merrill <jason@redhat.com>
2156
2157 PR c++/25185
2158 * error.c (dump_aggr_type): Chase template typedefs if
2159 -fno-pretty-templates.
2160
2161 2009-04-08 Dodji Seketeli <dodji@redhat.com>
2162
2163 PR c++/39637
2164 * parser.c (cp_parser_enumerator_definition): Make sure the
2165 initializer of the enumerator doesn't contain any bare parameter pack.
2166
2167 2009-04-07 Jason Merrill <jason@redhat.com>
2168
2169 PR c++/34691
2170 * name-lookup.c (merge_functions): Keep multiple extern "C" functions.
2171 * call.c (joust): Complain about mismatched default arguments
2172 in extern "C" functions.
2173 * class.c (resolve_address_of_overloaded_function): Handle multiple
2174 extern "C" functions.
2175 * pt.c (resolve_overloaded_unification): Likewise.
2176
2177 2009-04-07 Jason Merrill <jason@redhat.com>
2178
2179 PR c++/25185
2180 * error.c (dump_function_decl): Don't pretty-print templates
2181 if -fno-pretty-templates.
2182 (count_non_default_template_args): Print all args if
2183 -fno-pretty-templates.
2184
2185 2009-04-06 Jason Merrill <jason@redhat.com>
2186
2187 PR c++/35146
2188 * pt.c (fn_type_unification): For DEDUCE_EXACT check that
2189 the deduced template arguments give us the parameter types
2190 we're looking for.
2191
2192 2009-04-05 Giovanni Bajo <giovannibajo@libero.it>
2193 Jason Merrill <jason@redhat.com>
2194
2195 PR c++/14912
2196 * error.c (count_non_default_template_args): New fn.
2197 (dump_template_parms): Call it.
2198 (dump_template_argument_list): Call it. Add parms parm.
2199 (dump_template_argument): Adjust call to dump_template_argument_list.
2200 (dump_type, dump_decl): Likewise.
2201 (dump_template_bindings): Refactor logic.
2202
2203 2009-04-03 Jason Merrill <jason@redhat.com>
2204
2205 PR c++/25185
2206 * error.c (dump_template_bindings): Look through typedefs in
2207 typename results.
2208 (dump_type) [TYPENAME_TYPE]: Print the typedef name if any.
2209 (find_typenames_r): Also collect typedefs.
2210 * pt.c (unify): Strip typedefs.
2211
2212 PR c++/39608
2213 * semantics.c (finish_id_expression): Don't assume a dependent
2214 member of the current instantiation isn't a valid integral
2215 constant expression. Check dependent_scope_p.
2216 * pt.c (dependent_scope_p): Check TYPE_P.
2217 (tsubst_copy): If args is null, just return.
2218
2219 2009-04-02 Jason Merrill <jason@redhat.com>
2220
2221 PR c++/25185
2222 * error.c (find_typenames, find_typenames_r): New fns.
2223 (dump_function_decl): Call find_typenames.
2224 (dump_template_bindings): Print typenames as well.
2225 * pt.c (tsubst): Non-static.
2226 * cp-tree.h: Declare it.
2227
2228 2009-04-02 Dodji Seketeli <dodji@redhat.com>
2229
2230 PR c++/26693
2231 * decl2.c (grokfield): when a typedef appears in a
2232 class, create the typedef variant type node for it.
2233 (save_template_attributes): Creating typedef variant type node
2234 here is now useless.
2235 * decl.c (grokdeclarator): If the typedef'ed struct/class was
2236 anonymous, set the proper type name to all its type variants.
2237 (xref_basetypes) : Fixup the variant types after setting
2238 TYPE_BINFO on REF.
2239 * name-lookup.c (pushdecl_maybe_friend): Reuse the
2240 set_underlying_type function to install typedef variant types.
2241 * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
2242 macro.
2243 (append_type_to_template_for_access_check): New entry points.
2244 * semantics.c (check_accessibility_of_qualified_id):
2245 When a typedef that is a member of a class appears in a template,
2246 add it to the template. It will be ...
2247 * class.c (finish_struct_bits): Split type variant fixup into ...
2248 (fixup_type_variants): A new entry point.
2249 * pt.c (instantiate_class_template, instantiate_template ): ... access
2250 checked at template instantiation time.
2251 (resolve_type_name_type): The type name should be the name of the
2252 main type variant.
2253 (retrieve_specialization): Specializations of template typedefs aren't
2254 to looked up in DECL_TEMPLATE_INSTANTIATIONS (tmpl).
2255 (append_type_to_template_for_access_check): New entry point.
2256 (tsubst_decl): For typedefs, build the variant type from the correct
2257 original type.
2258 (get_class_bindings): Fix function comment.
2259 (perform_typedefs_access_check): New entry point.
2260
2261 2009-03-31 Jason Merrill <jason@redhat.com>
2262
2263 PR c++/34691
2264 * name-lookup.c (pushdecl_maybe_friend): Diagnose mismatched
2265 extern "C" declarations.
2266
2267 C++ DR 613
2268 * semantics.c (finish_non_static_data_member): Allow such references
2269 without an associated object in sizeof/decltype/alignof.
2270
2271 * ptree.c (cxx_print_decl): Pretty-print full name of
2272 function/template.
2273 (cxx_print_type): Pretty-print full name of class.
2274
2275 * decl.c (grokdeclarator): Reject pointer to qualified function
2276 type.
2277
2278 PR c++/37806, core issue 547
2279 * typeck.c (cp_apply_type_quals_to_decl): Don't apply any quals
2280 to a typedef.
2281 * tree.c (cp_build_qualified_type_real): Don't apply restrict to a
2282 function type.
2283 * decl.h (enum decl_context): Add TEMPLATE_TYPE_ARG.
2284 * decl.c (groktypename): Add is_template_arg parameter.
2285 (grokdeclarator): Allow function cv-quals on a template type arg.
2286 * parser.c (cp_parser_new_type_id, cp_parser_type_id): Add
2287 is_template_arg argument in calls to groktypename.
2288 * cp-tree.h: Adjust prototype.
2289 * error.c (dump_type_prefix, dump_type_suffix): Fix plain
2290 FUNCTION_TYPE printing.
2291
2292 * mangle.c (write_expression): Mangle dependent name as
2293 source-name.
2294
2295 PR c++/38030, 38850, 39070
2296 * pt.c (type_dependent_expression_p_push): New fn.
2297 (tsubst_copy_and_build) [CALL_EXPR]: Only do arg-dep lookup when the
2298 substitution makes the call non-dependent. Preserve koenig_p.
2299 * parser.c (cp_parser_postfix_expression): Only do arg-dep lookup
2300 for non-dependent calls.
2301 * semantics.c (finish_call_expr): Revert earlier changes.
2302 * cp-tree.h: Revert change to finish_call_expr prototype.
2303
2304 2009-03-29 Joseph Myers <joseph@codesourcery.com>
2305
2306 PR preprocessor/34695
2307 * cp-tree.h (cp_cpp_error): Remove.
2308 * error.c (cp_cpp_error): Remove.
2309 * parser.c (cp_lexer_new_main): Set done_lexing instead of
2310 client_diagnostic and error callback.
2311
2312 2009-03-28 Paolo Bonzini <bonzini@gnu.org>
2313
2314 * cp/cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
2315 * cp/cp-objcp-common.c (cxx_staticp): Remove.
2316 * cp/cp-tree.h (cxx_staticp): Remove.
2317
2318 2009-03-28 Jakub Jelinek <jakub@redhat.com>
2319
2320 PR c++/39554
2321 * parser.c (cp_parser_postfix_expression): Don't call
2322 warning_if_disallowed_function_p.
2323
2324 2009-03-27 Jan Hubicka <jh@suse.cz>
2325
2326 * except.c (choose_personality_routine): Set terminate_node to abort
2327 for java exceptions.
2328
2329 2009-03-27 Dodji Seketeli <dodji@redhat.com>
2330 Jakub Jelinek <jakub@redhat.com>
2331
2332 PR debug/37959
2333 * cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
2334 (cp_function_decl_explicit_p): New prototype.
2335 * cp-objcp-common.c (cp_function_decl_explicit_p): New function.
2336
2337 2009-03-27 Andrew Pinski <andrew_pinski@playstation.sony.com>
2338
2339 PR c++/38638
2340 * parser.c (cp_parser_elaborated_type_specifier): If we have a
2341 typename tag and don't have either a TYPE_DECL or a
2342 TEMPLATE_ID_EXPR, set the type to NULL.
2343
2344 2009-03-27 Simon Martin <simartin@users.sourceforge.net>
2345
2346 PR c++/37647
2347 * decl.c (grokdeclarator): Reject [con|de]stuctors in a non-class
2348 scope.
2349
2350 2009-03-27 Simon Martin <simartin@users.sourceforge.net>
2351
2352 PR c++/29727
2353 * decl.c (check_array_designated_initializer): Handle error_mark_node.
2354
2355 2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2356
2357 PR c++/35652
2358 * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.
2359
2360 2009-03-26 Andrew Haley <aph@redhat.com>
2361
2362 PR C++/39380
2363 * decl2.c (possibly_inlined_p): If java exceptions are in use
2364 don't inline a decl unless it is explicitly marked inline.
2365 * lex.c: (pragma_java_exceptions): New variable.
2366 (handle_pragma_java_exceptions): Set pragma_java_exceptions.
2367 * cp-tree.h (pragma_java_exceptions): Declare new variable.
2368
2369 2009-03-24 Jason Merrill <jason@redhat.com>
2370
2371 PR c++/28274
2372 * name-lookup.c (pushdecl_maybe_friend): Check default args later.
2373
2374 2009-03-23 Jakub Jelinek <jakub@redhat.com>
2375
2376 PR c/39495
2377 * semantics.c (handle_omp_for_class_iterator): Swap cond operands and
2378 code if iter is the second operand.
2379 * parser.c (cp_parser_binary_expression): Add no_toplevel_fold_p
2380 argument. If it is set, don't build the toplevel expression with
2381 build_x_binary_op, but build2.
2382 (cp_parser_assignment_expression, cp_parser_omp_for_incr): Adjust
2383 callers.
2384 (cp_parser_omp_for_cond): Don't assume the first operand of the
2385 comparison must be decl.
2386
2387 2009-03-23 Jason Merrill <jason@redhat.com>
2388
2389 PR c++/37729
2390 * pt.c (make_fnparm_pack): Split out from...
2391 (instantiate_decl): ...here.
2392 (tsubst_pack_expansion): Handle being called in a late-specified
2393 return type.
2394
2395 PR c++/39526
2396 * name-lookup.c (pushdecl_maybe_friend): Don't warn about shadowing
2397 a parm with a parm.
2398
2399 2009-03-20 Jason Merrill <jason@redhat.com>
2400
2401 PR c++/28879
2402 * parser.c (cp_parser_direct_declarator): In a template, wrap
2403 non-constant expression in NOP_EXPR with TREE_SIDE_EFFECTS set.
2404 * pt.c (tsubst): Preserve it in a partial instantiation.
2405 (dependent_type_p_r): Don't check value_dependent_expression_p.
2406 * decl.c (compute_array_index_type): Don't check
2407 value_dependent_expression_p if TREE_SIDE_EFFECTS.
2408
2409 C++ core issue 703
2410 * typeck2.c (check_narrowing): Don't complain about loss of
2411 precision when converting a floating-point constant.
2412
2413 2009-03-19 Jakub Jelinek <jakub@redhat.com>
2414
2415 PR c/39495
2416 * parser.c (cp_parser_omp_for_cond): Don't check lhs if decl is NULL.
2417 (cp_parser_omp_for_loop): Always use cp_parser_omp_for_cond.
2418
2419 2009-03-18 Jakub Jelinek <jakub@redhat.com>
2420
2421 * parser.c (struct cp_token): Reorder fields for 64-bit hosts.
2422 (eof_token): Adjust.
2423
2424 2009-03-18 H.J. Lu <hongjiu.lu@intel.com>
2425
2426 PR c++/39425
2427 * parser.c (cp_parser_explicit_specialization): Don't skip the
2428 rest of the specialization when begin_specialization returns
2429 false.
2430
2431 2009-03-17 Jason Merrill <jason@redhat.com>
2432
2433 * decl.c (grokfndecl): Set DECL_CONTEXT on parms.
2434 (duplicate_decls): Adjust DECL_CONTEXT of newdecl's parms.
2435 * pt.c (check_explicit_specialization): Likewise.
2436 (tsubst_copy) [PARM_DECL]: Return a dummy parm if we don't have a
2437 local specialization.
2438 * tree.c (cp_tree_equal) [PARM_DECL]: Check type and index, not name.
2439 * decl2.c (parm_index): New fn.
2440 * semantics.c (finish_decltype_type): Don't use describable_type.
2441 * mangle.c (write_expression): Likewise. Mangle ALIGNOF_EXPR.
2442 Give a sorry for unsupported codes rather than crash. Mangle
2443 conversions with other than 1 operand. New mangling for PARM_DECL.
2444 * operators.def (ALIGNOF_EXPR): Mangle as "az".
2445
2446 2009-03-17 Jing Yu <jingyu@google.com>
2447
2448 PR middle-end/39378
2449 * method.c (use_thunk): Change is_thunk from crtl to cfun.
2450
2451 2009-03-17 Paolo Carlini <paolo.carlini@oracle.com>
2452
2453 PR c++/39475
2454 * semantics.c (check_trait_type): New.
2455 (finish_trait_expr): Use it.
2456
2457 2009-03-17 Jakub Jelinek <jakub@redhat.com>
2458
2459 * name-lookup.c (cp_emit_debug_info_for_using): Emit USING_STMTs
2460 instead of calling imported_module_or_decl debug hook if
2461 building_stmt_tree ().
2462 * cp-gimplify.c (cp_gimplify_expr): Don't assert the first operand
2463 is a NAMESPACE_DECL.
2464
2465 PR debug/37890
2466 * name-lookup.c (do_namespace_alias): Don't call global_decl debug
2467 hook at function scope.
2468
2469 PR debug/39471
2470 * cp-gimplify.c (cp_gimplify_expr): Don't set DECL_NAME
2471 on IMPORTED_DECL.
2472
2473 2009-03-09 Jakub Jelinek <jakub@redhat.com>
2474
2475 PR c++/39371
2476 * semantics.c (finish_switch_cond): Don't call get_unwidened.
2477 * decl.c (finish_case_label): Pass SWITCH_STMT_TYPE as 3rd argument
2478 instead of TREE_TYPE (cond).
2479
2480 2009-03-08 H.J. Lu <hongjiu.lu@intel.com>
2481
2482 PR c++/39060
2483 * parser.c (cp_parser_late_parsing_default_args): Continue
2484 the loop when cp_parser_assignment_expression returns
2485 error_mark_node.
2486
2487 2009-03-07 Jason Merrill <jason@redhat.com>
2488
2489 PR c++/39367
2490 * init.c (build_new_1): Don't use a VLA type.
2491 (build_vec_init): Handle getting a pointer for BASE.
2492
2493 2009-03-06 H.J. Lu <hongjiu.lu@intel.com>
2494
2495 PR c++/37520
2496 * cp-tree.h: Check NO_DOT_IN_LABEL before NO_DOLLAR_IN_LABEL
2497 when mangling symbols.
2498
2499 2009-03-06 Paolo Carlini <paolo.carlini@oracle.com>
2500
2501 PR c++/33492
2502 * error.c (dump_expr): Don't try to print THROW_EXPRs in full.
2503
2504 2009-03-06 Alexandre Oliva <aoliva@redhat.com>
2505
2506 * decl.c (record_builtin_java_type): Use canonicalized integer
2507 types.
2508
2509 2009-03-04 Jason Merrill <jason@redhat.com>
2510
2511 PR c++/38908
2512 * class.c (is_really_empty_class): New fn.
2513 * cp-tree.h: Declare it.
2514 * cp-objcp-common.c (cp_expr_size): Use it.
2515
2516 PR c++/13549
2517 * semantics.c (perform_koenig_lookup): Handle TEMPLATE_ID_EXPR.
2518 * parser.c (cp_parser_postfix_expression): Call it for
2519 TEMPLATE_ID_EXPR.
2520 * tree.c (is_overloaded_fn): Look through TEMPLATE_ID_EXPR.
2521 (get_first_fn): Likewise.
2522
2523 PR c++/9634
2524 PR c++/29469
2525 PR c++/29607
2526 Implement DR 224.
2527 * decl.c (make_typename_type): Do look inside currently open classes.
2528 * parser.c (cp_parser_lookup_name): Likewise.
2529 (cp_parser_template_name): Likewise.
2530 * pt.c (dependent_scope_p): New function.
2531 * cp-tree.h: Declare it.
2532 * class.c (currently_open_class): Return fast if T isn't a class.
2533
2534 2009-02-26 H.J. Lu <hongjiu.lu@intel.com>
2535
2536 PR c++/37789
2537 * parser.c (cp_parser_mem_initializer): Return error_mark_node
2538 if cp_parser_mem_initializer_id returns error_mark_node.
2539
2540 2009-02-24 Richard Guenther <rguenther@suse.de>
2541
2542 PR c++/39242
2543 * pt.c (instantiate_decl): Do not instantiate extern, non-inline
2544 declared functions.
2545
2546 2009-02-23 H.J. Lu <hongjiu.lu@intel.com>
2547
2548 PR c++/36411
2549 * pt.c (coerce_template_template_parms): Return 0 if parameter
2550 is error_mark_node.
2551
2552 2009-02-23 Jason Merrill <jason@redhat.com>
2553
2554 * pt.c (unify): Call maybe_adjust_types_for_deduction when
2555 deducing from an initializer list.
2556
2557 2009-02-20 Jason Merrill <jason@redhat.com>
2558
2559 PR c++/39225
2560 * decl.c (grokdeclarator): Handle ~identifier.
2561
2562 2009-02-19 Jakub Jelinek <jakub@redhat.com>
2563
2564 PR target/39175
2565 * decl2.c (determine_visibility): If visibility changed and
2566 DECL_RTL has been already set, call make_decl_rtl to update symbol
2567 flags.
2568
2569 2009-02-19 H.J. Lu <hongjiu.lu@intel.com>
2570
2571 PR c++/39188
2572 * cp-tree.h (maybe_commonize_var): New.
2573
2574 * decl.c (maybe_commonize_var): Make it extern.
2575
2576 * decl2.c (finish_anon_union): Call maybe_commonize_var.
2577
2578 2009-02-18 H.J. Lu <hongjiu.lu@intel.com>
2579
2580 PR c++/39219
2581 * parser.c (cp_parser_enum_specifier): Apply all attributes.
2582
2583 2009-02-18 Jason Merrill <jason@redhat.com>
2584
2585 * cfns.h: Tweak pathname for cfns.gperf.
2586
2587 2009-02-13 Jason Merrill <jason@redhat.com>
2588
2589 PR c++/39070
2590 * semantics.c (finish_call_expr): Change koenig_p parm to int.
2591 If -1, don't set KOENIG_LOOKUP_P but do keep hidden candidates.
2592 * cp-tree.h: Adjust prototype.
2593 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Pass -1.
2594
2595 2009-02-12 Jason Merrill <jason@redhat.com>
2596
2597 PR c++/38950
2598 * pt.c (unify)[TEMPLATE_PARM_INDEX]: Convert to the tsubsted type.
2599
2600 2009-02-11 Jason Merrill <jason@redhat.com>
2601
2602 PR c++/39153
2603 * decl2.c (cp_write_global_declarations):
2604 Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL.
2605
2606 PR c++/30111
2607 * init.c (build_value_init_noctor): Split out from...
2608 (build_value_init): ...here.
2609 (expand_aggr_init_1): Handle value-initialization.
2610 * cp-tree.h: Add declaration.
2611 * class.c (type_has_user_provided_constructor):
2612 Handle non-class arguments.
2613
2614 2009-02-10 Jason Merrill <jason@redhat.com>
2615
2616 PR c++/38649
2617 * class.c (defaultable_fn_p): Handle ... properly.
2618
2619 PR c++/36744
2620 * tree.c (lvalue_p_1): Condition rvalue ref handling on
2621 treat_class_rvalues_as_lvalues, too.
2622
2623 2009-02-10 Paolo Carlini <paolo.carlini@oracle.com>
2624
2625 PR c++/34397
2626 * typeck.c (build_x_array_ref): New.
2627 * cp-tree.h: Declare it.
2628 * pt.c (tsubst_copy_and_build): Use it for case ARRAY_REF.
2629
2630 2009-02-09 Jason Merrill <jason@redhat.com>
2631
2632 PR c++/39109
2633 * semantics.c (simplify_aggr_init_expr): Do zero-initialization here.
2634 * init.c (build_value_init): Not here. Don't build a TARGET_EXPR.
2635 * tree.c (get_target_expr): Handle AGGR_INIT_EXPR.
2636 * cp-gimplify.c (cp_gimplify_init_expr): Remove special handling
2637 for build_value_init TARGET_EXPR.
2638 * cp-tree.h (AGGR_INIT_ZERO_FIRST): New macro.
2639
2640 2009-02-06 Paolo Carlini <paolo.carlini@oracle.com>
2641
2642 PR c++/35147
2643 PR c++/37737
2644 * cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Check TREE_VEC_LENGTH.
2645
2646 2009-02-04 Jakub Jelinek <jakub@redhat.com>
2647
2648 PR c++/39095
2649 * operators.def: Use COMPONENT_REF code for ->/pt operator again,
2650 remove ./dt operator.
2651 * mangle.c (write_expression): Handle COMPONENT_REF after handling
2652 ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it
2653 write_string ("dt") instead of using operators.def.
2654
2655 2009-02-03 Jason Merrill <jason@redhat.com>
2656
2657 * typeck.c (cp_build_unary_op): Only complain about taking address
2658 of main if pedantic.
2659
2660 2009-02-03 Jakub Jelinek <jakub@redhat.com>
2661
2662 PR inline-asm/39059
2663 * parser.c (cp_parser_primary_expression): Reject FIXED_CSTs.
2664
2665 PR c++/39056
2666 * typeck2.c (digest_init_r): Don't call process_init_constructor
2667 for COMPLEX_TYPE.
2668
2669 2009-02-03 Paolo Bonzini <bonzini@gnu.org>
2670
2671 PR c++/36897
2672 * pt.c (convert_nontype_argument_function): Expect expr to be an
2673 ADDR_EXPR.
2674
2675 PR c++/37314
2676 * typeck.c (merge_types): Call resolve_typename_type if only
2677 one type is a typename.
2678
2679 2009-02-02 Jason Merrill <jason@redhat.com>
2680
2681 PR c++/39054
2682 * parser.c (cp_parser_unqualified_id): Don't wrap error_mark_node
2683 in BIT_NOT_EXPR.
2684
2685 2009-02-01 Paolo Carlini <paolo.carlini@oracle.com>
2686
2687 PR c++/39053
2688 * parser.c (cp_parser_pure_specifier): If there are no tokens left
2689 do not call cp_lexer_consume_token.
2690
2691 2009-01-30 Jakub Jelinek <jakub@redhat.com>
2692
2693 PR c++/39028
2694 * parser.c (cp_parser_already_scoped_statement): Handle __label__
2695 declarations.
2696
2697 2009-01-30 Paolo Carlini <paolo.carlini@oracle.com>
2698
2699 PR c++/33465
2700 * error.c (dump_expr): Handle FIX_TRUNC_EXPR and FLOAT_EXPR.
2701
2702 2009-01-30 Paolo Carlini <paolo.carlini@oracle.com>
2703
2704 PR c++/38655
2705 * error.c (dump_type_prefix, dump_type_suffix): Handle FIXED_POINT_TYPE.
2706
2707 2009-01-29 Paolo Carlini <paolo.carlini@oracle.com>
2708
2709 * typeck.c (invalid_nonstatic_memfn_p): Use
2710 DECL_NONSTATIC_MEMBER_FUNCTION_P.
2711
2712 2009-01-27 Paolo Carlini <paolo.carlini@oracle.com>
2713
2714 PR c++/37554
2715 * call.c (build_over_call): If convert_for_arg_passing returns
2716 error_mark_node unconditionally return it.
2717
2718 2009-01-22 Adam Nemet <anemet@caviumnetworks.com>
2719
2720 * class.c (check_field_decls): Also inherit packed for bitfields
2721 regardless of their type.
2722
2723 2009-01-22 Dodji Seketeli <dodji@redhat.com>
2724
2725 PR c++/38930
2726 * decl2.c (grokfield): Reverting changes of PR c++/26693
2727 (save_template_attributes): Likewise.
2728 * decl.c (grokdeclarator): Likewise.
2729 * name-lookup.c (pushdecl_maybe_friend): Likewise.
2730 * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Likewise.
2731 (append_type_to_template_for_access_check): Likewise.
2732 * semantics.c (check_accessibility_of_qualified_id): Likewise.
2733 * pt.c (instantiate_class_template, instantiate_template ): Likewise.
2734 (tsubst): Likewise.
2735 (resolve_type_name_type): Likewise.
2736 (append_type_to_template_for_access_check): Likewise.
2737
2738 2009-01-21 Dodji Seketeli <dodji@redhat.com>
2739
2740 PR c++/26693
2741 * decl2.c (grokfield): when a typedef appears in a
2742 class, create the typedef variant type node for it.
2743 (save_template_attributes): Creating typedef variant type node
2744 here is now useless.
2745 * decl.c (grokdeclarator): If the typedef'ed struct/class was
2746 anonymous, set the proper type name to all its type variants.
2747 * name-lookup.c (pushdecl_maybe_friend): Reuse the
2748 set_underlying_type function to install typedef variant types.
2749 * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
2750 macro.
2751 (append_type_to_template_for_access_check): New entry points.
2752 * semantics.c (check_accessibility_of_qualified_id):
2753 When a typedef that is a member of a class appears in a template,
2754 add it to the template. It will be ...
2755 * pt.c (instantiate_class_template, instantiate_template ): ... access
2756 checked at template instantiation time.
2757 (tsubst): Handle the case of being called with NULL args.
2758 (resolve_type_name_type): The type name should be the name of the
2759 main type variant.
2760 (append_type_to_template_for_access_check): New entry point.
2761
2762 2009-01-19 Jason Merrill <jason@redhat.com>
2763
2764 PR c++/23287
2765 * parser.c (cp_parser_unqualified_id): In a template,
2766 accept ~identifier.
2767 * typeck.c (lookup_destructor): Handle IDENTIFIER_NODE.
2768
2769 2009-01-16 Jason Merrill <jason@redhat.com>
2770
2771 PR c++/38877
2772 * tree.c (lvalue_p_1): Allow non-fields in COMPONENT_REF.
2773 * init.c (build_new): Don't call describable_type unless we
2774 have an auto.
2775
2776 PR c++/29470
2777 * pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.
2778
2779 PR c++/38579
2780 * search.c (protected_accessible_p): N doesn't vary.
2781
2782 2009-01-15 Jason Merrill <jason@redhat.com>
2783
2784 PR c++/38850
2785 * pt.c (tsubst_copy_and_build): Tell finish_call_expr to
2786 accept hidden friends.
2787
2788 2009-01-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
2789
2790 PR C++/29388
2791 * decl.c (grokdeclarator): Check for a non namespace/class context.
2792
2793 2009-01-15 Jason Merrill <jason@redhat.com>
2794
2795 PR c++/36334
2796 PR c++/37646
2797 * tree.c (lvalue_p_1): Handle BASELINK. A COMPONENT_REF to
2798 a function isn't necessarily an lvalue. Take tree, not const_tree.
2799 (lvalue_p, real_lvalue_p): Take tree, not const_tree.
2800 * typeck.c (lvalue_or_else): Likewise.
2801 * cp-tree.h: Adjust prototypes.
2802
2803 2009-01-15 Steve Ellcey <sje@cup.hp.com>
2804
2805 PR c++/38357
2806 * pt.c (tsubst): Check for NULL args.
2807
2808 2009-01-15 Dodji Seketeli <dodji@redhat.com>
2809
2810 PR c++/38636
2811 * name-lookup.c (pushtag): Don't create members to types that are not
2812 being created.
2813
2814 2009-01-14 Nick Clifton <nickc@redhat.com>
2815
2816 PR c++/37862
2817 * parser.c: Pass cp_id_kind computed in
2818 cp_parser_postfix_dot_deref_expression to
2819 cp_parser_primary_expression.
2820
2821 2009-01-13 Jakub Jelinek <jakub@redhat.com>
2822
2823 PR c++/38795
2824 * tree.c (cp_walk_subtrees): Handle REINTERPRET_CAST_EXPR,
2825 STATIC_CAST_EXPR, CONST_CAST_EXPR and DYNAMIC_CAST_EXPR the same
2826 as CAST_EXPR.
2827
2828 2009-01-12 Jason Merrill <jason@redhat.com>
2829 Steve Ellcey <sje@cup.hp.com>
2830
2831 PR c++/35109
2832 * name-lookup.c (lookup_name_real): Keep looking past a hidden
2833 binding.
2834
2835 2009-01-12 Dodji Seketeli <dodji@redhat.com>
2836
2837 PR c++/36019
2838 * pt.c (parameter_of_template_p): New function.
2839 * cp-tree.h: Declare it.
2840 * name-lookup.c (binding_to_template_parms_of_scope_p): New
2841 function.
2842 (outer_binding): Take template parameters in account when looking for
2843 a name binding.
2844
2845 2009-01-12 Jason Merrill <jason@redhat.com>
2846
2847 PR c++/31488
2848 * tree.c (pod_type_p): Return 1 for structs created by the back end.
2849
2850 2009-01-12 Jakub Jelinek <jakub@redhat.com>
2851
2852 PR c/32041
2853 * parser.c (cp_parser_builtin_offsetof): Allow `->' in
2854 offsetof member-designator, handle it as `[0].'.
2855
2856 PR c++/38794
2857 * decl.c (start_function): If grokdeclarator hasn't returned
2858 FUNCTION_DECL nor error_mark_node, issue diagnostics.
2859
2860 2009-01-11 Jakub Jelinek <jakub@redhat.com>
2861
2862 PR c++/36254
2863 * cp-gimplify.c (genericize_if_stmt): Renamed from ...
2864 (gimplify_if_stmt): ... this.
2865 (cp_gimplify_expr): Don't handle IF_STMT here.
2866 (cp_genericize_r): Call genericize_if_stmt for IF_STMT.
2867
2868 2009-01-10 Andrew Pinski <pinskia@gmail.com>
2869
2870 PR c++/38648
2871 * typeck.c (cp_build_modify_expr): Check for NULL current_function_decl.
2872
2873 PR c++/36695
2874 * typeck2.c (build_functional_cast): Check for reference type and NULL
2875 PARMS.
2876
2877 2009-01-09 Steve Ellcey <sje@cup.hp.com>
2878
2879 * typeck.c (cp_build_unary_op): Check for ERROR_MARK.
2880
2881 2009-01-09 Jakub Jelinek <jakub@redhat.com>
2882
2883 PR c++/35335
2884 * error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR.
2885
2886 2009-01-09 John F. Carr <jfc@mit.edu>
2887
2888 PR c++/37877
2889 * parser.c (cp_parser_class_specifier): Clear
2890 parser->in_unbraced_linkage_specification_p while parsing class
2891 specifiers.
2892
2893 2009-01-07 Jakub Jelinek <jakub@redhat.com>
2894
2895 PR c++/38725
2896 * semantics.c (finish_goto_stmt): Convert destination to
2897 void *.
2898
2899 2009-01-06 Jason Merrill <jason@redhat.com>
2900
2901 PR c++/35297
2902 PR c++/35477
2903 PR c++/35784
2904 PR c++/36846
2905 PR c++/38276
2906 * pt.c (check_default_tmpl_args): Don't complain about
2907 out-of-order parameter packs in the enclosing class
2908 or parameter packs after default args.
2909 (coerce_template_parms): If we have more than one
2910 parameter pack, don't flatten argument packs.
2911 (template_args_equal): Handle argument packs.
2912 (comp_template_args): Don't flatten argument packs.
2913 (check_instantiated_arg): Split out from...
2914 (check_instantiated_args): Here. Handle arg packs.
2915 (convert_template_argument): Just check that nontype argument
2916 packs have the right type.
2917
2918 2009-01-05 Dodji Seketeli <dodji@redhat.com>
2919
2920 PR c++/38472
2921 * typeck.c (type_after_usual_arithmetic_conversions): Fix a typo.
2922
2923 2009-01-05 Jason Merrill <jason@redhat.com>
2924
2925 PR c++/38698
2926 * typeck2.c (process_init_constructor_union): Handle union with
2927 no fields.
2928
2929 * mangle.c (write_expression): Remove mangling for zero-operand
2930 casts.
2931
2932 PR c++/38701
2933 * decl.c (cp_finish_decl): Clear DECL_INITIAL for invalid
2934 defaulting.
2935
2936 PR c++/38702
2937 * class.c (defaultable_fn_p): Only operator== can be a copy
2938 assignment operator.
2939
2940 2009-01-02 Jason Merrill <jason@redhat.com>
2941
2942 PR c++/38698
2943 * typeck2.c (process_init_constructor_union): Handle excess
2944 initializers.
2945 (process_init_constructor_record): Likewise.
2946
2947 PR c++/38684
2948 * typeck2.c (digest_init_r): Don't use process_init_constructor
2949 for non-aggregate classes.
2950
2951 \f
2952 Copyright (C) 2009 Free Software Foundation, Inc.
2953
2954 Copying and distribution of this file, with or without modification,
2955 are permitted in any medium without royalty provided the copyright
2956 notice and this notice are preserved.