re PR c++/34950 (ICE in svn boost math toolkit)
[gcc.git] / gcc / cp / ChangeLog
1 2008-02-19 Jason Merrill <jason@redhat.com>
2
3 PR c++/34950
4 * pt.c (resolve_overloaded_unification): Set processing_template_decl
5 while we look for possible bindings.
6
7 2008-02-19 Jakub Jelinek <jakub@redhat.com>
8
9 PR c++/35028
10 * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.
11
12 PR c++/34964
13 PR c++/35244
14 * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
15 vars. Afterwards ensure v is VAR_DECL.
16
17 PR c++/35078
18 * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't
19 call cp_finish_decl.
20 * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type
21 early.
22
23 2008-02-15 Douglas Gregor <doug.gregor@gmail.com>
24
25 PR c++/35023
26 PR c++/35024
27 PR c++/35026
28 * pt.c (finish_member_template_decl): If the type in a TYPE_DECL
29 is error_mark_node, return an error early.
30 (find_parameter_packs_r): Pass the pointer set along to recursive
31 calls of cp_walk_subtrees; don't try to manage the pointer set
32 ourselves.
33 (uses_parameter_packs): Pass the pointer set to cp_walk_tree.
34 (make_pack_expansion): Ditto.
35 (check_for_bare_parameter_packs): Ditto. Also, don't bother taking
36 a second pass through the tree with find_parameter_packs_r; that
37 second pass no longer does anything.
38 (push_template_decl_real): If we have an erroneous declaration,
39 set its type to error_mark_node before returning an error.
40
41 2008-02-14 Douglas Gregor <doug.gregor@gmail.com>
42
43 PR c++/34050
44 * pt.c (tsubst_initializer_list): Deal with the use of
45 VOID_TYPE_NODE to indicate value-initialization of the bases.
46
47 2008-02-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
48 Jason Merrill <jason@redhat.com>
49
50 PR c++/5645
51 PR c++/11159
52 * class.c (type_has_user_nondefault_constructor): New fn.
53 * cp-tree.h: Declare it.
54 * init.c (emit_mem_initializers): Use it for -W warning about
55 missing base initializer.
56
57 2008-02-14 Paolo Carlini <pcarlini@suse.de>
58
59 PR c++/28743
60 * pt.c (determine_specialization): In case of function templates,
61 when the type of DECL does not match FN there is no match.
62
63 2008-02-13 Jakub Jelinek <jakub@redhat.com>
64 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
65
66 PR c++/35138
67 * parser.c (cp_parser_pseudo_destructor_name): If next tokens
68 are not identifier :: ~, return before calling cp_parser_type_name.
69
70 2008-02-13 Jason Merrill <jason@redhat.com>
71
72 PR c++/34962, c++/34937, c++/34939
73 * decl2.c (is_late_template_attribute): Always defer attributes
74 vector_size and weak.
75
76 PR c++/34774
77 * pt.c (value_dependent_expression_p): Look into DECL_INITIAL
78 of enumerators, too.
79
80 2008-02-12 Jason Merrill <jason@redhat.com>
81
82 PR c++/34824
83 * call.c (convert_like_real): Pass LOOKUP_ONLYCONVERTING to build_temp
84 if we're doing conversions to call a user-defined conversion function.
85
86 2008-02-12 Steven Bosscher <steven@gcc.gnu.org>
87
88 PR c++/29048
89 * semantics.c (finish_qualified_id_expr): Avoid duplicate access
90 check here, too.
91
92 2008-02-12 Jakub Jelinek <jakub@redhat.com>
93
94 PR c++/34862
95 * init.c (build_new_1): Don't create placement_expr before
96 constructing alloc_call. Verify that the pointer is passed by
97 value to operator new.
98
99 2008-02-11 Jason Merrill <jason@redhat.com>
100
101 PR c++/35097
102 * pt.c (tsubst): Don't look up a template typedef in an explicit
103 specialization.
104
105 2008-02-11 Douglas Gregor <doug.gregor@gmail.com>
106
107 PR c++/35113
108 * tree.c (cp_build_qualified_type_real): When building a
109 cv-qualified array type, build it as a unique type with
110 build_cplus_array_type_1 and then adopt the unqualified type's
111 main variant.
112
113 2008-02-11 Paolo Carlini <pcarlini@suse.de>
114
115 PR c++/35077
116 * decl.c (groktypename): Check grokdeclarator return.
117
118 2008-02-10 Jason Merrill <jason@redhat.com>
119
120 PR c++/34094
121 * decl2.c (cp_write_global_declarations): Don't write out static
122 data members with DECL_IN_AGGR_P set.
123
124 2008-02-08 Jason Merrill <jason@redhat.com>
125
126 PR c++/35116
127 * tree.c (build_target_expr_with_type): Handle void initializer.
128 (bot_manip): Remap slot before recursing.
129
130 2008-02-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
131
132 PR other/35107
133 * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS).
134
135 2008-02-06 Alexandre Oliva <aoliva@redhat.com>
136
137 PR c++/35056
138 * tree.c: Include tree-flow.h.
139 (build_target_expr): Check type compatibility.
140 * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H).
141 * call.c (convert_like_real): Convert bitfield to expected type.
142
143 2008-02-06 Douglas Gregor <doug.gregor@gmail.com>
144
145 PR c++/35049
146 PR c++/35096
147 * typeck.c (structural_comptypes): Call cp_comptypes.
148 (comptypes): New; called from the C/C++ common bits to perform
149 strict checks.
150 (cp_comptypes): Renamed from comptypes, which is already used,
151 with a different signature, by the C++ front end.
152 (build_reinterpret_cast_1): Call cp_comptypes.
153 (ptr_reasonably_similar): Ditto.
154 * decl.c (decls_match): Ditto.
155 * cvt.c (convert_to_reference): Ditto.
156 * cp-tree.h (same_type_p): Ditto.
157 (same_or_base_type_p): Ditto.
158 (comptypes): Rename to cp_comptypes.
159 * pt.c (canonical_type_parameter): Call cp_comptypes.
160
161 2008-02-05 Jakub Jelinek <jakub@redhat.com>
162
163 PR c++/33553
164 * pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is
165 value dependent expression.
166
167 2008-02-05 Douglas Gregor <doug.gregor@gmail.com>
168
169 PR c++/35074
170 * decl2.c (save_template_attributes): When we're modifying the
171 TYPE_MAIN_VARIANT to add new attributes, be sure to also modify
172 all of the other variants to add those same attributes. Otherwise,
173 the main variant will be inconsistent with those other variants.
174
175 2008-02-04 Richard Guenther <rguenther@suse.de>
176
177 PR java/35035
178 * decl.c (record_builtin_java_type): Make jboolean a
179 integer type again where its mode doesn't match that of bool.
180
181 2008-02-02 Jason Merrill <jason@redhat.com>
182 Mark Mitchell <mark@codesourcery.com>
183
184 PR c++/33916
185 * init.c (build_value_init_1): New function.
186 (build_value_init): New function.
187 * typeck2.c (build_functional_cast): Call it.
188 * cp-gimplify.c (cp_gimplify_init_expr): Handle its output.
189
190 * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from
191 TYPE_HAS_CONSTRUCTOR.
192 * class.c (finish_struct_bits, maybe_warn_about_overly_private_class,
193 add_implicitly_declared_members): Adjust.
194 (check_field_decls): Adjust. Remove warnings about reference/const
195 in class without constructor.
196 (check_bases_and_members): Adjust. Give those warnings here instead.
197 * decl.c (fixup_anonymous_aggr): Adjust.
198 (check_initializer): Adjust, clarify logic slightly.
199 (grok_special_member_properties): Adjust, only set if user-provided.
200 * rtti.c (create_tinfo_types): Don't set.
201 * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al.
202 Use same_type_ignoring_top_level_qualifiers_p.
203 * pt.c (check_explicit_specialization): Adjust.
204 (instantiate_class_template): Adjust.
205
206 2008-01-31 Douglas Gregor <doug.gregor@gmail.com>
207 Jakub Jelinek <jakub@redhat.com>
208
209 PR c++/34935
210 PR c++/34936
211 * typeck.c (structural_comptypes): Handle comparisons of
212 VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and
213 REAL_TYPE nodes.
214 * mangle.c (write_builtin_type): Map down to the canonical type,
215 which will be one of the predefined type nodes.
216
217 2008-01-29 Michael Meissner <michael.meissner@amd.com>
218
219 PR 35004
220 * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16
221 bits to allow for expansion of the number of middle end tree
222 codes.
223
224 2008-01-29 Douglas Gregor <doug.gregor@gmail.com>
225
226 PR c++/34055
227 PR c++/34103
228 PR c++/34219
229 PR c++/34606
230 PR c++/34753
231 PR c++/34754
232 PR c++/34755
233 PR c++/34919
234 PR c++/34961
235 * typeck.c (check_return_expr): Tweak call to
236 check_for_bare_parameter_packs.
237 * class.c (add_method): Be careful with error_mark_nodes.
238 * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from
239 signature.
240 * pt.c (struct find_parameter_pack_data): Remove
241 SET_PACKS_TO_ERROR.
242 (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR.
243 (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR.
244 (make_pack_expansion): Ditto.
245 (check_for_bare_parameter_packs): Parameter is now a tree, not a
246 tree*.
247 (process_template_parm): Tweak call to
248 check_for_bare_parameter_packs.
249 (push_template_decl_real): Tweak calls to
250 check_for_bare_parameter_packs. If bare parameter packs are found
251 in the list of exceptions, clear out that list after giving an
252 error.
253 * semantics.c (finish_cond): Tweak call to
254 check_for_bare_parameter_packs.
255 (finish_expr_stmt): Ditto.
256 (finish_for_expr): Ditto.
257 (finish_switch_cond): Ditto.
258 (finish_mem_initializers): Ditto.
259 (finish_member_declaration): Ditto.
260 (finish_static_assert): Check for bare parameter packs in the
261 condition.
262 * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the
263 attributes of a declaration.
264 * parser.c (cp_parser_using_declaration): Tweak call to
265 check_for_bare_parameter_packs.
266 (cp_parser_base_clause): Ditto.
267
268 2008-01-28 Jason Merrill <jason@redhat.com>
269
270 PR c++/35007
271 * class.c (build_base_path): Fix !want_pointer case.
272
273 2008-01-27 Jason Merrill <jason@redhat.com>
274
275 PR c++/27177
276 * class.c (build_base_path): Fix previous change.
277
278 2008-01-26 Jakub Jelinek <jakub@redhat.com>
279
280 PR c++/34965
281 * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
282 and TRUTH_XOR_EXPR.
283
284 2008-01-26 Richard Guenther <rguenther@suse.de>
285
286 PR c++/34235
287 * typeck.c (build_binary_op): Remove code to shorten compares.
288
289 2008-01-25 Richard Guenther <rguenther@suse.de>
290
291 PR c++/33887
292 * decl.c (record_builtin_java_type): Make __java_boolean
293 a variant of bool.
294 * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
295 after TYPE_MAIN_VARIANT check.
296
297 2008-01-25 Jason Merrill <jason@redhat.com>
298
299 PR c++/27177
300 * class.c (build_base_path): Don't mess with virtual access if
301 skip_evaluation.
302 * call.c (standard_conversion): Don't check whether source type
303 is complete.
304
305 * decl2.c (is_late_template_attribute): Don't defer attribute
306 visibility just because the type is dependent.
307
308 2008-01-25 Jason Merrill <jason@redhat.com>
309 Mark Mitchell <mark@codesourcery.com>
310
311 PR c++/31780
312 * call.c (standard_conversion): Allow conversion from integer/real
313 to complex.
314 (compare_ics): Such a conversion is worse than a normal arithmetic
315 conversion.
316
317 2008-01-25 Richard Guenther <rguenther@suse.de>
318
319 PR c++/33887
320 * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define
321 to true.
322
323 2008-01-24 Paolo Carlini <pcarlini@suse.de>
324
325 PR c++/34603
326 * pt.c (push_template_decl_real): Return error_mark_node in case
327 of template definition of non-template.
328
329 2008-01-24 Jason Merrill <jason@redhat.com>
330
331 PR c++/34913
332 * decl2.c (is_late_template_attribute): Defer any attribute with
333 dependent args. Also defer type attributes if the type is dependent.
334
335 2008-01-22 Jakub Jelinek <jakub@redhat.com>
336 Alexandre Oliva <aoliva@redhat.com>
337
338 PR c++/33984
339 * call.c (reference_binding): For bitfields use the declared bitfield
340 type.
341 (add_builtin_candidates): Likewise.
342 * class.c (layout_class_type): For bitfields copy over the
343 original type quals.
344
345 2008-01-22 Jason Merrill <jason@redhat.com>
346
347 PR c++/28560
348 * decl.c (groktypename): Also ignore attributes on dependent
349 possibly-class types.
350
351 PR c++/34912
352 * friend.c (do_friend): Check for prior declaration of a friend
353 function of a local class.
354 * name-lookup.c (lookup_name_innermost_nonclass_level):
355 No longer static.
356 * name-lookup.h: Declare it.
357
358 2008-01-22 Tom Tromey <tromey@redhat.com>
359
360 PR c++/34829:
361 * init.c (build_new_1): Only disallow Java aggregates.
362
363 2008-01-22 Jakub Jelinek <jakub@redhat.com>
364
365 PR c++/34607
366 * semantics.c (finish_omp_for): Don't call c_finish_omp_for
367 if decl or init is error_mark_node.
368
369 PR c++/34918
370 * error.c (dump_expr): Handle VECTOR_CST.
371
372 2008-01-21 Jason Merrill <jason@redhat.com>
373
374 PR c++/33959
375 * pt.c (tsubst_aggr_type): Make sure our context is complete.
376
377 PR c++/34573
378 * pt.c (retrieve_local_specialization): Robustify.
379 (tsubst_pack_expansion, tsubst_decl): Remove redundant checks.
380
381 PR c++/34846
382 * pt.c (tsubst): Only call retrieve_local_specialization if the
383 original typedef was in a function template.
384
385 PR c++/34196
386 * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.
387
388 2008-01-21 Richard Guenther <rguenther@suse.de>
389
390 PR c++/34850
391 * error.c (cp_print_error_function): Deal with recursive
392 BLOCK trees.
393
394 2008-01-20 Paolo Carlini <pcarlini@suse.de>
395
396 PR c++/34891
397 * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.
398
399 2008-01-20 Paolo Carlini <pcarlini@suse.de>
400
401 PR c++/34776
402 PR c++/34486
403 * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
404 on non-IS_AGGR_TYPE scope.
405 (constructor_name_p): Assert IS_AGGR_TYPE.
406
407 2008-01-18 Ian Lance Taylor <iant@google.com>
408
409 PR c++/33407
410 * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
411 (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
412 DECL_IS_OPERATOR_NEW flag.
413
414 2008-01-16 Richard Guenther <rguenther@suse.de>
415
416 PR c++/33819
417 * typeck.c (is_bitfield_expr_with_lowered_type): Recurse
418 for conversions to type variants.
419
420 2008-01-15 Andreas Tobler <a.tobler@schweiz.org>
421
422 * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
423 declaration and code. Update copyright year.
424
425 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
426
427 PR c++/34399
428 * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
429 know we have a class type.
430
431 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
432
433 PR c++/34751
434 * pt.c (coerce_template_parameter_pack): When substituting into
435 the type of a non-type template parameter pack. use the
436 deduced/substituted arguments.
437 * parser.c (declarator_can_be_parameter_pack): A pointer-to-member
438 can be a parameter pack with the ellipsis following it. When we
439 have an erroneous declaration, allow it to be a parameter pack.
440 (cp_parser_template_parameter): Complain about default
441 arguments on non-type template parameter packs, and parse them
442 using the new cp_parser_default_argument.
443 (cp_parser_parameter_declaration): Complain about parameter packs
444 with default arguments. Move parsing of default arguments into a
445 new function, cp_parser_default_argument.
446 (cp_parser_default_argument): New; extracted from
447 cp_parser_parameter_declaration.
448
449 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
450
451 PR c++/34051
452 PR c++/34055
453 PR c++/34102
454 PR c++/34103
455 * typeck.c (check_return_expr): If there are bare parameter packs
456 in the return value, set it to error_mark_node.
457 * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
458 * pt.c (find_parameter_packs_r): Look at the type of
459 IDENTIFIER_NODEs (e.g., for user-defined conversions).
460 (check_for_bare_parameter_packs): Flip the result: now returns
461 TRUE when there were bare parameter packs, FALSE otherwise.
462 (push_template_decl_real): Deal with flipped result of
463 check_for_bare_parameter_packs.
464 * semantics.c (finish_cond): If there are bare parameter packs in
465 the conditional, set it to error_mark_node.
466 (finish_expr_stmt): If there are bare parameter packs in the
467 expression, set it to error_mark_node.
468 (finish_for_expr): Ditto.
469 (finish_switch_cond): If there are bare parameter packs in
470 the conditional, set it to error_mark_node.
471 (finish_mem_initializers): If there are bare parameter packs in
472 the member initializer, set it to error_mark_node.
473 (finish_member_declaration): Check the attributes of the
474 declaration for bare parameter packs, and remove the attributes if
475 any have bare parameter packs.
476 * parser.c (cp_parser_using_declaration): Check the using
477 declaration for bare parameter packs.
478 (cp_parser_base_clause): If there are bare parameter packs in a
479 base specifier, don't add it to the chain.
480
481 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
482
483 PR c++/34314
484 * error.c (dump_simple_decl): Display ellipsis for template
485 non-type parameter packs.
486 (dump_decl): Display ellipsis for template type parameter packs.
487 (dump_template_decl): Display ellipsis for template template
488 parameter packs.
489 * pt.c (redeclare_class_template): When redeclaring a class
490 template, check for collisions between template parameters and
491 template parameter packs.
492
493 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
494
495 PR c++/33964
496 * pt.c (process_partial_specialization): Don't mark template
497 parameters that occur in non-deduced contexts.
498 (struct pair_fn_data): Add include_nondeduced_p.
499 (for_each_template_parm_r): Only visit non-deduced contexts if
500 include_nondeduced_p is set.
501 (for_each_template_parm): Added parameter include_nondeduced_p,
502 which states whether template parameters found in non-deduced
503 contexts should be visited.
504 (uses_template_parms): Visit all template parameters, even those
505 in non-deduced contexts.
506
507 2008-01-15 Douglas Gregor <doug.gregor@gmail.com>
508
509 PR c++/34052
510 * pt.c (check_default_tmpl_args): Check for parameter packs that
511 aren't at the end of a primary template.
512 (push_template_decl_real): Remove check for parameter packs that
513 aren't at the end of a primary template; that now happens in
514 check_default_tmpl_args.
515 * semantics.c (finish_template_template_parm): Use
516 check_default_tmpl_args to check for errors in the template
517 parameter list.
518
519 2008-01-12 Doug Kwan <dougkwan@google.com>
520
521 * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
522 instead of OPT_Wreturn_type in warning due to ignored return type
523 qualifiers.
524 * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
525 instead of OPT_Wreturn_type in warning due to ignored return type
526 qualifiers.
527
528 2008-01-08 Jakub Jelinek <jakub@redhat.com>
529
530 PR c++/33890
531 * semantics.c (finish_omp_for): Don't call
532 fold_build_cleanup_point_expr if processing_template_decl.
533
534 2008-01-04 Paolo Carlini <pcarlini@suse.de>
535 Jakub Jelinek <jakub@redhat.com>
536
537 PR c++/34611
538 * error.c (dump_template_argument): Deal with TREE_LIST.
539
540 2008-01-01 Douglas Gregor <doug.gregor@gmail.com>
541
542 * parser.c (cp_parser_check_decl_spec): Don't warn about "long
543 long" in C++0x mode; change the warning to note that "long long"
544 is only unsupported in C++98 mode.
545
546 2007-12-20 Jason Merrill <jason@redhat.com>
547
548 PR c++/34111
549 * call.c (standard_conversion): Derived-to-base is considered a
550 standard conversion.
551
552 2007-12-19 Jakub Jelinek <jakub@redhat.com>
553
554 PR c++/34513
555 * parser.c (cp_parser_omp_parallel): For non-combined parallel
556 call cp_parser_statement rather than
557 cp_parser_already_scoped_statement.
558
559 2007-12-18 Jason Merrill <jason@redhat.com>
560
561 PR c++/34206
562 * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't
563 use template parms.
564 (dependent_type_p_r): Handle the domain of an array.
565
566 2007-12-18 Douglas Gregor <doug.gregor@gmail.com>
567 Jakub Jelinek <jakub@redhat.com>
568
569 PR c++/32565
570 PR c++/33943
571 PR c++/33965
572 * pt.c (template_template_parm_bindings_ok_p): New; verifies
573 bindings of template template parameters after all template
574 arguments have been deduced.
575 (coerce_template_parms): Don't complain when COMPLAIN doesn't
576 include tf_error.
577 (fn_type_unification): Use template_template_parm_bindings_ok_p.
578 (unify): Deal with variadic, bound template template parameters.
579 (get_class_bindings): Use template_template_parm_bindings_ok_p.
580
581 2007-12-18 Jakub Jelinek <jakub@redhat.com>
582
583 PR c++/34488
584 * decl.c (grokdeclarator): Reject friend sfk_constructor
585 FUNCTION_TYPE.
586
587 2007-12-17 Jakub Jelinek <jakub@redhat.com>
588
589 PR c/34506
590 * parser.c (cp_parser_omp_all_clauses): Accept optional comma
591 in between clauses.
592
593 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
594
595 PR debug/7081
596 * cp-lang.c (cp_classify_record): New.
597 (LANG_HOOKS_CLASSIFY_RECORD): Override.
598
599 2007-12-11 Jakub Jelinek <jakub@redhat.com>
600
601 PR c++/34238
602 * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change.
603
604 PR c++/34364
605 * rtti.c (build_dynamic_cast): Call convert_from_reference even for
606 dynamic_cast in a template.
607
608 2007-12-10 Simon Martin <simartin@users.sourceforge.net>
609
610 PR c++/34059
611 * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from
612 MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.
613
614 2007-12-10 Jakub Jelinek <jakub@redhat.com>
615
616 PR c++/34395
617 * error.c (dump_type_prefix, dump_type_suffix): Handle
618 TYPE_PACK_EXPANSION.
619
620 PR c++/34394
621 * error.c (dump_expr): Handle ABS_EXPR.
622
623 2007-12-09 Jakub Jelinek <jakub@redhat.com>
624
625 PR c++/34178
626 PR c++/34340
627 * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P
628 in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
629 Return 2 also if DECL_EXPLICIT_INSTANTIATION.
630 * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when
631 flag_use_repository and repo_emit_p returned 2.
632
633 2007-12-06 Jakub Jelinek <jakub@redhat.com>
634
635 PR c++/34336
636 * tree.c (stabilize_call, stabilize_init): Do nothing if
637 processing_template_decl.
638
639 2007-12-05 Jakub Jelinek <jakub@redhat.com>
640
641 PR c++/34271
642 * semantics.c (finish_decltype_type): For SCOPE_REF issue an
643 error instead of assertion failure.
644 * parser.c (cp_parser_decltype): If closing paren is not found,
645 return error_mark_node.
646
647 2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
648
649 PR c++/34101
650 * name-lookup.c (arg_assoc_template_arg): Recurse on argument
651 packs.
652 (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,
653 since arg_assoc_template_arg will deal with them (better).
654
655 2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
656
657 PR c++/33509
658 * pt.c (tsubst_exception_specification): Handle substitutions into
659 member templates, where tsubst_pack_expansion returns a
660 TYPE_PACK_EXPANSION.
661
662 2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
663
664 PR c++/33091
665 * pt.c (unify_pack_expansion): If we didn't deduce any actual
666 bindings for the template parameter pack, don't try to keep the
667 empty deduced arguments.
668 (unify): If a parameter is a template-id whose template argument
669 list contains a pack expansion that is not at the end, then we
670 cannot unify against that template-id.
671
672 2007-12-02 Paolo Carlini <pcarlini@suse.de>
673
674 PR c++/34061
675 * pt.c (current_template_args): Use error_operand_p.
676
677 2007-12-02 Paolo Carlini <pcarlini@suse.de>
678
679 PR c++/34273
680 * error.c (dump_decl): Handle TREE_BINFO.
681
682 2007-12-01 Ollie Wild <aaw@google.com>
683
684 PR c++/8171
685 * typeck.c (build_binary_op): Add conversion of pointers to function
686 members appearing as operands to the equality operators.
687
688 2007-11-30 Jakub Jelinek <jakub@redhat.com>
689
690 PR c++/34275
691 * error.c (dump_expr): Handle OBJ_TYPE_REF.
692
693 2007-11-29 Jakub Jelinek <jakub@redhat.com>
694
695 PR c++/34270
696 * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y
697 in templates.
698 * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>:
699 Likewise.
700
701 PR c++/34267
702 PR c++/34268
703 * parser.c (cp_parser_decltype): Don't call finish_id_expression
704 on ~type.
705 * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs
706 and ~type early.
707
708 2007-11-27 Jakub Jelinek <jakub@redhat.com>
709
710 PR tree-optimization/34181
711 * method.c (use_thunk): Don't inline the call in the thunk.
712
713 PR c++/34213
714 * tree.c (decl_linkage): Static data members and static member
715 functions in anonymous ns classes are lk_external.
716
717 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com>
718
719 PR c++/34081
720 * decl.c (start_preparsed_function): Pass
721 processing_template_decl for the new allocate_struct_function
722 parameter.
723
724 2007-11-25 Richard Guenther <rguenther@suse.de>
725
726 * decl.c (poplevel): Use BLOCK_CHAIN.
727
728 2007-11-24 Ollie Wild <aaw@google.com>
729
730 * typeck.c (delta_from_ptrmemfunc): New function.
731 (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc.
732 (build_binary_op): Call delta_from_ptrmemfunc.
733
734 2007-11-23 Jakub Jelinek <jakub@redhat.com>
735
736 PR c++/30293
737 PR c++/30294
738 * decl.c (cp_finish_decl): Disallow variable or field
739 definitions if extern "Java" aggregates.
740 (grokparms): Disallow parameters with extern "Java"
741 aggregates.
742 (check_function_type): Disallow function return values
743 with extern "Java" aggregates.
744 * init.c (build_new_1): Disallow placement new with
745 extern "Java" aggregates.
746
747 2007-11-23 Mark Mitchell <mark@codesourcery.com>
748 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
749
750 PR c++/5310
751 * call.c (convert_like_real): Build a zero constant when __null is
752 converted to an integer type.
753
754 2007-11-22 Jakub Jelinek <jakub@redhat.com>
755
756 PR c++/34094
757 * decl2.c (cp_write_global_declarations): Issue error about static
758 data members in anonymous namespace which are declared and used,
759 but not defined.
760
761 2007-11-20 Jakub Jelinek <jakub@redhat.com>
762
763 PR c++/34089
764 * parser.c (cp_parser_class_head): Reject function template ids.
765
766 PR c++/28879
767 * tree.c (build_cplus_array_type_1): Don't pass any VLA types
768 when processing_template_decl to build_array_type.
769
770 PR c++/33962
771 * pt.c (more_specialized_fn): Don't segfault if one or
772 both argument list end with ellipsis.
773
774 2007-11-18 Jakub Jelinek <jakub@redhat.com>
775
776 PR c++/30988
777 * semantics.c (finish_call_expr): Set
778 current_function_returns_abnormally if fn is noreturn FUNCTION_DECL
779 or OVERLOAD with all noreturn functions.
780
781 2007-11-16 Jakub Jelinek <jakub@redhat.com>
782
783 PR c++/34100
784 * pt.c (apply_late_template_attributes): Do nothing if decl's type is
785 error_mark_node.
786
787 2007-11-13 Jakub Jelinek <jakub@redhat.com>
788
789 PR c++/34054
790 PR c++/34056
791 PR c++/34057
792 PR c++/34058
793 PR c++/34060
794 * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error,
795 set to error_mark_node the outermost POINTER_TYPE to the pack if
796 it is seen in a POINTER_TYPE.
797 (push_template_decl_real): If check_for_bare_parameter_packs
798 fails for function return type, set the return type to
799 integer_type_node. If check_for_bare_parameter_packs failed
800 for non-function, return error_mark_node.
801
802 PR c++/29225
803 * call.c (build_new_op): Call resolve_args before calling
804 build_over_call.
805
806 2007-11-11 Tom Tromey <tromey@redhat.com>
807
808 PR c++/17577:
809 * lex.c (handle_pragma_implementation): Use cpp_included_before.
810
811 2007-11-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
812
813 PR c++/8570
814 * pt.c (redeclare_class_template): Update error message. Use a
815 note to show the previous declaration.
816 (tsubst_friend_class): Use the location of the friend template as
817 the input location before calling redeclare_class_template.
818
819 2007-11-11 Jakub Jelinek <jakub@redhat.com>
820
821 PR c++/34068
822 * semantics.c (finish_pseudo_destructor_expr): Handle
823 object == error_mark_node.
824
825 2007-11-10 Jakub Jelinek <jakub@redhat.com>
826
827 PR c++/32241
828 * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type
829 is not scalar type, let finish_class_member_access_expr handle
830 diagnostics. Pass BIT_NOT_EXPR argument to
831 finish_pseudo_destructor_expr. Handle SCOPE_REF properly.
832
833 2007-11-09 Douglas Gregor <doug.gregor@gmail.com>
834
835 PR c++/33510
836 * decl.c (cp_complete_array_type): If any of the initializer
837 elements are pack expansions, don't compute the array size yet.
838
839 2007-11-08 Andrew Pinski <pinskia@gmail.com>
840
841 PR c++/30297:
842 * tree.c (decl_linkage): Fields have no linkage.
843
844 2007-11-08 Daniel Jacobowitz <dan@codesourcery.com>
845
846 * class.c (build_ctor_vtbl_group): Lay out the new type and decl.
847
848 2007-11-07 Douglas Gregor <doug.gregor@gmail.com>
849
850 PR c++/33045
851 PR c++/33837
852 PR c++/33838
853 * semantics.c (finish_decltype_type): See through INDIRECT_REFs.
854 Be careful with ERROR_MARK_NODEs.
855 * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL
856 argument.
857
858 2007-11-07 Jakub Jelinek <jakub@redhat.com>
859
860 PR c++/33501
861 * call.c (build_over_call): Don't check TREE_ADDRESSABLE
862 on incomplete type.
863
864 2007-11-06 Douglas Gregor <doug.gregor@gmail.com>
865
866 PR c++/33977
867 PR c++/33886
868 * tree.c (c_build_qualified_type): Define bridge to
869 cp_build_qualified_type.
870
871 2007-11-06 Douglas Gregor <doug.gregor@gmail.com>
872
873 PR c++/31439
874 PR c++/32114
875 PR c++/32115
876 PR c++/32125
877 PR c++/32126
878 PR c++/32127
879 PR c++/32128
880 PR c++/32253
881 PR c++/32566
882 * typeck.c (check_return_expr): Pass address of retval to
883 check_for_bare_parameter_packs.
884 * class.c (build_base_field): Tolerate bases that have no layout
885 due to errors.
886 (end_of_base): Ditto.
887 * tree.c (canonical_type_variant): Be careful with
888 ERROR_MARK_NODE.
889 * cp-tree.h (check_for_bare_parameter_packs): Now accepts a
890 tree*.
891 * pt.c (find_parameter_pack_data): Add set_packs_to_error field,
892 which states whether parameter packs should be replaced with
893 ERROR_MARK_NODE.
894 (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever
895 possible. If set_packs_to_error is set true, replace the parameter
896 pack with ERROR_MARK_NODE. Manage our own pointer sets.
897 (uses_parameter_packs): Don't set parameter packs to
898 ERROR_MARK_NODE.
899 (check_for_bare_parameter_packs): Now takes a pointer to a tree,
900 which may be modified (if it is a parameter pack). Instructs
901 find_parameter_packs_r to replace parameter packs with
902 ERROR_MARK_NODE (so that they won't cause errors later on).
903 (process_template_parm): Pass pointer to
904 check_for_bare_parameter_packs.
905 (process_partial_specialization): Replace pack expansions before
906 the end of the template argument list with ERROR_MARK_NODE.
907 (push_template_decl_real): Pass pointer to
908 check_for_bare_parameter_packs. Replace parameter packs not at the
909 end of the template parameter list with ERROR_MARK_NODE.
910 (convert_template_argument): Be more careful about using DECL_NAME
911 on only declarations.
912 (unify): Can't unify against ERROR_MARK_NODE.
913 * semantics.c (finish_cond): Pass pointer to
914 check_for_bare_parameter_packs.
915 (finish_expr_stmt): Ditto.
916 (finish_for_expr): Ditto.
917 (finish_switch_cond): Pass pointer to
918 check_for_bare_parameter_packs, and call it before we put the
919 condition into the statement.
920 (finish_mem_initializers): Pass pointer to
921 check_for_bare_parameter_packs.
922 (finish_member_declaration): Ditto.
923 * parser.c (cp_parser_base_clause): Ditto.
924
925 2007-11-06 Jakub Jelinek <jakub@redhat.com>
926
927 PR target/33168
928 * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already
929 with the final TREE_READONLY flag in place. processing_template_decl
930 is known to be 0 in this part of function.
931
932 PR c++/33894
933 * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not
934 OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.
935 * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.
936 * semantics.c (finish_omp_atomic): Revert most of the
937 2007-02-05 changes, just keep the new representation of
938 OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.
939
940 2007-11-05 H.J. Lu <hongjiu.lu@intel.com>
941
942 PR c++/33871
943 * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked
944 local.
945
946 2007-11-05 Douglas Gregor <doug.gregor@gmail.com>
947
948 PR c++/33996
949 PR c++/33235
950 PR c++/33930
951 * typeck.c (merge_types): Don't lose rvalue references when
952 merging types.
953 * call.c (build_over_call): Don't elide move constructors just
954 because the copy constructor is trivial (!).
955 (compare_ics): If comparing cv-qualifiers fails, we can still order
956 based on binding lvalues vs. rvalues.
957
958 2007-11-05 Douglas Gregor <doug.gregor@gmail.com>
959
960 PR c++/33939
961 * pt.c (unify_pack_expansion): bring handling of function call
962 arguments into line with type_unification_real.
963
964 2007-11-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
965
966 * typeck.c (build_binary_op): Use pedwarn instead of error for
967 consistency.
968
969 2007-11-05 Jakub Jelinek <jakub@redhat.com>
970
971 PR c++/33836
972 * parser.c (cp_parser_unary_expression): For &&label call
973 cp_parser_non_integral_constant_expression and return error_mark_node
974 if it returned true.
975
976 PR c++/33969
977 * decl.c (grokdeclarator): Don't call build_memfn_type if type
978 is neither FUNCTION_TYPE nor METHOD_TYPE.
979
980 2007-11-02 Jakub Jelinek <jakub@redhat.com>
981
982 PR c++/33516
983 * parser.c (cp_parser_nested_name_specifier_opt): Use
984 TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
985 typedef of currently open class.
986
987 2007-11-02 Paolo Carlini <pcarlini@suse.de>
988
989 PR c++/33495
990 * error.c (dump_expr): Deal specially with statements.
991
992 2007-11-01 Jason Merrill <jason@redhat.com>
993
994 PR c++/30897
995 * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
996 template parms.
997 (lookup_template_class): Use it to get the outer template args
998 for instantiating one.
999
1000 PR c++/29236
1001 * pt.c (reduce_template_parm_level): tsubst the parameters
1002 of a template template parm.
1003
1004 2007-11-01 Douglas Gregor <doug.gregor@gmail.com>
1005
1006 PR c++/33955
1007 * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
1008
1009 2007-11-01 Jakub Jelinek <jakub@redhat.com>
1010
1011 PR c++/32384
1012 * parser.c (cp_parser_postfix_dot_deref_expression): If
1013 POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
1014 first and if that succeeds and type is SCALAR_TYPE_P, create
1015 PSEUDO_DTOR_EXPR.
1016
1017 PR c++/32260
1018 * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
1019 (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
1020 as for std::type_info.
1021
1022 2007-10-31 Paolo Carlini <pcarlini@suse.de>
1023
1024 PR c++/33494
1025 * cxx-pretty-print.c (pp_cxx_typeid_expression,
1026 pp_cxx_delete_expression): Change to static linkage.
1027 * cxx-pretty-print.h: Adjust declarations.
1028 * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
1029 MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
1030 MODOP_EXPR): Forward to pp_expression.
1031
1032 * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
1033 Fix typo.
1034
1035 2007-10-31 Christian Bruel <christian.bruel@st.com>
1036 Mark Mitchell <mark@codesourcery.com>
1037
1038 PR c++/19531
1039 * typeck.c (check_return_expr): Don't set named_return_value_okay_p
1040 if retval is volatile.
1041
1042 2007-10-30 Jakub Jelinek <jakub@redhat.com>
1043
1044 PR c++/33616
1045 * decl2.c (build_offset_ref_call_from_tree): Call
1046 build_non_dependent_expr on object prior to building ADDR_EXPR from it
1047 if FN is DOTSTAR_EXPR.
1048
1049 2007-10-30 Douglas Gregor <doug.gregor@gmail.com>
1050
1051 PR c++/31993
1052 PR c++/32252
1053 * pt.c (find_parameter_packs_r): Fix typo in comment.
1054 (convert_template_argument): Look at the pattern of a pack
1055 expansion to determine what kind of entity we're converting.
1056 (coerce_template_parameter_pack): When we have coerced a non-type
1057 template parameter pack, substitute into the type of that pack.
1058 (tsubst_pack_expansion): When our substitution of a parameter pack
1059 is a "trivial" substitution of itself, just substitute into the
1060 pack expansion rather than actually expanding.
1061
1062 2007-10-29 Jakub Jelinek <jakub@redhat.com>
1063
1064 PR c++/33841
1065 * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
1066 for non-integral type bitfields. Return true if bitfield is correct, false
1067 error has been diagnosed.
1068 (check_field_decls): If check_bitfield_decl returned false, call also
1069 check_field_decl.
1070
1071 2007-10-28 Paolo Carlini <pcarlini@suse.de>
1072 Mark Mitchell <mark@codesourcery.com>
1073
1074 PR c++/30659
1075 * pt.c (do_decl_instantiation): If the VAR_DECL is not a
1076 class member error out and return.
1077
1078 2007-10-27 Jakub Jelinek <jakub@redhat.com>
1079
1080 * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
1081 to current_function_decl rather than 0.
1082
1083 PR c++/33844
1084 * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
1085 ->* rather than .*.
1086 * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
1087
1088 2007-10-27 Jason Merrill <jason@redhat.com>
1089
1090 PR c++/5247
1091 * call.c (convert_default_arg): Detect recursion.
1092
1093 2007-10-27 Jakub Jelinek <jakub@redhat.com>
1094
1095 PR c++/33842
1096 * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
1097 * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
1098 OFFSETOF_EXPR.
1099 (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
1100 functions.
1101 * error.c (dump_expr): Handle OFFSETOF_EXPR.
1102
1103 2007-10-26 Jason Merrill <jason@redhat.com>
1104
1105 PR c++/24791
1106 * pt.c (get_template_info): New fn.
1107 (template_class_depth): Use it.
1108 (push_template_decl_real): Check that the template args of the
1109 definition match the args of the previous declaration.
1110
1111 2007-10-26 Paolo Carlini <pcarlini@suse.de>
1112
1113 PR c++/31988
1114 * decl2.c (coerce_new_type): Do not allow a default argument for
1115 the first parameter.
1116
1117 2007-10-26 Douglas Gregor <doug.gregor@gmail.com>
1118
1119 PR c++/33839
1120 * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we
1121 don't see the leading '('. Only lookup names if we get an
1122 IDENTIFIER_NODE.
1123
1124 2007-10-26 Jakub Jelinek <jakub@redhat.com>
1125
1126 PR c++/33744
1127 * parser.c (cp_parser_parenthesized_expression_list): Set
1128 greater_than_is_operator_p to true in between the parens.
1129
1130 2007-10-26 Paolo Carlini <pcarlini@suse.de>
1131
1132 PR c++/31747
1133 * decl.c (grokdeclarator): In case of conflicting specifiers
1134 just return error_mark_node.
1135
1136 2007-10-26 Ollie Wild <aaw@google.com>
1137
1138 * expr.c (cxx_expand_expr): Removed.
1139 * cp-tree.h (exx_expand_expr): Removed.
1140 * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr
1141 with c_expand_expr.
1142
1143 2007-10-25 Paolo Carlini <pcarlini@suse.de>
1144
1145 PR c++/33843
1146 * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.
1147
1148 2007-10-23 Jason Merrill <jason@redhat.com>
1149
1150 PR c++/25950 (DR 391)
1151 * call.c (struct conversion): Remove check_copy_constructor_p.
1152 (reference_binding): Always bind a reference directly to a
1153 compatible class rvalue. Pass down LOOKUP_NO_TEMP_BIND during
1154 temporary creation.
1155 (check_constructor_callable): Remove.
1156 (convert_like_real): Don't call it.
1157 (initialize_reference): Don't call check_constructor_callable.
1158 (standard_conversion): Check LOOKUP_NO_CONVERSION instead of
1159 LOOKUP_CONSTRUCTOR_CALLABLE. Don't require a temporary for base
1160 conversions if LOOKUP_NO_TEMP_BIND.
1161 (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
1162 (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
1163 second conversion.
1164 * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
1165
1166 2007-10-22 Jakub Jelinek <jakub@redhat.com>
1167
1168 PR c++/33372
1169 * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p
1170 before checking if its type is integral.
1171
1172 2007-10-22 Jason Merrill <jason@redhat.com>
1173
1174 PR c++/33620
1175 * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.
1176 * pt.c (apply_late_template_attributes): Splice out dependent
1177 attributes from DECL_ATTRIBUTES.
1178
1179 * decl.c (cxx_maybe_build_cleanup): Use build_address.
1180
1181 2007-10-17 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1182
1183 * typeck.c (build_binary_op) : Use appropriate warning option
1184 instead of unnamed warning.
1185
1186 2007-10-16 Paolo Carlini <pcarlini@suse.de>
1187
1188 PR c++/31446
1189 * pt.c (current_template_args): Do not change TREE_LIST elements
1190 with a TREE_VALUE of error_mark_node.
1191
1192 2007-10-16 Mark Mitchell <mark@codesourcery.com>
1193
1194 * typeck.c (cp_apply_type_quals_to_decl): Expand documentation.
1195 * decl.c (start_decl): Tidy.
1196 (start_decl_1): Call cp_apply_type_quals_to_decl after completing
1197 the type.
1198 (grokdeclarator): Clarify comment.
1199
1200 2007-10-14 Andrew Pinski <pinskia@gmail.com>
1201
1202 PR c++/30303
1203 * decl.c (grokfndecl): Return NULL after the "definition of
1204 implicitly-declared" error happened.
1205
1206 2007-10-12 Simon Martin <simartin@users.sourceforge.net>
1207
1208 PR c++/26698
1209 * call.c (build_user_type_conversion_1): Do not consider conversion
1210 functions to convert a (possibly cv-qualified) object to the (possibly
1211 cv-qualified) same object type (or a reference to it), to a (possibly
1212 cv-qualified) base class of that type (or a reference to it).
1213
1214 2007-10-12 Paolo Carlini <pcarlini@suse.de>
1215
1216 * pt.c (tsubst): Use template_parm_level_and_index.
1217
1218 2007-10-12 Jakub Jelinek <jakub@redhat.com>
1219
1220 PR c++/32121
1221 * parser.c (cp_parser_compound_statement): Handle label-declarations
1222 at the beginning of the compound statement.
1223 (cp_parser_block_declaration): Issue diagnostics about __label__
1224 not at the beginning of a block.
1225
1226 2007-10-11 Paolo Carlini <pcarlini@suse.de>
1227
1228 PR c++/33461
1229 * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node
1230 to convert_template_argument.
1231 (coerce_template_parms): Return error_mark_node after fixed-length
1232 error.
1233 (tsubst_decl): Check for error_mark_node the return value of the
1234 first tsubst in 'case VAR_DECL'.
1235
1236 2007-10-08 Ollie Wild <aaw@google.com>
1237
1238 * typeck2.c (digest_init): Call cplus_expand_constant after
1239 convert_for_initialization.
1240 * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1241 * expr.c (cplus_expand_constant): Updated function description.
1242
1243 2007-10-04 Jason Merrill <jason@redhat.com>
1244
1245 PR c++/20416
1246 * call.c (initialize_reference): Handle local static reference
1247 temps properly.
1248
1249 2007-10-03 Jason Merrill <jason@redhat.com>
1250
1251 PR c++/32470
1252 * name-lookup.c (push_namespace_with_attrs): Fold back into...
1253 (push_namespace): Here.
1254 (handle_namespace_attrs): New fn for the attr code.
1255 (leave_scope): Don't pop_visibility.
1256 * name-lookup.h (struct cp_binding_level): Remove has_visibility.
1257 * parser.c (cp_parser_namespace_definition): Call
1258 handle_namespace_attrs and pop_visibility as appropriate.
1259
1260 PR c++/11756
1261 * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.
1262
1263 2007-10-03 Alexandre Oliva <aoliva@redhat.com>
1264
1265 * decl.c (duplicate_decls): Preserve linkage flags for mere
1266 redeclarations of gnu_inline definitions.
1267
1268 2007-10-03 Jason Merrill <jason@redhat.com>
1269
1270 PR c++/15764
1271 * decl.c (wrap_cleanups_r): New fn.
1272 (wrap_temporary_cleanups): New fn.
1273 (initialize_local_var): Call it.
1274
1275 2007-09-29 Jason Merrill <jason@redhat.com>
1276
1277 PR c++/33094
1278 * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member
1279 constant to not have DECL_EXTERNAL if it's file-local.
1280
1281 2007-09-28 Ollie Wild <aaw@google.com>
1282
1283 Revert
1284 2007-09-27 Ollie Wild <aaw@google.com>
1285
1286 * typeck2.c (digest_init): Call cplus_expand_constant after
1287 convert_for_initialization.
1288 * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1289 * expr.c (cplus_expand_constant): Updated function description.
1290
1291 2007-09-28 Jason Merrill <jason@redhat.com>
1292
1293 PR c++/10179
1294 * class.c (layout_empty_base): Take rli parameter, update
1295 rli->record_align if empty base has user-specified alignment.
1296 (build_base_field): Pass rli to it.
1297
1298 2007-09-28 Paolo Carlini <pcarlini@suse.de>
1299
1300 PR c++/33213
1301 * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.
1302
1303 2007-09-28 Paolo Carlini <pcarlini@suse.de>
1304
1305 PR c++/33118
1306 * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
1307 (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
1308 (dump_parameters): Just call dump_type for argument packs too.
1309
1310 2007-09-28 Jakub Jelinek <jakub@redhat.com>
1311
1312 PR c++/31434
1313 * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION
1314 qualification by creating qualified PACK_EXPANSION_PATTERN and
1315 then calling make_pack_expansion on it.
1316
1317 2007-09-27 Ollie Wild <aaw@google.com>
1318
1319 * typeck2.c (digest_init): Call cplus_expand_constant after
1320 convert_for_initialization.
1321 * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1322 * expr.c (cplus_expand_constant): Updated function description.
1323
1324 2007-09-27 Jason Merrill <jason@redhat.com>
1325
1326 PR c++/33571
1327 * decl2.c (is_late_template_attribute): Don't crash on unknown
1328 attribute.
1329
1330 2007-09-27 Paolo Carlini <pcarlini@suse.de>
1331
1332 PR c++/33493
1333 * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.
1334 * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing
1335 spaces in the formatting.
1336 * cxx-pretty-print.h (pp_cxx_delete_expression): Declare.
1337
1338 2007-09-27 Jakub Jelinek <jakub@redhat.com>
1339
1340 * error.c (cxx_print_error_function): Add third argument, pass
1341 it over to lhd_print_error_function.
1342 (cp_print_error_function): If diagnostic->abstract_origin, print
1343 virtual backtrace.
1344 * cp-tree.h (struct diagnostic_info): New forward decl.
1345 (cxx_print_error_function): Add third argument.
1346
1347 2007-09-25 Simon Martin <simartin@users.sourceforge.net>
1348
1349 PR c++/33207
1350 * name-lookup.c (pushtag): Do not create an implicit typedef before
1351 the associated type declaration is known to be valid.
1352
1353 2007-09-25 Jakub Jelinek <jakub@redhat.com>
1354
1355 * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
1356 rather than pointers.
1357
1358 2007-09-24 Danny Smith <dannysmith@user.sourceforge.net>
1359
1360 PR c++/14688
1361 * search.c (check_final_overrider): Fail if
1362 targetm.comp_type_attributes returns 0.
1363
1364 2007-09-24 Jason Merrill <jason@redhat.com>
1365
1366 PR c++/33239
1367 * pt.c (resolve_typename_type): Don't look things up in the original
1368 template if it would mean losing template arguments.
1369
1370 2007-09-24 Jakub Jelinek <jakub@redhat.com>
1371
1372 PR c++/33506
1373 * cp-tree.h (cxx_type_hash_eq): New prototype.
1374 * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
1375 * tree.c (cxx_type_hash_eq): New function.
1376
1377 2007-09-24 Douglas Gregor <doug.gregor@gmail.com>
1378
1379 PR c++/33185
1380 * tree.c (cp_build_qualified_type_real): Build a canonical
1381 ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.
1382
1383 2007-09-24 Douglas Gregor <doug.gregor@gmail.com>
1384
1385 PR c++/33112
1386 PR c++/33185
1387 * tree.c (cplus_array_compare): Compare pointers, not types.
1388 (build_cplus_array_type_1): Store new array type into the hash
1389 table before building the canonical type; build the canonical type
1390 correctly.
1391 (cp_build_qualified_type_real): Put all of the array types with
1392 cv-qualified element types into the C++ array hash table, built as
1393 variants of the unqualified versions.
1394
1395 2007-09-23 Jason Merrill <jason@redhat.com>
1396
1397 PR c++/16370
1398 * decl.c (grokdeclarator): Look through implicit TYPE_DECLs
1399 for deprecation warnings.
1400
1401 2007-09-22 Jason Merrill <jason@redhat.com>
1402
1403 PR c++/15269
1404 * call.c (build_over_call): Warn about deprecated virtuals.
1405
1406 PR c++/19407
1407 * cp-tree.h (ATTR_IS_DEPENDENT): New macro.
1408 (MAYBE_TAGGED_TYPE_P): Remove.
1409 * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT
1410 instead of calling is_late_template_attribute again.
1411 (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.
1412 (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.
1413 Don't crash on typedefs from non-template classes.
1414 * decl2.c (grokfield): Don't sorry about attrs on template parms.
1415 (is_late_template_attribute): All attributes applied to template
1416 parms or typename types are dependent. Static.
1417 (splice_template_attributes): Pass decl through.
1418 (save_template_attributes): Likewise.
1419
1420 2007-09-20 Jakub Jelinek <jakub@redhat.com>
1421
1422 PR c++/33496
1423 * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node
1424 returned from tsubst_pack_expansion.
1425 (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise.
1426 (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise.
1427
1428 2007-09-20 Paolo Carlini <pcarlini@suse.de>
1429
1430 PR c++/33460
1431 * semantics.c (finish_id_expression): Use consistently
1432 context_for_name_lookup.
1433 * decl.c (fixup_anonymous_aggr): Fix error message for
1434 anonymous struct (vs union).
1435
1436 2007-09-19 Jason Merrill <jason@redhat.com>
1437
1438 PR c++/7586
1439 * pt.c (tsubst): Handle typedefs by looking for the specialization.
1440 (retrieve_specialization): Only tagged types use
1441 DECL_TEMPLATE_INSTANTIATIONS.
1442 (instantiate_class_template): Push nested classes too.
1443 (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for
1444 tagged types.
1445 * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.
1446 * init.c (is_aggr_type): Remove redundant tests.
1447 * class.c (push_nested_class): Use CLASS_TYPE_P.
1448
1449 2007-09-20 Paolo Carlini <pcarlini@suse.de>
1450
1451 PR c++/33459
1452 * init.c (build_zero_init): If, recursively, build_zero_init
1453 returns a NULL_TREE, do not append it to the VEC of constructors.
1454
1455 2007-09-18 Jason Merrill <jason@redhat.com>
1456
1457 PR c++/17743
1458 * pt.c (apply_late_template_attributes): Set processing_template_decl.
1459 (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass
1460 ATTR_FLAG_TYPE_IN_PLACE.
1461 (tsubst): Do unqualified lookup to find typedefs from current class.
1462 [ARRAY_TYPE]: Propagate alignment info.
1463 * decl2.c (is_late_template_attribute): Only defer handling of
1464 attribute aligned if the expression is dependent.
1465 (save_template_attributes): If we're deferring any attributes,
1466 make this a naming typedef.
1467
1468 2007-09-18 Paolo Carlini <pcarlini@suse.de>
1469
1470 PR c++/33462 (again)
1471 * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print
1472 va_arg instead of __builtin_va_arg.
1473
1474 2007-09-18 Paolo Carlini <pcarlini@suse.de>
1475
1476 PR c++/33462
1477 * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.
1478 (pp_cxx_primary_expression): Use it.
1479 * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.
1480 * error.c (dump_expr): Use it.
1481
1482 2007-09-18 Paolo Carlini <pcarlini@suse.de>
1483
1484 PR c++/33463
1485 * cxx-pretty-print.c (pp_cxx_postfix_expression): Split
1486 out case TYPEID_EXPR to...
1487 (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren
1488 and pp_cxx_right_paren.
1489 * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.
1490 * error.c (dump_expr): Use it.
1491
1492 2007-09-18 Paolo Carlini <pcarlini@suse.de>
1493
1494 PR c++/33464
1495 * cxx-pretty-print.c (pp_cxx_trait_expression): Add.
1496 (pp_cxx_primary_expression): Use it.
1497 * cxx-pretty-print.h (pp_cxx_trait_expression): Declare.
1498 * error.c (dump_expr): Use it.
1499
1500 2007-09-16 Paolo Carlini <pcarlini@suse.de>
1501
1502 PR c++/33124
1503 * init.c (build_new): Remove warning for zero-element
1504 allocations.
1505
1506 2007-09-16 Nathan Sidwell <nathan@codesourcery.com>
1507
1508 PR c++/32756
1509 * call.c (maybe_handle_implicit_object): Set this_p, clear
1510 rvaluedness_matches_p.
1511 (compare_ics): Do not compare rvaluedness matching when one of the
1512 operands is an implicit object.
1513
1514 2007-09-14 Jason Merrill <jason@redhat.com>
1515
1516 PR c++/17743, c++/19163
1517 * decl2.c (is_late_template_attribute): New fn.
1518 (splice_template_attributes, save_template_attributes): New fns.
1519 (cplus_decl_attributes): Call save_template_attributes.
1520 * pt.c (apply_late_template_attributes): New fn.
1521 (instantiate_class_template, tsubst_decl): Use it.
1522 * cp-tree.h: Declare is_late_template_attribute.
1523
1524 2007-09-13 Tom Tromey <tromey@redhat.com>
1525
1526 * parser.c (cp_lexer_new_main): Don't use
1527 c_lex_return_raw_strings.
1528 (cp_lexer_get_preprocessor_token): Update. Add special case when
1529 lexer is NULL.
1530
1531 2007-09-11 Jan Hubicka <jh@suse.cz>
1532
1533 * method.c (use_thunk): Use tree_rest_of_compilation
1534 * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
1535 (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
1536 * cp-tree.h (expand_body): Kill.
1537 (emit_associated_thunks): Declare.
1538 * semantics.c (emit_associated_thunks): Export.
1539 (expand_body): Kill.
1540
1541 2007-09-09 David Daney <ddaney@avtrex.com>
1542
1543 PR c++/33324
1544 * init.c (build_new_1): Use POINTER_PLUS_EXPR instead of MINUS_EXPR
1545 to calculate cookie_ptr.
1546
1547 2007-09-08 Jason Merrill <jason@redhat.com>
1548
1549 PR c++/33342
1550 * pt.c (most_specialized_class): Set processing_template_decl
1551 while tsubsting partial spec args.
1552
1553 2007-09-06 Jason Merrill <jason@redhat.com>
1554
1555 * decl2.c (get_guard): Copy visibility from the guarded variable.
1556
1557 2007-09-06 Jan Hubicka <jh@suse.cz>
1558
1559 * semantics.c (expand_body): Do not mark arguments of clones used.
1560
1561 2007-09-06 Paolo Carlini <pcarlini@suse.de>
1562
1563 PR c++/32674
1564 * decl.c (cp_finish_decl): When processing_template_decl,
1565 deal correctly with init as TREE_LIST.
1566
1567 2007-09-06 Tom Tromey <tromey@redhat.com>
1568
1569 * decl.c (finish_function): Put return's location on line zero of
1570 file.
1571
1572 2007-09-05 Jason Merrill <jason@redhat.com>
1573
1574 PR c++/15745
1575 * except.c (prepare_eh_type): Use type_decays_to.
1576
1577 PR c++/15097
1578 * init.c (build_delete): Use build_headof to get the address of the
1579 complete object if we aren't using the deleting destructor.
1580 * rtti.c (build_headof): No longer static.
1581 * cp-tree.h: Declare it.
1582
1583 2007-09-06 Jakub Jelinek <jakub@redhat.com>
1584
1585 * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
1586 decl if a prototype for XX is provided with throw().
1587
1588 PR c++/33289
1589 * decl.c (builtin_function_1): Set DECL_ANTICIPATED also
1590 on __*_chk non-__builtin_* decls.
1591
1592 2007-09-05 Paolo Carlini <pcarlini@suse.de>
1593
1594 PR c++/30302
1595 * semantics.c (finish_id_expression): Use context_for_name_lookup
1596 insted of DECL_CONTEXT, to see through anonymous structs and unions.
1597 * class.c (finish_struct_anon): Deal correctly with anonymous
1598 structs (vs unions, as GNU extension) in error messages.
1599
1600 2007-09-05 Jan Hubicka <jh@suse.cz>
1601
1602 * cp/sematics.c (expand_body): Remove unnecesary import_export_decl
1603 call, DECL_EXTERNAL checks and current_function_decl saving.
1604
1605 2007-09-05 Paolo Carlini <pcarlini@suse.de>
1606
1607 PR c++/29731 (again)
1608 * parser.c (cp_parser_primary_expression): Return error_mark_node
1609 when a statement-expression is found in a template-argument list.
1610
1611 2007-09-04 Jason Merrill <jason@redhat.com>
1612
1613 * except.c (initialize_handler_parm): Use
1614 fold_build_cleanup_point_expr.
1615
1616 PR c++/31419
1617 * call.c (reference_binding): Don't look for user-defined conversions
1618 to the same type.
1619
1620 PR c++/31411
1621 * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
1622 the MUST_NOT_THROW_EXPR.
1623
1624 2007-09-04 Richard Sandiford <richard@codesourcery.com>
1625
1626 * decl.c (cp_finish_decl): Call determine_visibility before
1627 make_rtl_for_nonlocal_decl.
1628
1629 2007-09-04 Jason Merrill <jason@redhat.com>
1630
1631 PR c++/14032
1632 * pt.c (most_specialized_class): Substitute outer template
1633 arguments into the arguments of a member template partial
1634 specialization.
1635 (strip_innermost_template_args): New fn.
1636
1637 2007-09-03 Daniel Jacobowitz <dan@codesourcery.com>
1638
1639 * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
1640
1641 2007-09-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1642
1643 * call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
1644 * decl.c (cp_make_fname_decl): Likewise,
1645 * parser.c (cp_parser_string_literal): Likewise,
1646 * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
1647 * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
1648 Likewise,
1649
1650 2007-09-02 Paolo Carlini <pcarlini@suse.de>
1651
1652 PR c++/33208
1653 * typeck.c (build_unary_op): Fix error message for
1654 Boolean expression as operand to operator--.
1655
1656 2007-09-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1657
1658 * tree.c (pod_type_p, zero_init_p): Use strip_array_types.
1659 * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
1660 Likewise.
1661
1662 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
1663
1664 PR c++/32597
1665 * init.c (build_default_init): Make extern.
1666 * cp-tree.h (build_default_init): Declare here.
1667 * pt.c (tsubst_expr): When the instantiation of the initializer of
1668 a variable results in an empty list, default-initialize the
1669 variable.
1670 (tsubst_copy_and_build): When the instantiation of the initializer
1671 in a new expression results in an empty initializer list,
1672 default-initialize it.
1673
1674 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
1675
1676 * mangle.c (write_type): Change mangling of rvalue reference from
1677 `RR' to `O'.
1678
1679 2007-08-31 Jakub Jelinek <jakub@redhat.com>
1680
1681 * decl.c (duplicate_decls): Remove duplicated line.
1682
1683 2007-08-31 Paolo Carlini <pcarlini@suse.de>
1684
1685 PR c++/33210
1686 * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
1687 BOUND_TEMPLATE_TEMPLATE_PARM.
1688
1689 2007-08-31 Paolo Carlini <pcarlini@suse.de>
1690
1691 PR c++/32113
1692 * search.c (lookup_member): Check the name argument for
1693 error_mark_node.
1694
1695 2007-08-31 Paolo Carlini <pcarlini@suse.de>
1696
1697 PR c++/33212
1698 * parser.c (cp_parser_trait_expr): Check rerurn value of
1699 cp_parser_type_id.
1700
1701 2007-08-30 Ollie Wild <aaw@google.com>
1702
1703 * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
1704 convert_ptrmem for pointer to member conversions.
1705 (convert_to_pointer_force): Update cp_convert_to_pointer call.
1706 (ocp_convert): Update cp_convert_to_pointer call.
1707 * typeck.c (convert_ptrmem): Add conditional for null pointers to
1708 members.
1709 (build_static_cast_1): Check can_convert for conversions in either
1710 direction.
1711 (get_delta_difference_1): New function.
1712 (get_delta_difference): Refactor to call get_delta_difference_1.
1713
1714 2007-08-30 Jakub Jelinek <jakub@redhat.com>
1715
1716 * decl.c (start_preparsed_function): Set
1717 DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
1718
1719 2007-08-28 Paolo Carlini <pcarlini@suse.de>
1720
1721 PR c++/33209
1722 * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and
1723 BOUND_TEMPLATE_TEMPLATE_PARM.
1724
1725 2007-08-28 Jakub Jelinek <jakub@redhat.com>
1726
1727 PR c++/32596
1728 PR c++/32400
1729 * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
1730 and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
1731
1732 2007-08-27 Jason Merrill <jason@redhat.com>
1733
1734 PR c++/29000
1735 * pt.c (build_non_dependent_expr, type_dependent_expression_p):
1736 Look inside STMT_EXPR.
1737 * semantics.c (stmt_expr_value_expr): New fn.
1738 * cp-tree.h: Declare it.
1739
1740 PR c++/28558
1741 * decl.c (groktypename): Ignore attributes applied to class type.
1742
1743 2007-08-28 Richard Guenther <rguenther@suse.de>
1744
1745 * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
1746
1747 2007-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
1748
1749 * error.c (dump_expr): Handle COMPLEX_CST.
1750 * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.
1751 (pp_cxx_expression): Likewise.
1752
1753 2007-08-27 Alexandre Oliva <aoliva@redhat.com>
1754
1755 * decl.c (GNU_INLINE_P): New.
1756 (duplicate_decls): Handle gnu_inline. Merge attributes and
1757 some flags in overriding definitions.
1758 (redeclaration_error_message): Handle gnu_inline.
1759 (start_preparsed_function): Likewise.
1760
1761 2007-08-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1762
1763 * call.c (sufficient_parms_p): Constify.
1764 * class.c (same_signature_p): Likewise.
1765 * cp-gimplify.c (is_invisiref_parm,
1766 cxx_omp_privatize_by_reference): Likewise.
1767 * cp-objcp-common.c (has_c_linkage): Likewise.
1768 * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,
1769 sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,
1770 grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,
1771 num_artificial_parms_for, comp_template_parms,
1772 template_parameter_pack_p, any_dependent_template_arguments_p,
1773 any_type_dependent_arguments_p, any_value_dependent_elements_p,
1774 repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,
1775 zero_init_p, member_p, cp_lvalue_kind,
1776 builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
1777 varargs_function_p, is_dummy_object, special_function_kind,
1778 string_conv_p, type_unknown_p, comp_except_specs, compparms,
1779 comp_cv_qualification, is_bitfield_expr_with_lowered_type,
1780 unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,
1781 cp_has_mutable_p, at_least_as_qualified_p,
1782 invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.
1783 * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.
1784 * except.c (nothrow_libfn_p): Likewise.
1785 * method.c (skip_artificial_parms_for, num_artificial_parms_for):
1786 Likewise.
1787 * pt.c (comp_template_parms, template_parameter_pack_p,
1788 any_type_dependent_arguments_p, any_value_dependent_elements_p,
1789 any_dependent_template_arguments_p): Likewise.
1790 * repo.c (repo_export_class_p): Likewise.
1791 * semantics.c (anon_aggr_type_p): Likewise.
1792 * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,
1793 builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
1794 varargs_function_p, member_p, is_dummy_object, pod_type_p,
1795 zero_init_p, special_function_p): Likewise.
1796 * typeck.c (comp_array_types, type_unknown_p, comp_except_specs,
1797 comp_array_types, at_least_as_qualified_p, comp_cv_qualification,
1798 compparms, invalid_nonstatic_memfn_p,
1799 is_bitfield_expr_with_lowered_type, unlowered_expr_type,
1800 string_conv_p, ptr_reasonably_similar, cp_type_readonly,
1801 cp_has_mutable_p, lvalue_or_else): Likewise.
1802
1803 2007-08-25 Paolo Bonzini <bonzini@gnu.org>
1804
1805 * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.
1806 * cp-objcp-common.c (cp_tree_size): Ditto.
1807 * tree.c (cp_walk_subtrees): Ditto
1808 * cp-tree.def (TINST_LEVEL): Go away.
1809 * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,
1810 move together with other non-tree structs.
1811 (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.
1812 (union lang_tree_node): Eliminate tinst_level field.
1813 (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.
1814 (current_instantiation, outermost_tinst_level): Return
1815 a "struct tinst_level *".
1816
1817 * error.c (print_instantiation_partial_context): Change second
1818 parameter to a "struct tinst_level *". Replace accessor macros
1819 with field access.
1820 (print_instantiation_full_context): Likewise.
1821 * lex.c (in_main_input_context): Likewise.
1822
1823 * pt.c (struct pending_templates): New.
1824 (pending_templates, last_pending_template): Use it as a type.
1825 (current_tinst_level): Change typo to "struct tinst_level *"
1826 (reopen_tinst_level): Accept "struct tinst_level *", return decl.
1827 (add_pending_template): Construct a "struct pending_template".
1828 Replace TINST_LEVEL accessor macros with field access.
1829 (push_tinst_level): Likewise, using GGC_NEW instead of make_node.
1830 (pop_tinst_level): Likewise.
1831 (instantiate_pending_templates): Likewise. Factor common code used
1832 when an instantiation has been done.
1833 (outermost_tinst_level): Replace tree_last with loop.
1834 (current_instantiation): Return a "struct tinst_level *".
1835
1836 2007-08-24 Ollie Wild <aaw@google.com>
1837
1838 * name-lookup.c (add_decl_to_level): Remove addition to vtables chain.
1839 * name-lookup.h (cp_binding_level): Remove vtables member.
1840
1841 2007-08-24 Richard Guenther <rguenther@suse.de>
1842
1843 * tree.c (cp_cannot_inline_tree_fn): Remove.
1844 * cp-tree.h (cp_cannot_inline_tree_fn): Likewise.
1845 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
1846 Remove define.
1847
1848 2007-08-24 Jakub Jelinek <jakub@redhat.com>
1849
1850 PR c++/32567
1851 * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return
1852 error_mark_node right away if build_expr_type_conversion
1853 returned it.
1854
1855 PR c++/32898
1856 * name-lookup.c (set_decl_namespace): lookup_qualified_name failure
1857 is error_mark_node rather than NULL_TREE.
1858 * pt.c (check_explicit_specialization): Likewise.
1859
1860 PR c++/31941
1861 * error.c (resolve_virtual_fun_from_obj_type_ref): Handle
1862 TARGET_VTABLE_USES_DESCRIPTORS targets properly.
1863
1864 2007-08-22 Jason Merrill <jason@redhat.com>
1865
1866 PR c++/29365
1867 * pt.c (outermost_tinst_level): New function.
1868 * lex.c (in_main_input_context): New function.
1869 * cp-tree.h: Declare it.
1870 * decl2.c (constrain_class_visibility): Use it to avoid warning
1871 about uses of the anonymous namespace in the main input file.
1872
1873 2007-08-21 Jakub Jelinek <jakub@redhat.com>
1874
1875 * init.c (build_new_1): Use get_target_expr instead of save_expr.
1876
1877 2007-08-20 Pawel Sikora <pluto@pld-linux.org>
1878
1879 PR c++/7302
1880 * class.c (finish_struct_1): Warn when a class has virtual
1881 functions and accessible non-virtual destructor.
1882
1883 2007-08-20 Richard Guenther <rguenther@suse.de>
1884
1885 PR c++/22369
1886 PR c++/22451
1887 * call.c (build_new_method_call): Convert initializer to
1888 the basetype.
1889 * init.c (build_aggr_init): Do not fiddle with types.
1890 (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.
1891 * except.c (build_throw): Do not drop qualifiers for the
1892 pointer type.
1893 * typeck.c (get_member_function_from_ptrfunc): Do not
1894 fiddle with types, instead convert.
1895 (build_ptrmemfunc1): Convert to the target type for
1896 initialization.
1897 (gfc_trans_allocate): Convert result to target type.
1898 * cp-objcp-common.c (cxx_get_alias_set): Pointers to
1899 pointer-to-member structures shall have alias set zero as well.
1900
1901 2007-08-20 Richard Guenther <rguenther@suse.de>
1902
1903 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):
1904 Remove.
1905 * cp-tree.h (cp_auto_var_in_fn_p): Remove.
1906 (nonstatic_local_decl_p): Likewise.
1907 * tree.c (cp_auto_var_in_fn_p): Remove.
1908 * decl.c (nonstatic_local_decl_p): Remove.
1909
1910 2007-08-20 Richard Guenther <rguenther@suse.de>
1911
1912 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
1913 Remove define.
1914 * tree.h (cp_walk_tree): New define to walk_tree_1 with
1915 cp_walk_subtrees lh parameter.
1916 (cp_walk_tree_without_duplicates): New define to
1917 walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
1918 * tree.c (count_trees): Call
1919 cp_walk_tree_without_duplicates.
1920 (verify_stmt_tree): Call cp_walk_tree.
1921 (break_out_target_exprs): Likewise.
1922 (WALK_SUBTREE): Likewise.
1923 * cp-gimplify.c (cp_genericize): Likewise.
1924 * cp-pt.c (find_parameter_packs_r): Likewise.
1925 (uses_parameter_packs): Likewise.
1926 (make_pack_expansion): Likewise.
1927 (check_for_bare_parameter_packs): Likewise.
1928 (for_each_template_parm): Likewise.
1929 * decl.c (check_default_argument): Call
1930 cp_walk_tree_without_duplicates.
1931 * except.c (build_throw): Likewise.
1932 * decl2.c (type_visibility): Likewise.
1933 * semantics.c (expand_or_defer_fn): Likewise.
1934 (finalize_nrv): Call cp_walk_tree.
1935
1936 2007-08-20 Jakub Jelinek <jakub@redhat.com>
1937
1938 PR c++/33025
1939 * init.c (build_new_1): Rename placement_var variable to placement_expr.
1940 Initialize it with save_expr rather than get_temp_regvar.
1941
1942 2007-08-17 Andrew Pinski <andrew_pinski@playstation.sony.com>
1943
1944 PR c++/28989
1945 * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
1946 lvalues.
1947
1948 2007-08-17 Ollie Wild <aaw@google.com>
1949
1950 PR c++/31749
1951 * name-lookup.c (do_nonmember_using_decl): Shift implicit type
1952 declarations into appropriate slots for comparison. Fix type
1953 comparison.
1954
1955 2007-08-17 Paolo Carlini <pcarlini@suse.de>
1956
1957 PR c++/32112
1958 * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
1959 * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
1960
1961 2007-08-17 Paolo Carlini <pcarlini@suse.de>
1962
1963 PR c++/32870
1964 * parser.c (cp_parser_class_head): Improve error message.
1965
1966 2007-08-16 Seongbae Park <seongbae.park@gmail.com>
1967
1968 * pt.c (instantiate_decl): Set input_location
1969 for the function end.
1970
1971 2007-08-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1972
1973 * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):
1974 Constify.
1975 * cp-tree.h (local_variable_p, nonstatic_local_decl_p,
1976 class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,
1977 cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,
1978 cxx_warn_unused_global_decl, cp_expr_size): Likewise.
1979 * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.
1980 * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.
1981 * typeck.c (cp_type_quals): Likewise.
1982 * typeck2.c (cxx_incomplete_type_diagnostic,
1983 cxx_incomplete_type_error): Likewise.
1984
1985 2007-08-16 Paolo Carlini <pcarlini@suse.de>
1986
1987 PR c++/31132
1988 * pt.c (tsubst_friend_function): When check_classfn
1989 returns error_mark_node likewise return it.
1990
1991 2007-08-15 Jakub Jelinek <jakub@redhat.com>
1992
1993 PR c++/32992
1994 * typeck.c (check_return_expr): Don't NRV optimize vars in
1995 anonymous unions.
1996 * decl.c (finish_function): Comment fix.
1997
1998 2007-08-15 Paolo Carlini <pcarlini@suse.de>
1999
2000 PR c++/33035
2001 * pt.c (push_template_decl_real): Depending on TYPE_P
2002 use either TYPE_CONTEXT or DECL_CONTEXT.
2003
2004 2007-08-14 Mark Mitchell <mark@codesourcery.com>
2005
2006 * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if
2007 constructors and destructors return this.
2008
2009 2007-08-14 Paolo Carlini <pcarlini@suse.de>
2010
2011 PR c++/27211
2012 * decl2.c (check_classfn): Return error_mark_node in case of error;
2013 in that case, do not call add_method.
2014 * decl.c (start_decl): Deal with check_classfn returning
2015 error_mark_node.
2016 (grokfndecl): Likewise.
2017 * pt.c (tsubst_friend_function): Likewise.
2018
2019 2007-08-14 Andrew Pinski <pinskia@gmail.com>
2020
2021 PR c++/30428
2022 * typeck.c (build_binary_op): Disallow vector float types with
2023 BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
2024
2025 2007-08-11 Ian Lance Taylor <iant@google.com>
2026
2027 * cp-objcp-common.c (cxx_get_alias_set): Change return type to
2028 alias_set_type.
2029 * cp/cp-tree.h (cxx_get_alias_set): Update declaration.
2030
2031 2007-08-10 Ollie Wild <aaw@google.com>
2032
2033 * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous
2034 type lookups.
2035 (ambiguous_decl): Construct tree of ambiguous types. Remove extaneous
2036 function parameter.
2037 (unqualified_namespace_lookup): Fix ambiguous_decl call.
2038 (lookup_using_namespace): Fix ambiguous_decl call.
2039 (qualified_lookup_using_namespace): Fix ambiguous_decl call.
2040
2041 2007-08-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2042
2043 * call.c (name_as_c_string): Use CONST_CAST.
2044 * decl.c (build_decl): Likewise.
2045 * parser.c (cp_parser_string_literal): Likewise.
2046
2047 2007-08-10 Paolo Carlini <pcarlini@suse.de>
2048
2049 PR c++/17763
2050 * error.c (dump_expr): Consistently use the *_cxx_*
2051 variants of the pretty-print functions.
2052
2053 2007-08-10 Paolo Carlini <pcarlini@suse.de>
2054
2055 PR c++/22256
2056 * decl.c (check_special_function_return_type): Just error
2057 on return type specified for conversion operator.
2058
2059 2007-08-09 Daniel Berlin <dberlin@dberlin.org>
2060
2061 * typeck2.c (readonly_error): Handle general expressions.
2062 * error.c (dump_expr): Handle POINTER_PLUS_EXPR
2063
2064 2007-08-06 Dan Hipschman <dsh@google.com>
2065
2066 * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to
2067 access function name.
2068
2069 2007-08-04 Alfred Minarik <a.minarik@aon.at>
2070
2071 PR pch/13676
2072 * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
2073 * g++spec.c (lang_specific_driver): Check them.
2074
2075 2007-08-06 Paolo Carlini <pcarlini@suse.de>
2076
2077 PR c++/19532
2078 * pt.c (inline_needs_template_parms): Fix comment; change return type
2079 to bool.
2080
2081 2007-08-05 Volker Reichelt <v.reichelt@netcologne.de>
2082
2083 Revert:
2084 2007-03-26 Dirk Mueller <dmueller@suse.de>
2085
2086 * parser.c (cp_parser_member_declaration): Pedwarn
2087 about stray semicolons after member declarations.
2088
2089 2007-08-02 Lee Millward <lee.millward@gmail.com>
2090
2091 PR c++/30849
2092 PR c++/30850
2093 PR c++/30851
2094 * parser.c (cp_parser_asm_definition): Detect and discard asm
2095 statements with invalid inputs or outputs.
2096 (cp_parser_asm_operand_list): Return error mark node if any
2097 of the operands are invalid. Adjust documentation.
2098
2099 2007-08-02 Nick Clifton <nickc@redhat.com>
2100
2101 * typeck.c: Change copyright header to refer to version 3 of the
2102 GNU General Public License and to point readers at the COPYING3
2103 file and the FSF's license web page.
2104 * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,
2105 config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,
2106 Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,
2107 cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,
2108 tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,
2109 cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,
2110 cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
2111 name-lookup.h, parser.c: Likewise.
2112
2113 2007-08-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2114
2115 PR middle-end/32668
2116 * call.c (magic_varargs_p): Honor the "type generic" attribute.
2117
2118 2007-07-30 Paolo Carlini <pcarlini@suse.de>
2119
2120 PR c++/32108
2121 * semantics.c (finish_label_stmt): Reject the __label__
2122 extension outside function scopes.
2123
2124 2007-07-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2125
2126 * parser.c (eof_token): Un-constify.
2127 (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
2128 cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
2129 casts.
2130
2131 2007-07-28 Kazu Hirata <kazu@codesourcery.com>
2132
2133 * pt.c, tree.c, typeck2.c: Fix comment typos.
2134
2135 2007-07-28 Simon Martin <simartin@users.sourceforge.net>
2136 Mark Mitchell <mark@codesourcery.com>
2137
2138 PR c++/30917
2139 * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be
2140 hidden due to friend declarations in local classes.
2141
2142 2007-07-27 Douglas Gregor <doug.gregor@gmail.com>
2143
2144 * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.
2145 * cp-tree.def (DECLTYPE_TYPE): New.
2146 * error.c (dump_type): Dump DECLTYPE_TYPE nodes.
2147 (dump_type_prefix): Ditto.
2148 (dump_type_suffix): Ditto.
2149 * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.
2150 * mangle.c (write_type): Handle DECLTYPE_TYPE.
2151 * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate
2152 types.
2153 (DECLTYPE_TYPE_EXPR): New.
2154 (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.
2155 (finish_declared_type): Declare.
2156 * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print
2157 DECLTYPE_TYPE nodes.
2158 (pp_cxx_type_id): Ditto.
2159 * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.
2160 (tsubst): Substitute into a DECLTYPE_TYPE node.
2161 (tsubst_copy): Ditto.
2162 (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE
2163 nodes.
2164 (dependent_type_p_r): DECLTYPE_TYPE types are always dependent.
2165 * semantics.c (finish_typeof): TYPEOF_TYPE types need to use
2166 structural equality (because we can't hash the expressions).
2167 (finish_declared_type): New.
2168 * lex.c (reswords): Add "decltype" keyword.
2169 * parser.c cp_lexer_next_token_is_decl_specifier_keyword
2170 (cp_parser_postfix_expression): Add member_access_only_p to
2171 restrict postfix expression to member access expressions.
2172 (cp_parser_unary_expression): Update call to
2173 cp_parser_postfix_expression to reflect new parameter.
2174 (cp_parser_declared_type): New.
2175 (cp_parser_simple_type_specifier): Parse decltype types.
2176
2177 2007-07-27 Mark Mitchell <mark@codesourcery.com>
2178
2179 PR c++/32346
2180 * call.c (convert_for_arg_passing): Only widen bitfields to their
2181 declared types if necessary.
2182
2183 2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2184
2185 * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):
2186 Constify.
2187
2188 2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2189
2190 * decl.c (typename_hash, typename_compare): Constify.
2191 * mangle.c (hash_type, compare_type): Likewise.
2192 * pt.c (eq_local_specializations, hash_local_specialization):
2193 Likewise.
2194 * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
2195 list_hash): Likewise.
2196 * typeck2.c (pat_compare): Likewise.
2197
2198 2007-07-24 Nathan Sidwell <nathan@codesourcery.com>
2199
2200 * method.c (implicitly_declare_fn): Increase alignment if member
2201 function pointer format requires it.
2202
2203 2007-07-24 Paolo Carlini <pcarlini@suse.de>
2204
2205 PR c++/29001
2206 * typeck.c (check_return_expr): Do not pass a null argument
2207 to null_ptr_cst_p.
2208
2209 2007-07-24 Paolo Carlini <pcarlini@suse.de>
2210
2211 PR c++/32561
2212 * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P
2213 only on VAR_DECL.
2214
2215 2007-07-22 Nathan Sidwell <nathan@codesourcery.com>
2216
2217 PR c++/32839
2218 * typeck.c (convert_arguments): Only use default args if we have
2219 a function decl.
2220
2221 PR c++/30818
2222 * typeck.c (structural_comptypes): No need to check
2223 resolve_typename_type return value here.
2224 * cp-tree.h (TYPENAME_IS_RESOLVING_P): New.
2225 * pt.c (resolve_typename_type): Follow typename typedefs. Return
2226 original type rather than error_mark_node in case of failure.
2227 * parser.c (cp_parser_nested_name_specifier_opt): Adjust
2228 resolve_typename_type result check.
2229 (cp_parser_direct_declarator, cp_parser_head,
2230 cp_parser_constructor_declarator_p): Likewise.
2231
2232 2007-07-12 Kazu Hirata <kazu@codesourcery.com>
2233
2234 * pt.c (template_parms_variadic_p): Remove.
2235 * cp-tree.h: Remove the prototype for template_parms_variadic_p.
2236
2237 2007-07-12 Jakub Jelinek <jakub@redhat.com>
2238
2239 PR c++/30854
2240 * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last
2241 argument to dump_aggr_init_expr_args instead of false.
2242
2243 2007-07-11 Douglas Gregor <doug.gregor@gmail.com>
2244
2245 * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the
2246 canonical types; otherwise, fall back to structural type
2247 comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an
2248 internal compiler error if the canonical types are wrong.
2249
2250 2007-07-11 Paolo Carlini <pcarlini@suse.de>
2251
2252 PR c++/32560
2253 * parser.c (cp_parser_make_indirect_declarator): When the
2254 the code argument is ERROR_MARK return cp_error_declarator.
2255
2256 2007-07-09 Geoffrey Keating <geoffk@apple.com>
2257
2258 PR 32617
2259 * decl.c (cxx_init_decl_processing): Don't set
2260 force_align_functions_log.
2261 (grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
2262 * typeck.c (cxx_alignof_expr): When alignof is used on a plain
2263 FUNCTION_DECL, return its alignment.
2264
2265 2007-07-09 Richard Guenther <rguenther@suse.de>
2266
2267 * decl.c (start_preparsed_function): Do not promote return type.
2268
2269 2007-07-08 Paolo Carlini <pcarlini@suse.de>
2270
2271 PR c++/30535
2272 * pt.c (unify): Never pass error_mark_node to template_decl_level.
2273
2274 2007-07-07 Mark Mitchell <mark@codesourcery.com>
2275
2276 PR c++/32232
2277 * pt.c (resolve_overloaded_unification): Robustify. Return a
2278 bool, not an int.
2279 (type_unification_real): Adjust accordingly.
2280
2281 2007-07-06 Richard Guenther <rguenther@suse.de>
2282
2283 * init.c (build_new_1): Use the correct pointer type.
2284 * typeck2.c (build_m_component_ref): Likewise.
2285
2286 2007-07-05 Mark Mitchell <mark@codesourcery.com>
2287
2288 PR c++/32245
2289 * init.c (build_zero_init): Always build an initializer for
2290 non-static storage.
2291 * typeck2.c (build_functional_cast): Use build_zero_init.
2292
2293 PR c++/32251
2294 * init.c (build_new_1): Always pass the allocation function to
2295 build_op_delete_call.
2296 * call.c (build_op_delete_call): Handle operator delete with a
2297 variable-argument list. Do not issue an error when no matching
2298 deallocation function is available for a new operator.
2299
2300 PR c++/31992
2301 * cp-tree.h (any_value_dependent_elements_p): Declare it.
2302 * decl.c (value_dependent_init_p): New function.
2303 (cp_finish_decl): Use it.
2304 * pt.c (value_dependent_expression_p): Use
2305 any_value_dependent_elements_p.
2306 * parser.c (cp_parser_primary_expression): Add comment about
2307 treating dependent qualified names as integral
2308 constant-expressions.
2309
2310 2007-07-04 Douglas Gregor <doug.gregor@gmail.com>
2311
2312 * decl.c (build_ptrmemfunc_type): Always use structural equality
2313 tests when comparing pointer-to-member-function types, because the
2314 handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
2315 types.
2316
2317 2007-07-03 Mark Mitchell <mark@codesourcery.com>
2318
2319 * init.c (build_new): Tweak comment.
2320
2321 2007-06-29 Dave Brolley <brolley@redhat.com>
2322
2323 PR c++/31743
2324 * parser.c (cp_parser_new_type_id): Don't reduce a named array
2325 type to its base type and number of elements here.
2326 * init.c (build_new): Call complete_type_or_else to ensure that the
2327 type is complete and to issue a diagnostic if it is not.
2328 (build_new_1): Don't call complete_type_or_else here.
2329
2330 2007-07-03 Richard Guenther <rguenther@suse.de>
2331
2332 PR c++/32609
2333 * class.c (fixed_type_or_null): Re-lookup the hashtable slot
2334 after recursing.
2335
2336 2007-07-02 Simon Baldwin <simonb@google.com>
2337
2338 * parser.c (cp_parser_elaborated_type_specifier): Added a warning
2339 for inner-style nested forward declarations that don't declare
2340 anything useful.
2341
2342 2007-07-02 Jakub Jelinek <jakub@redhat.com>
2343
2344 PR c++/31748
2345 * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
2346 DECL_P in not a variable and appears more than once error messages.
2347
2348 2007-07-01 Ollie Wild <aaw@google.com>
2349
2350 * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.
2351 (select_decl): Remove function.
2352 (unqualified_namespace_lookup): Populate binding by calling
2353 ambiguous_decl. Remove select_decl call.
2354 (lookup_qualified_name): Remove select_decl call.
2355 * decl.c (lookup_and_check_tag): Check for ambiguous references.
2356 * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error
2357 generation when name lookup is ambiguous.
2358
2359 2007-06-29 Douglas Gregor <doug.gregor@gmail.com>
2360
2361 PR c++/31724
2362 * init.c (build_new_1): Use structural equality on the copy of the
2363 array type.
2364
2365 2007-06-28 Geoffrey Keating <geoffk@apple.com>
2366
2367 * decl2.c (determine_visibility): Implement
2368 flag_visibility_ms_compat effect on type info.
2369 * decl.c (cxx_init_decl_processing): Implement
2370 global effect of flag_visibility_ms_compat.
2371
2372 2007-06-28 Geoffrey Keating <geoffk@apple.com>
2373
2374 * decl2.c (start_objects): Mark constructor-running function
2375 as artificial.
2376
2377 2007-06-26 Simon Martin <simartin@users.sourceforge.net>
2378
2379 PR c++/32111
2380 * decl.c (grokdeclarator): Reset friendp for member functions declared
2381 friend of their own class.
2382
2383 2007-06-23 Mark Mitchell <mark@codesourcery.com>
2384
2385 * decl2.c (determine_visibility): Don't look for dllexport here.
2386 (determine_visibility_from_class): Tidy.
2387
2388 2007-06-18 Simon Baldwin <simonb@google.com>
2389
2390 PR c++/31923
2391 * parser.c (cp_parser_single_declaration): Added check for storage
2392 class other than sc_none in parsed declaration, and a flag to indicate
2393 if the call is part of an explicit template specialization parse.
2394 * (cp_parser_explicit_specialization): Specialization check flag added
2395 to call to cp_parser_single_declaration(), set true.
2396 * (cp_parser_template_declaration_after_export): Specialization check
2397 flag added to call to cp_parser_single_declaration(), set false.
2398 * pt.c (check_explicit_specialization): Added code to copy visiblity
2399 and linkage from the templated function to the explicit specialization.
2400
2401 2007-06-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
2402
2403 * typeck.c (build_binary_op): For templates build the
2404 expression in pieces to avoid the assert in build2_stat.
2405 (get_member_function_from_ptrfunc):
2406 Change over to using POINTER_PLUS_EXPR and convert
2407 the second operand to sizetype.
2408 * typeck2.c (build_m_component_ref): Likewise.
2409 * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
2410 instead of PLUS_EXPR for pointers.
2411 (build_new_1): Likewise.
2412 (build_vec_delete_1): Likewise.
2413 (build_vec_delete): Likewise.
2414 * class.c (build_base_path): Likewise.
2415 (build_base_path): Likewise.
2416 (convert_to_base_statically): Likewise.
2417 (fixed_type_or_null): Handle POINTER_PLUS_EXPR.
2418 (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
2419 instead of PLUS_EXPR.
2420 (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
2421 instead of PLUS_EXPR for pointers.
2422 * call.c (build_special_member_call): Likewise.
2423 * rtti.c (build_headof): Likewise.
2424 Use sizetype instead of ptrdiff_type_node.
2425 (tinfo_base_init): Create a POINTER_PLUS_EXPR
2426 instead of PLUS_EXPR for pointers.
2427 * except.c (expand_start_catch_block): Do a
2428 NEGATIVE and then a POINTER_PLUS_EXPR instead
2429 of a MINUS_EXPR.
2430 * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
2431 PLUS_EXPR on pointer types over to use
2432 POINTER_PLUS_EXPR and remove the conversion
2433 to the pointer types.
2434 * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
2435 adding to a pointer type. Use size_int instead of
2436 ssize_int. Convert the index to sizetype before
2437 adding it to the pointer.
2438
2439 2007-06-15 Mark Mitchell <mark@codesourcery.com>
2440
2441 * cp-tree.h (DECL_VAR_MARKED_P): Remove.
2442 (DECL_ANON_UNION_VAR_P): New macro.
2443 * class.c (fixed_type_or_null): Tidy. Use a hash table, rather
2444 than DECL_VAR_MARKED_P, to keep track of which variables we have
2445 seen.
2446 * decl.c (redeclaration_error_message): Complain about redeclaring
2447 anonymous union members at namespace scope.
2448 * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
2449
2450 2007-06-14 Geoff Keating <geoffk@apple.com>
2451
2452 * decl2.c (determine_visibility): Ensure that functions with
2453 hidden types as parameters are hidden.
2454
2455 PR 31093
2456 * decl2.c (determine_visibility): Remove duplicate code for
2457 handling type info.
2458
2459 2007-06-12 Ian Lance Taylor <iant@google.com>
2460
2461 PR libstdc++/29286
2462 * init.c (avoid_placement_new_aliasing): New static function.
2463 (build_new_1): Call it.
2464
2465 2007-06-11 Rafael Avila de Espindola <espindola@google.com>
2466
2467 * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
2468 (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
2469
2470 2007-06-08 Jakub Jelinek <jakub@redhat.com>
2471
2472 PR c++/32177
2473 * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr
2474 on init, the non-decl cond operand and increment value.
2475
2476 2007-06-07 Simon Martin <simartin@users.sourceforge.net>
2477
2478 PR c++/30759
2479 * decl.c (check_initializer): Report an error when a brace enclosed
2480 initializer is used for a non-aggregate type in C++98.
2481 (redeclaration_error_message): Rewrote flag_cpp0x in terms of
2482 cxx_dialect.
2483 (grokdeclarator): Likewise.
2484 (move_fn_p): Likewise.
2485 * typeck.c (check_return_expr): Likewise.
2486 * call.c (reference_binding): Likewise.
2487 * error.c (cp_cpp_error): Likewise.
2488 * pt.c (check_default_tmpl_args): Likewise.
2489 (tsubst): Likewise.
2490 * lex.c (init_reswords): Likewise.
2491 * parser.c (p_parser_primary_expression): Likewise.
2492 (TOKEN_PRECEDENCE): Likewise.
2493 (cp_parser_init_declarator): Likewise.
2494 (cp_parser_ptr_operator): Likewise.
2495 (cp_parser_parameter_declaration): Likewise.
2496 (cp_parser_enclosed_template_argument_list): Likewise.
2497 (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
2498 (cp_parser_next_token_ends_template_argument_p): Likewise.
2499
2500 2007-06-04 Simon Baldwin <simonb@google.com>
2501
2502 * decl.c (grokdeclarator): Readability change. Moved case labels
2503 into direct switch statement scope.
2504
2505 2007-06-04 Paolo Carlini <pcarlini@suse.de>
2506
2507 * call.c (convert_like_real): Remove pointless code.
2508
2509 2007-05-31 Mark Mitchell <mark@codesourcery.com>
2510
2511 * decl.c (get_atexit_fn_ptr_type): New function.
2512 (get_atexit_node): Use it.
2513 (start_cleanup_fn): Likewise.
2514 (register_dtor_fn): Use the object's destructor, instead of a
2515 separate cleanup function, where possible.
2516 * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.
2517 (atexit_fn_ptr_type_node): New macro.
2518 * decl2.c (build_cleanup): Use build_address.
2519
2520 2007-05-31 Daniel Berlin <dberlin@dberlin.org>
2521
2522 * typeck.c (build_binary_op): Include types in error.
2523
2524 2007-05-31 Jakub Jelinek <jakub@redhat.com>
2525
2526 PR c++/31806
2527 * decl.c (cp_finish_decl): Also clear was_readonly if a static var
2528 needs runtime initialization.
2529
2530 2007-05-31 Paolo Carlini <pcarlini@suse.de>
2531
2532 PR c++/32158
2533 * semantics.c (finish_trait_expr): Complete the types.
2534
2535 2007-05-30 Russell Yanofsky <russ@yanofsky.org>
2536 Douglas Gregor <doug.gregor@gmail.com>
2537 Pedro Lamarao <pedro.lamarao@mndfck.org>
2538 Howard Hinnant <howard.hinnant@gmail.com>
2539
2540 PR c++/7412
2541 PR c++/29939
2542 * typeck.c (comptypes): Don't consider rvalue and lvalue
2543 reference types to be equivalent.
2544 (check_return_expr): Move from certain lvalues when returning
2545 them.
2546 * decl.c (grokdeclarator): Implement reference collapsing.
2547 (copy_fn_p): Don't consider constructors taking rvalue references
2548 to be copy constructors.
2549 (move_fn_p): New.
2550 * call.c (conversion): New "rvaluedness_matches_p" member.
2551 (convert_class_to_reference): Require reference type as first
2552 parameter instead of base type.
2553 (reference_binding): Add logic to handle rvalue references.
2554 (implicit_conversion): Update inaccurate comment.
2555 (convert_like_real): Disable creation of temporaries that are
2556 impossible to initialize for types with move constructors.
2557 (build_over_call): Elide move constructors when possible.
2558 (maybe_handle_implicit_object): Set "rvaluedness_matches_p".
2559 (maybe_handle_ref_bind): Return conversion instead of type node.
2560 (compare_ics): Add logic to use "rvaluedness_matches_p" values to
2561 determine preferred conversion sequences.
2562 * cp-tree.h (TYPE_REF_IS_RVALUE): New.
2563 (LOOKUP_PREFER_RVALUE): New.
2564 (DECL_MOVE_CONSTRUCTOR_P): New.
2565 (struct cp_declarator): Add "reference" member for reference
2566 types, with new "rvalue_ref" flag.
2567 (cp_build_reference_type): Declare.
2568 (move_fn_p): Declare.
2569 * error.c (dump_type_prefix): Format rvalue reference types
2570 correctly in error messages.
2571 * except.c (build_throw): Move from certain lvalues when
2572 throwing.
2573 * mangle.c (write_type): Mangle rvalue references differently
2574 than regular references.
2575 * parser.c (make_reference_declarator): Add boolean parameter for
2576 rvalue references.
2577 (cp_parser_make_indirect_declarator): New.
2578 (cp_parser_new_declarator_opt): Call
2579 cp_parser_make_indirect_declarator.
2580 (cp_parser_conversion_declarator_opt): Ditto.
2581 (cp_parser_declarator): Ditto.
2582 (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference
2583 declarators.
2584 * pt.c (tsubst): Implement reference collapsing.
2585 (maybe_adjust_types_for_deduction): Implement special template
2586 parameter deduction rule for rvalue references.
2587 (type_unification_real): Update calls to
2588 maybe_adjust_types_for_deduction.
2589 (try_one_overload): Ditto.
2590 (unify_pack_expansion): Ditto.
2591 * tree.c (lvalue_p_1): Handle rvalue reference types.
2592 (cp_build_reference_type): New.
2593
2594 2007-05-30 Jakub Jelinek <jakub@redhat.com>
2595
2596 PR c++/31809
2597 * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC
2598 variables that need runtime initialization.
2599
2600 2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com>
2601
2602 PR c++/31339
2603 * typeck.c (build_unary_op <case PREINCREMENT_EXPR,
2604 case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
2605 case POSTDECREMENT_EXPR>): Return the error_mark_node
2606 if either the real or imaginary parts would an
2607 error_mark_node.
2608
2609 2007-05-25 Simon Martin <simartin@users.sourceforge.net>
2610 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2611
2612 PR c++/31745
2613 * parser.c (cp_parser_skip_to_closing_brace): Return true if the next
2614 token is a closing brace, false if there are no tokens left.
2615 (cp_parser_namespace_alias_definition): Only consume the next token if
2616 it is a closing brace.
2617
2618 * parser.c (cp_parser_class_specifier): Likewise.
2619
2620 2007-05-25 H.J. Lu <hongjiu.lu@intel.com>
2621
2622 * semantics.c (finish_member_declaration): Fix a typo in the
2623 last checkin.
2624
2625 2007-05-25 Douglas Gregor <doug.gregor@gmail.com>
2626
2627 PR c++/31431
2628 PR c++/31432
2629 PR c++/31434
2630 PR c++/31435
2631 PR c++/31437
2632 PR c++/31438
2633 PR c++/31442
2634 PR c++/31443
2635 PR c++/31444
2636 PR c++/31445
2637 * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.
2638 * cp-tree.h (check_for_bare_parameter_packs): Returns bool.
2639 * pt.c (check_for_bare_parameter_packs): Return bool indicated
2640 whether everything was okay. Fix indentation.
2641 (push_template_decl_real): Check for bare parameter packs in
2642 function parameters; where errors occur, mark the parameter types
2643 with ERROR_MARK_NODEs to avert ICEs.
2644 (coerce_template_parameter_pack): New.
2645 (coerce_template_parms): Moved parameter pack coercion into
2646 coerce_template_parameter_pack, and permit it anywhere in the
2647 template parameter list (not just at the end). Parameter and
2648 argument indices can vary (somewhat) separately now, so add
2649 PARM_IDX and ARG_IDX.
2650 (fn_type_unification): Don't set an argument pack as incomplete if
2651 no argument pack was deduced.
2652 (type_unification_real): If a type parameter is a parameter pack
2653 and has not otherwise been deduced, it will be deduced to an empty
2654 parameter pack.
2655 (more_specialized_fn): Use the actual lengths of the argument
2656 lists when comparing against expansions.
2657 * semantics.c (finish_member_declaration): If a field's type has
2658 bare parameter packs, error and set its type to ERROR_MARK_NODE.
2659
2660 2007-05-24 Danny Smith <dannysmith@users.sourceforge.net>
2661
2662 PR target/27067
2663 * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.
2664
2665 2007-05-22 Ollie Wild <aaw@google.com>
2666
2667 * name-lookup.c (ambiguous_decl): Adds check for hidden types.
2668 (unqualified_namespace_lookup): Adds check for hidden types.
2669
2670 2007-05-22 Ollie Wild <aaw@google.com>
2671
2672 * decl.c (duplicate_decls): Verify namespace names are unique.
2673
2674 2007-05-21 Mark Mitchell <mark@codesourcery.com>
2675
2676 * decl.c (cxx_maybe_build_cleanup): Handle
2677 __attribute__((cleanup)).
2678
2679 2007-05-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2680
2681 * cvt.c (cp_convert_and_check): Don't check warnings if the
2682 conversion failed.
2683
2684 2007-05-18 Geoffrey Keating <geoffk@apple.com>
2685
2686 * mangle.c (write_real_cst): Use 'unsigned long' for %lx.
2687
2688 2007-05-14 Paolo Carlini <pcarlini@suse.de>
2689
2690 PR c++/29928
2691 * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
2692 type only if is a class type (5.2.8/4).
2693
2694 2007-05-14 Rafael Avila de Espindola <espindola@google.com>
2695
2696 * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2697 * decl.c (grokdeclarator): Use unsigned_type_for instead of
2698 c_common_unsigned_type.
2699
2700 2007-05-11 Silvius Rus <rus@google.com>
2701
2702 * cp/typeck.c (build_indirect_ref): Add call to
2703 strict_aliasing_warning.
2704 (build_reinterpret_cast_1): Condition call to
2705 strict_aliasing_warning.
2706
2707 2007-05-11 Jan Hubicka <jh@suse.cz>
2708
2709 * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.
2710 * decl2.c (start_objects): ctors and dtors are no longer public.
2711 (cp_write_global_declarations): Do not call c_build_cdtor_fns.
2712
2713 2007-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
2714
2715 * typeck.c (build_unary_op): Remove code that used to
2716 handle non lvalue increments/decrements.
2717
2718 2007-05-07 Mike Stump <mrs@apple.com>
2719
2720 * parser.c (check_empty_body): Add.
2721 (cp_parser_iteration_statement): Add call to check_empty_body.
2722
2723 2007-05-05 Geoffrey Keating <geoffk@apple.com>
2724
2725 PR 31775
2726 * mangle.c (write_mangled_name): Mangle static variable names.
2727 (write_unqualified_name): Use local-source-name for
2728 namespace-scope static variables.
2729
2730 2007-05-04 Dirk Mueller <dmueller@suse.de>
2731
2732 * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is
2733 not in effect.
2734
2735 2007-05-02 Seongbae Park <seongbae.park@gmail.com>
2736
2737 PR c++/31663
2738 * decl2.c (constrain_class_visibility):
2739 Use strip_pointer_or_array_types instead of strip_array_types.
2740
2741 2007-04-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
2742
2743 PR C++/30221
2744 * decl.c (reshape_init_r): Don't reshape the first element if it
2745 is a pointer to member function.
2746
2747 2007-04-27 Simon Baldwin <simonb@google.com>
2748
2749 * decl.c (grokparms): Changed message format from %qD to %qE.
2750
2751 2007-04-27 Douglas Gregor <doug.gregor@gmail.com>
2752
2753 * error.c (maybe_warn_variadic_templates): Variadic templates are
2754 now in C++0x, so only warn about them in C++98 mode.
2755
2756 2007-04-26 Andrew Pinski <andrew_pinski@playstation.sony.com>
2757
2758 PR C++/30016
2759 * typeck.c (build_reinterpret_cast_1): Only allow conversion to
2760 integeral types from vectors types.
2761
2762 2007-04-26 Jakub Jelinek <jakub@redhat.com>
2763
2764 PR c++/31598
2765 * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
2766 for type dependent OMP_CLAUSE_DECLs.
2767
2768 2007-04-24 Mark Mitchell <mark@codesourcery.com>
2769
2770 PR c++/31338
2771 * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
2772 * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
2773 COMPLEX_TYPE is now an ARITHMETIC_TYPE.
2774 * init.c (build_zero_init): Adjust, as
2775 COMPLEX_TYPE is now a SCALAR_TYPE.
2776 * typeck2.c (digest_init): Allow brace-enclosed initializers for
2777 COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
2778
2779 2007-04-25 Paolo Carlini <pcarlini@suse.de>
2780
2781 * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
2782 per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
2783 (trait_expr_value): Adjust.
2784
2785 2007-04-23 Simon Baldwin <simonb@google.com>
2786
2787 * decl.c (grokparms): Added new error for duplicate function
2788 parameters names in function prototypes, to match gcc behavior.
2789
2790 2007-04-23 Jan Hubicka <jh@suse.cz>
2791
2792 * cp/decl2.c (finish_objects): Do not call target constructor/destructor
2793 bits dirrectly.
2794
2795 2007-04-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
2796
2797 * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
2798 instead of checking GIMPLE_STMT_P in chain_next.
2799
2800 2007-04-17 Mark Mitchell <mark@codesourcery.com>
2801
2802 PR c++/31513
2803 * call.c (convert_for_arg_passing): Convert bitfields to their
2804 declared types.
2805
2806 2007-04-17 Simon Martin <simartin@users.sourceforge.net>
2807
2808 PR c++/31517
2809 * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
2810
2811 2007-04-16 Seongbae Park <seongbae.park@gmail.com>
2812
2813 PR c++/29365
2814 * cp/decl2.c (constrain_class_visibility):
2815 Do not warn about the use of anonymous namespace in the main input file.
2816
2817 2007-04-15 Mark Mitchell <mark@codesourcery.com>
2818
2819 * cp-tree.h (current_template_parms): Fix typo in comment.
2820
2821 2007-04-15 Kazu Hirata <kazu@codesourcery.com>
2822
2823 * cp-tree.h, error.c: Fix comment typos.
2824
2825 2007-04-13 Jason Merrill <jason@redhat.com>
2826
2827 PR c++/31074
2828 * call.c (reference_binding): Add c_cast_p parm. If true,
2829 add quals to TO as needed to make it reference-compatible.
2830
2831 2007-04-11 Jan Hubicka <jh@suse.cz>
2832
2833 * cp/class.c (convert_to_base_statically): Fold produced tree; verify
2834 that we are not processing template_decl.
2835
2836 2007-04-09 Mark Mitchell <mark@codesourcery.com>
2837
2838 PR c++/31449
2839 * class.c (build_base_path): Ensure that the converted pointer has
2840 the same cv-qualification as the input.
2841
2842 2007-04-09 Paolo Carlini <pcarlini@suse.de>
2843
2844 * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
2845
2846 2007-04-08 Steven Bosscher <steven@gcc.gnu.org>
2847
2848 * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
2849 Do not set it.
2850 (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
2851 * tree.c (cp_add_pending_fn_decls): Remove.
2852 * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
2853
2854 2007-04-07 Daniel Berlin <dberlin@dberlin.org>
2855
2856 Revert change removing staticp.
2857
2858 2007-04-06 Daniel Berlin <dberlin@dberlin.org>
2859
2860 * cp-objcp-common.c (cxx_staticp): Remove.
2861 * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
2862 * cp-tree.h (cxx_staticp):
2863
2864 2007-04-04 Danny Smith <dannysmith.users.sourceforge.net>
2865
2866 * class.c (check_for_override): Don't remove dllmport attribute
2867 of virtual methods.
2868
2869 2007-04-03 Jakub Jelinek <jakub@redhat.com>
2870
2871 PR c++/30847
2872 * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
2873 type issue error and return early.
2874
2875 2007-03-30 Jason Merrill <jason@redhat.com>
2876
2877 PR c++/31187
2878 * typeck.c (cp_type_readonly): New fn.
2879 * cp-tree.h: Declare it.
2880 * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
2881 (cp_finish_decl): Not here.
2882
2883 2007-03-31 Richard Guenther <rguenther@suse.de>
2884
2885 * optimize.c (maybe_clone_body): Replace splay-tree usage by
2886 pointer-map.
2887
2888 2007-03-31 Douglas Gregor <doug.gregor@gmail.com>
2889
2890 PR c++/31138
2891 PR c++/31140
2892 PR c++/31141
2893 * parser.c (declarator_can_be_parameter_pack): New.
2894 (cp_parser_template_parameter): Only parse the `...' if the
2895 declarator can be a parameter pack.
2896 (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
2897 is NULL.
2898 * pt.c (find_parameter_packs_r): Look into the bounds on integer
2899 types (they could be used as array bounds).
2900 (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
2901 (tsubst_pack_expansion): Handle failure to expand parameter
2902 packs.
2903
2904 2007-03-30 Paolo Carlini <pcarlini@suse.de>
2905
2906 PR c++/26099
2907 * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
2908 TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
2909 (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
2910 (CLASS_TYPE_NON_UNION_P): Add.
2911 (struct lang_type_class): Add has_complex_dflt.
2912 (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
2913 (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
2914 * cp-tree.def: Add TRAIT_EXPR.
2915 * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
2916 * lex.c (struct resword): Add __has_nothrow_assign,
2917 __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
2918 __has_trivial_constructor, __has_trivial_copy,
2919 __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
2920 __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
2921 __is_pod, __is_polymorphic, __is_union.
2922 * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
2923 (cp_parser_trait_expr): New.
2924 * semantics.c (finish_trait_expr, trait_expr_value
2925 classtype_has_nothrow_copy_or_assign_p): New.
2926 * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
2927 as static.
2928 * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
2929 * class.c (check_bases, check_field_decl, check_bases_and_members):
2930 Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
2931 * pt.c (uses_template_parms, tsubst_copy_and_build,
2932 value_dependent_expression_p, type_dependent_expression_p): Deal with
2933 TRAIT_EXPR.
2934 * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
2935
2936 2007-03-29 Richard Guenther <rguenther@suse.de>
2937
2938 * tree.c (cp_walk_subtrees): Do not set input_location.
2939
2940 2007-03-28 Simon Martin <simartin@users.sourceforge.net>
2941
2942 PR c++/29077
2943 * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
2944 destructor.
2945
2946 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2947
2948 * parser.c (struct cp_parser): Update comment for
2949 greater_than_is_operator_p.
2950 (cp_parser_primary_expression): In C++0x mode, a cast operator can
2951 be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
2952 (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
2953 !GREATER_THAN_IS_OPERATOR_P.
2954 (cp_parser_binary_expression): When -Wc++0x-compat, warn about
2955 `>>' operators that will become two `>' tokens in C++0x.
2956 (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
2957 mode, allowing it to terminate default arguments.
2958 (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
2959 `>>' like two consecutive `>' tokens.
2960 (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
2961 (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
2962 ends a template argument.
2963
2964 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2965
2966 * decl.c (redeclaration_error_message): Complain when redeclaring
2967 a friend function with default template arguments (C++0x mode only).
2968 * cp-tree.h (check_default_tmpl_args): Declare.
2969 * pt.c (check_default_tmpl_args): In C++0x mode, permit default
2970 template arguments in function templates. Add support for checking
2971 the default template arguments of friend templates.
2972 (push_template_decl_real): Fix call to check_default_tmpl_args.
2973 (type_unification_real): If a template parameter has not been
2974 deduced but provides a default template argument, substitute into
2975 that default template argument.
2976 * parser.c (cp_parser_init_declarator): When declaring (but not
2977 defining!) a function template in C++0x mode, check for default
2978 template arguments.
2979
2980 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2981
2982 PR c++/29993
2983 * decl.c (grokdeclarator): Deal with cv-qualified function type
2984 typedefs in the same way for member and non-member functions.
2985
2986 2007-03-26 Dirk Mueller <dmueller@suse.de>
2987
2988 * parser.c (cp_parser_member_declaration): Pedwarn
2989 about stray semicolons after member declarations.
2990
2991 2007-03-26 Paolo Carlini <pcarlini@suse.de>
2992
2993 PR c++/30500
2994 * pt.c (instantiate_decl): Set in_system_header.
2995
2996 2007-03-22 Mark Mitchell <mark@codesourcery.com>
2997
2998 * cp-tree.h (current_tempalte_parms): Improve documentation.
2999 * pt.c (current_template_args): Likewise.
3000
3001 PR c++/30863
3002 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
3003 not consume tokens when failing.
3004
3005 2007-03-22 Jim Wilson <wilson@specifix.com>
3006 Mark Mitchell <mark@codesourcery.com>
3007
3008 PR c++/31273
3009 * call.c (standard_conversion): Use type_decays_to. Keep FCODE
3010 consistent with FROM.
3011
3012 2007-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
3013
3014 * error.c (dump_expr): Handle dependent names that designate types.
3015 * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
3016
3017 2007-03-17 Kazu Hirata <kazu@codesourcery.com>
3018
3019 * cp-tree.def, parser.c, pt.c: Fix comment typos.
3020
3021 2007-03-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3022
3023 * cvt.c (cp_convert_and_check) : Define.
3024 * cp-tree.h (cp_convert_and_check): Declare.
3025 * call.c (convert_conversion_warnings): Rename to
3026 conversion_null_warnings. The warning for floating-point to
3027 integer is handled by convert_and_check in convert_like_real.
3028 (convert_like_real): convert_conversion_warnings was renamed as
3029 conversion_null_warnings.
3030 * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
3031 overflow and changes of value during conversion.
3032
3033 2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3034
3035 PR c++/30891
3036 * parser.c (cp_parser_statement): If 'namespace' is found, this
3037 only can be a namespace alias definition, so parse it now.
3038 (cp_parser_namespace_alias_definition): if we find an open brace
3039 instead of '=', then this is actually a misplaced namespace
3040 definition.
3041
3042 2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3043
3044 PR c++/24924
3045 * decl.c (cxx_init_decl_processing): Move command-line options
3046 processing to c-opts.c.
3047
3048 2007-03-15 Douglas Gregor <doug.gregor@gmail.com>
3049
3050 * ptree.c (cxx_print_type): Use formatting markup for integers
3051 when printing template parameter index/level/orig level.
3052 (cxx_print_xnode): Ditto.
3053 * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
3054 (struct template_parm_index_s): Remove the PARAMETER_PACK member.
3055 Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
3056 HOST_WIDE_INTs.
3057 (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
3058 rather than a HOST_WIDE_INT.
3059 Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
3060 NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
3061 better bit-packing.
3062 (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
3063 RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
3064 IN_BASE_INITIALIZER bool bitfields.
3065 (struct cp_declarator): Make KIND a 4-bit field. Make
3066 PARAMETER_PACK_P a bool bitfield just after KIND.
3067 * pt.c (uses_parameter_packs): Destroy the pointer set.
3068 (make_pack_expansion): Ditto.
3069 (check_for_bare_parameter_packs): Ditto.
3070 * name-lookup.c (push_to_top_level): Make need_pop a bool value.
3071
3072 2007-03-14 Andrew Pinski <andrew_pinski@playstation.sony.com>
3073
3074 PR c++/31165
3075 * call.c (convert_default_arg): Instead of copying the node,
3076 unshare it.
3077
3078 2007-03-15 Dirk Mueller <dmueller@suse.de>
3079
3080 PR c++/30860
3081 * call.c (convert_conversion_warnings): New..
3082 (convert_like_real): .. factored out from here.
3083 (convert_conversion_warnings): Add warning about
3084 false being converted to NULL in argument passing.
3085
3086 2007-03-14 Dirk Mueller <dmueller@suse.de>
3087
3088 * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
3089 (finish_do_body): Warn about empty body in do/while statement.
3090
3091 2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3092
3093 * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
3094
3095 2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3096
3097 PR c/21438
3098 * typeck.c (build_binary_op): Call warn_for_div_zero instead of
3099 warning.
3100
3101 2007-03-13 Alexandre Oliva <aoliva@redhat.com>
3102
3103 * cp/repo.c (init_repo): Initialize random_seed saved options.
3104 (finish_repo): Adjust.
3105
3106 2007-03-13 Mark Mitchell <mark@codesourcery.com>
3107
3108 PR bootstrap/30899
3109 * Make-lang.in (doc/g++.1): Use $< to specify the location from
3110 which to copy.
3111
3112 2007-03-12 Seongbae Park <seongbae.park@gmail.com>
3113
3114 * decl.c (compute_array_index_type): New warning flag warn_vla.
3115
3116 2007-03-12 Mark Mitchell <mark@codesourcery.com>
3117
3118 PR c++/30108
3119 * call.c (convert_default_arg): Copy non-constant arguments.
3120
3121 2007-03-11 Mark Mitchell <mark@codesourcery.com>
3122
3123 PR c++/31038
3124 * parser.c (cp_parser_postfix_expression): Disallow compound
3125 literals in constant expressions.
3126
3127 PR c++/30328
3128 * semantics.c (finish_typeof): Use unlowered_expr_type.
3129
3130 2007-03-10 Mark Mitchell <mark@codesourcery.com>
3131
3132 PR c++/30274
3133 * cp-tree.h (unlowered_expr_type): New function.
3134 * typeck.c (is_bitfield_expr_with_lowered_type): Handle
3135 COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
3136 (unlowered_expr_type): New function.
3137 (build_unary_op): Disallow predecrements of bool bitfields.
3138 * call.c (build_conditional_expr): Use unlowered_expr_type.
3139 * pt.c (type_unification_real): Likewise.
3140
3141 2007-03-09 Douglas Gregor <doug.gregor@gmail.com>
3142
3143 PR c++/20599
3144 * typeck.c (check_return_expr): Check for bare parameter packs.
3145 (comptypes): Compare template parameter packs and
3146 type pack expansions.
3147 * decl.c (grokdeclarator): Deal with the declaration of function
3148 parameter packs.
3149 (grokparms): Verify that the (optional) function parameter pack is
3150 at the end of the parameter list.
3151 (xref_basetypes): Handle pack expansions in the base class.
3152 (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
3153 * cp-tree.def (TYPE_ARGUMENT_PACK): New.
3154 (NONTYPE_ARGUMENT_PACK): New.
3155 (TYPE_PACK_EXPANSION): New.
3156 (EXPR_PACK_EXPANSION): New.
3157 (ARGUMENT_PACK_SELECT): New.
3158 * cp-objcp-common.c (cp_tree_size): Compute size of
3159 (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
3160 ARGUMENT_PACK_SELECT.
3161 * error.c (dump_template_argument): Print template argument packs.
3162 (dump_template_argument_list): Ditto.
3163 (dump_template_parameter): Dump `...' for template type parameter
3164 packs.
3165 (dump_type): Dump TYPE_PACK_EXPANSION nodes.
3166 (dump_parameters): Print function parameter packs.
3167 (dump_template_parms): Print template argument packs.
3168 (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
3169 (maybe_warn_variadic_templates): New.
3170 * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
3171 * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
3172 NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
3173 CAST_EXPR.
3174 * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
3175 (write_template_arg): Write argument packs as separate arguments.
3176 * cp-tree.h (struct template_parm_index_s): Add flag that
3177 indicates that the template parameter is actually a parameter
3178 pack.
3179 (struct tree_argument_pack_select): New.
3180 (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
3181 (union lang_tree_node): Add argument_pack_select.
3182 (FUNCTION_PARAMETER_PACK_P): New.
3183 (PACK_EXPANSION_P): New.
3184 (PACK_EXPANSION_PATTERN): New.
3185 (SET_PACK_EXPANSION_PATTERN): New.
3186 (PACK_EXPANSION_PARAMETER_PACKS): New.
3187 (ARGUMENT_PACK_P): New.
3188 (ARGUMENT_PACK_ARGS): New.
3189 (SET_ARGUMENT_PACK_ARGS): New.
3190 (ARGUMENT_PACK_INCOMPLETE_P): New.
3191 (ARGUMENT_PACK_EXPLICIT_ARGS): New.
3192 (TEMPLATE_PARM_PARAMETER_PACK): New.
3193 (TEMPLATE_TYPE_PARAMETER_PACK): New.
3194 (ARGUMENT_PACK_SELECT_FROM_PACK): New.
3195 (ARGUMENT_PACK_SELECT_INDEX): New.
3196 (ARGUMENT_PACK_SELECT_ARG): New.
3197 (struct cp_declarator): Add parameter_pack_p flag.
3198 (maybe_warn_variadic_templates): Declare.
3199 (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
3200 indicate a template parameter pack.
3201 (uses_parameter_packs): Declare.
3202 (template_parameter_pack_p): Declare.
3203 (template_parms_variadic_p): Declare.
3204 (make_pack_expansion): Declare.
3205 (check_for_bare_parameter_packs): Declare.
3206 * cxx-pretty-print.c (pp_cxx_unary_expression): Print
3207 sizeof... expressions.
3208 (pp_cxx_expression): Print pack expansions and non-type argument
3209 packs.
3210 (pp_cxx_exception_specification): Print pack expansions.
3211 (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
3212 (pp_cxx_ctor_initializer): Print pack expansions.
3213 (pp_cxx_type_id): Print pack expansions.
3214 (pp_cxx_template_argument_list): Print argument packs.
3215 (pp_cxx_template_parameter): Print ellipsis for template parameter
3216 packs.
3217 * pt.c (comp_template_parms): Compare template parameter packs.
3218 (template_parameter_pack_p): New.
3219 (template_parms_variadic_p): New.
3220 (template_args_variadic_p): New.
3221 (make_ith_pack_parameter_name): New.
3222 (struct find_parameter_pack_data): New.
3223 (find_parameter_packs_r): New.
3224 (uses_parameter_packs): New.
3225 (make_pack_expansion): New.
3226 (check_for_bare_parameter_packs): New.
3227 (expand_template_argument_pack): New.
3228 (reduce_template_parm_level): Propagate parameter pack flag.
3229 (process_template_parm): Add is_parameter_pack parameter to state
3230 when the parameter is actually a parameter pack. Create template
3231 parameter packs when is_parameter_pack is true.
3232 (current_template_args): The argument for a template parameter
3233 pack is an argument pack containing a single pack expansion.
3234 (process_partial_specialization): When checking that non-type
3235 argument expressions do not involve template parameters, loop over
3236 the arguments in argument packs separately.
3237 (push_template_decl_real): Check that the type of the declaration
3238 does not have any bare parameter packs. Check that primary
3239 templates have no more than one parameter pack, and that it comes
3240 at the end of the template parameter list.
3241 (convert_template_argument): Handle coercions for pack expansion
3242 expressions by coercing the pattern then rebuilding the expansion.
3243 (coerce_template_parms): When coercing the arguments for a
3244 variadic template, pack "extra" arguments into an argument pack.
3245 (coerce_template_template_parms): Cannot coerce between parameter
3246 packs and non-pack parameters.
3247 (template_args_equal): Compare PACK_EXPANSION_P expressions.
3248 (comp_template_args): Expand all template arguments packs before
3249 comparing template argument lists.
3250 (mangle_class_name_for_template): Make argument packs as separate
3251 template arguments.
3252 (for_each_template_parm_r): No need to handle BASELINK.
3253 (instantiate_class_template): Handle pack expansions in the base
3254 class list.
3255 (tsubst_pack_expansion): New.
3256 (tsubst_template_args): Handle substitutions of argument packs and
3257 pack expansion into template argument lists.
3258 (tsubst_decl): Expand function parameter packs into separate
3259 function parameters.
3260 (tsubst_arg_types): Expand a type pack expansion into separate
3261 argument types.
3262 (tsubst_exception_specification): Handle pack expansions in
3263 exception specifiers.
3264 (tsubst): See through ARGUMENT_PACK_SELECT arguments when
3265 replacing a template parameter with its argument. If we encounter
3266 a substitution for an argument pack, just return the parameter
3267 itself.
3268 (tsubst_copy): sizeof(X...) returns the number of elements in
3269 parameter pack X. See through ARGUMENT_PACK_SELECT when the
3270 PARM_DECL is a parameter pack.
3271 (tsubst_expr): Expression pack expansions and argument packs
3272 cannot show up here; they will all be handled through function
3273 calls, sizeof, and template argument lists.
3274 (tsubst_copy_and_build): sizeof(X...) returns the number of
3275 elements in parameter pack X. Handle pack expansions in TREE_LIST
3276 and CONSTRUCTOR nodes.
3277 (fn_type_unification): Handle "incomplete" explicit template
3278 argument lists that specify some of the arguments for a template
3279 parameter pack.
3280 (type_unification_real): Unify arguments against pack expansions.
3281 (template_parm_level_and_index): New, helper function.
3282 (unify_pack_expansion): New.
3283 (unify): Unify argument packs on an argument-by-argument basis,
3284 handling variadic argument packs as well.
3285 (more_specialized_fn): Handle unification of function parameter
3286 packs. All things being equal, prefer non-variadic function
3287 templates to variadic function templates.
3288 (more_specialized_class): Prefer the variadic class template
3289 partial specialization that binds fewer arguments to a parameter
3290 pack.
3291 (regenerate_decl_from_template): Expand function parameter packs
3292 into separate parameters.
3293 (instantiate_decl): Ditto.
3294 (tsubst_initializer_list): Handle pack expansions for base-class
3295 initializers.
3296 (dependent_type_p_r): Determine dependent types in argument packs
3297 and pack expansions.
3298 (value_dependent_expression_p): Determine value-dependence of
3299 non-type argument packs.
3300 (dependent_template_arg_p): Handle argument packs.
3301 * semantics.c (finish_cond): Check for bare parameter packs.
3302 (finish_expr_stmt): Ditto.
3303 (finish_for_expr): Ditto.
3304 (finish_switch_cond): Ditto.
3305 (finish_mem_initializers): Ditto.
3306 * name-lookup.c (arg_assoc_type): Handle pack expansions and
3307 argument packs.
3308 * decl2.c (cp_build_parm_decl): Mark function parameter packs.
3309 * parser.c (make_declarator): Declarator is not an expansion.
3310 (make_pointer_declarator): Transfer parameter pack flag to outer
3311 declarator.
3312 (make_reference_declarator): Ditto.
3313 (make_ptrmem_declarator): Ditto.
3314 (make_call_declarator): Ditto.
3315 (make_array_declarator): Ditto.
3316 (cp_parser_postfix_expression): Allow pack expansion expressions
3317 in the argument list for a call expression.
3318 (cp_parser_parenthesized_expression_list): Add new parameter
3319 ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
3320 into separate arguments."
3321 (cp_parser_new_placement): Allow pack expansion expressions.
3322 (cp_parser_new_initializer): Ditto.
3323 (cp_parser_mem_initializer_list): Allow ellipsis to create a
3324 base-class initializer expansion.
3325 (cp_parser_mem_initializer): Ditto.
3326 (cp_parser_template_parameter_list): Keep track of whether the
3327 template parameter is a template parameter pack.
3328 (cp_parser_template_parameter): Parse the ellipsis to indicate a
3329 template parameter pack.
3330 (cp_parser_type_parameter): Ditto.
3331 (cp_parser_template_argument_list): Parse the ellipsis to indicate
3332 a pack expansion.
3333 (cp_parser_direct_declarator): Parse the ellipsis to indicate that
3334 this declarator is a parameter pack.
3335 (cp_parser_parameter_declaration): The ellipsis does not end the
3336 parameter declaration, because it might be a parameter pack. Parse
3337 the ellipsis to indicate a parameter pack.
3338 (cp_parser_initializer): Allow pack expansions.
3339 (cp_parser_initializer_list): Allow ellipsis to create an
3340 initializer expansion.
3341 (cp_parser_base_clause): Allow ellipsis to create a base specifier
3342 expansion.
3343 (cp_parser_type_id_list): Allow ellipsis to create an exception
3344 specifier expansion.
3345 (cp_parser_attribute_list): Don't allow pack expansions.
3346 (cp_parser_functional_cast): Allow pack expansions.
3347 (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
3348 compute the length of a parameter pack.
3349 (cp_parser_next_token_ends_template_argument_p): An ellipsis can
3350 end a template argument.
3351 * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
3352 NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
3353 CAST_EXPR.
3354
3355 2007-03-09 Dirk Mueller <dmueller@suse.de>
3356
3357 * cp/call.c (build_new_op): Call warn_logical_operator.
3358
3359 2007-03-08 Volker Reichelt <reichelt@netcologne.de>
3360
3361 PR c++/30852
3362 * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
3363
3364 PR c++/30534
3365 * pt.c (any_template_arguments_need_structural_equality_p):
3366 Robustify.
3367
3368 2007-03-08 Alexandre Oliva <aoliva@redhat.com>
3369
3370 * decl.c (grokdeclarator): Disable warnings for anonymous
3371 bitfields.
3372
3373 2007-03-05 Volker Reichelt <reichelt@netcologne.de>
3374
3375 * typeck2.c (readonly_error): Always emit a hard error.
3376 Remove last argument.
3377 * cp-tree.h (readonly_error): Adjust prototype.
3378 * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
3379 * typeck.c (build_unary_op): Likewise.
3380 (build_modify_expr): Likewise.
3381
3382 2007-03-04 Simon Martin <simartin@users.sourceforge.net>
3383
3384 PR c++/30895
3385 * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
3386
3387 2007-03-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3388
3389 PR c++/15787
3390 * parser.c (struct cp_parser): New IN_IF_STMT.
3391 (cp_parser_statement_seq_opt): Handle an unexpected 'else',
3392 returning if parsing the body of an 'if' statement or issuing an
3393 error and continuing.
3394 (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
3395 body of 'if'.
3396 (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
3397
3398 2007-03-02 Simon Martin <simartin@users.sourceforge.net>
3399
3400 PR c++/28253
3401 * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
3402 for thunks.
3403
3404 2007-03-02 Geoffrey Keating <geoffk@apple.com>
3405
3406 * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
3407 Objective-C++. Don't exit early if -shared-libgcc needs to be
3408 added.
3409
3410 2007-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3411
3412 * typeck.c (common_base_type): Delete unused function.
3413
3414 2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
3415
3416 * Make-lang.in: Add dummy lang.install-pdf target.
3417
3418 2007-03-01 Simon Baldwin <simonb@google.com>
3419
3420 PR c++/23689
3421 * decl.c (check_tag_decl): Added new warning for typedef ignored
3422 when it precedes an otherwise valid non-typedef declaration.
3423
3424 2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
3425
3426 * typeck.c (build_function_call): Store converted arguments
3427 in a stack-allocated array instead of building a list.
3428 (convert_arguments): Store arguments in the array passed in as an
3429 argument, and return the actual number of arguments.
3430 * call.c (build_call): Delete, and replace with...
3431 (build_call_n, build_call_a): New.
3432 (build_op_delete_call): Rewrite to avoid constructing argument lists.
3433 (build_over_call): Store converted arguments in a stack-allocated
3434 array instead of building a list.
3435 (build_cxx_call): Pass arguments in an array instead of as a list.
3436 (build_java_interface_fn_ref): Rewrite to avoid constructing
3437 argument lists.
3438 * tree.h: Update declarations to reflect above changes.
3439 * method.c (use_thunk): Use a stack-allocated array to hold
3440 the arguments instead of a list.
3441 * rtti.c (throw_bad_cast): Update call to cxx_call.
3442 (throw_bad_typeid): Likewise.
3443 (build_dynamic_cast_1): Likewise.
3444 * init.c (build_builtin_delete_call): Use build_call_n.
3445 * decl.c (expand_static_init): Likewise.
3446 * except.c (cp_protect_cleanup_actions): Likewise.
3447 * cp-gimplify.c (genericize_eh_spec_block): Likewise.
3448 (gimplify_must_not_throw_expr): Likewise.
3449 (cxx_omp_apply_fn): Use build_call_a.
3450
3451 2007-02-26 Mark Mitchell <mark@codesourcery.com>
3452
3453 * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
3454 * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
3455
3456 2007-02-25 Mark Mitchell <mark@codesourcery.com>
3457
3458 * cp-tree.h (static_ctors): Remove.
3459 * cp-tree.h (static_dtors): Likewise.
3460 * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
3461 refactoring of tree_map hierarchy.
3462 (decl_shadowed_for_var_insert): Likewise.
3463 * semantics.c (expand_body): Use c_expand_body.
3464 (expand_or_defer_fn): Don't update static_ctors or static_dtors.
3465 * decl2.c (static_ctors): Remove.
3466 (static_dtors): Likewise.
3467 (generate_ctor_or_dtor_function): Pass NULL_TREE to
3468 objc_generate_static_init_call. Do not call static_[cd]tors.
3469 (generate_ctor_and_dtor_functions_for_priority): Do not check for
3470 static_[cd]tors.
3471 (cp_write_global_declarations): Likewise.
3472
3473 2007-02-23 Richard Guenther <rguenther@suse.de>
3474
3475 * class.c (note_name_declared_in_class): Make declaration
3476 changes meaning a pedwarn.
3477
3478 2007-02-22 Michael Matz <matz@suse.de>
3479
3480 PR c++/29433
3481 * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
3482 * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
3483 dump_function_decl): Guard emitting outer scopes by new flag.
3484 * cp-lang.c (cxx_dwarf_name): New function.
3485 (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
3486 * pt.c (classtype_mangled_name, mangle_class_name_for_template):
3487 Remove functions.
3488 (push_template_decl_real, lookup_template_class): Remove calls
3489 to above functions.
3490
3491 2007-02-19 Mark Mitchell <mark@codesourcery.com>
3492
3493 * call.c (build_new_method_call): Ensure that explicit calls of
3494 destructors have type "void".
3495
3496 2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3497
3498 * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
3499 and -Walways-true with -Waddress.
3500 * cvt.c (convert_to_void): Replace unconditional warning with
3501 -Waddress.
3502
3503 2007-02-18 Kazu Hirata <kazu@codesourcery.com>
3504
3505 * decl.c, tree.c: Fix comment typos.
3506
3507 2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
3508
3509 PR C++/30158
3510 * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the
3511 statement expression if we had an error mark node.
3512
3513 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
3514 Brooks Moses <brooks.moses@codesourcery.com>
3515 Lee Millward <lee.millward@codesourcery.com>
3516
3517 * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
3518 Change class to tcc_vl_exp.
3519
3520 * call.c (build_call): Use build_call_list instead
3521 of build3.
3522 (build_over_call): Likewise.
3523 (build_new_method_call): Use build_min_non_dep_call_list
3524 instead of build_min_non_dep.
3525
3526 * error.c (dump_call_expr_args): New function.
3527 (dump_aggr_init_expr_args): New function.
3528 (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them.
3529 Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
3530
3531 * cvt.c (convert_to_void): Use build_call_array instead
3532 of build3; use new AGGR_INIT_EXPR accessor macros.
3533
3534 * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
3535 instead of TREE_CODE_LENGTH.
3536
3537 * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
3538 AGGR_INIT_EXPR accessor macros.
3539
3540 * cp-gimplify.c (cp_gimplify_init_expr): Use
3541 AGGR_INIT_EXPR_SLOT to set the slot operand.
3542
3543 * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
3544 (AGGR_INIT_EXPR_SLOT): New macro.
3545 (AGGR_INIT_EXPR_ARG): New macro.
3546 (aggr_init_expr_nargs): New macro.
3547 (AGGR_INIT_EXPR_ARGP): New macro.
3548 (aggr_init_expr_arg_iterator): New.
3549 (init_aggr_init_expr_arg_iterator): New.
3550 (next_aggr_init_expr_arg): New.
3551 (first_aggr_init_expr_arg): New.
3552 (more_aggr_init_expr_args_p): New.
3553 (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
3554 (stabilize_aggr_init): New declaration.
3555 (build_min_non_dep_call_list): Likewise.
3556
3557 * tree.c (process_aggr_init_operands): New function.
3558 (build_aggr_init_array) New function.
3559 (build_cplus_new): Update to use new CALL_EXPR and
3560 AGGR_INIT_EXPR accessor macros. Replace use of build3 with
3561 build_aggr_init_array.
3562 (build_min_non_dep_call_list) New function.
3563 (build_min_nt): Assert input code parameter is not a variable
3564 length expression class.
3565 (build_min, build_min_non_dep): Likewise.
3566 (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
3567 to check for equality instead of recursing. Handle tcc_vl_exp
3568 tree code classes.
3569 (stabilize_call): Update to only handle CALL_EXPRs, not
3570 AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
3571 (stabilize_aggr_init): New function.
3572 (stabilize_init): Use it.
3573
3574 * cxx-pretty-print.c (pp_cxx_postfix_expression)
3575 <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
3576 AGGR_INIT_EXPR accessor macros and argument iterators.
3577
3578 * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
3579 build_vl_exp. Iterate through the operands, recursively
3580 processing each one.
3581 (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
3582 CALL_EXPR accessor macros.
3583 (value_dependent_expression_p) <default>: Handle tcc_vl_exp
3584 tree code classes. Use TREE_OPERAND_LENGTH instead of
3585 TREE_CODE_LENGTH.
3586
3587 * semantics.c (finish_call_expr): Use build_nt_call_list
3588 instead of build_nt.
3589 (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR
3590 accessor macros. Use build_call_array to construct the
3591 CALL_EXPR node instead of build3
3592
3593 * decl2.c (build_offset_ref_call_from_tree): Use
3594 build_nt_call_list and build_min_non_dep_call_list instead
3595 of build_min_nt and build_min_non_dep.
3596
3597 * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
3598 Use build_nt_call_list instead of build_min_nt.
3599
3600 2007-02-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3601
3602 PR c++/28943
3603 * call.c (build_conditional_expr): Improve error message.
3604
3605 2007-02-13 Dirk Mueller <dmueller@suse.de>
3606
3607 * friend.c (do_friend): Annotate warning about friend
3608 declarations in templates with OPT_Wnon_template_friend.
3609 Convert informal message from warning() to inform().
3610
3611 2007-02-12 Simon Martin <simartin@users.sourceforge.net>
3612 Mark Mitchell <mark@codesourcery.com>
3613
3614 PR c++/14622
3615 * pt.c (do_decl_instantiation): Detect type mismatches in explicit
3616 instantiations for variables.
3617
3618 2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3619
3620 PR middle-end/7651
3621 * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
3622 Check warn_unused_value just once.
3623
3624 2007-02-11 Mark Mitchell <mark@codesourcery.com>
3625
3626 PR c++/26988
3627 * pt.c (determine_specialization): Use skip_artificial_parms_for.
3628 (fn_type_unificiation): Likewise.
3629 (get_bindings): Likewise.
3630
3631 o2007-02-06 Mark Mitchell <mark@codesourcery.com>
3632
3633 PR target/29487
3634 * decl.c (finish_function): Use DECL_REPLACEABLE.
3635 * tree.c (cp_cannot_inline_tree_fn): Likewise.
3636
3637 2007-02-10 Gabriel Dos Reis <gdr@integrable-solutions.net>
3638
3639 * parser.c (cp_parser_primary_expression): Reformat overly long lines.
3640
3641 2007-02-10 Richard Henderson <rth@redhat.com>, Jakub Jelinek <jakub@redhat.com>
3642
3643 * decl.c (grokvardecl): Don't error if !have_tls.
3644 (grokdeclarator): Likewise.
3645 * parser.c (cp_parser_omp_threadprivate): Likewise.
3646
3647 2007-02-07 Jakub Jelinek <jakub@redhat.com>
3648
3649 PR c++/30703
3650 * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
3651 parameters and result decls in omp clauses.
3652 (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
3653 by reference.
3654
3655 2007-02-05 Dirk Mueller <dmueller@suse.de>
3656
3657 PR bootstrap/30510
3658 * parser.c (cp_parser_class_specifier): Always initialize bases.
3659
3660 2007-02-05 Paolo Bonzini <bonzini@gnu.org>
3661
3662 * cp-tree.h (OMP_ATOMIC_CODE): Delete.
3663 (OMP_ATOMIC_DEPENDENT_P): Rewrite.
3664 * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
3665 expressions.
3666 * semantics.c (finish_omp_atomic): Store a whole expression node
3667 in operand 1, and integer_zero_node in operand 0, for dependent
3668 OMP_ATOMIC. Rewrite to make flow easier to understand.
3669
3670 2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
3671
3672 * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
3673
3674 2007-02-04 Kazu Hirata <kazu@codesourcery.com>
3675
3676 * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
3677 parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
3678
3679 2007-02-03 Douglas Gregor <doug.gregor@gmail.com>
3680
3681 * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
3682 keyword warning to -Wc++0x-compat.
3683
3684 2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
3685
3686 * decl.c (grokdeclarator): Update documentation.
3687
3688 2007-02-02 Jakub Jelinek <jakub@redhat.com>
3689
3690 PR c++/30536
3691 * decl.c (grokdeclarator): If __thread is used together with
3692 a storage class other than extern and static, clear thread_p
3693 after issuing diagnostics and fall through to checking the
3694 storage class.
3695
3696 2007-01-30 Roger Sayle <roger@eyesopen.com>
3697
3698 * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
3699 calculating the size of an array (to avoid recursive errors).
3700
3701 2007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3702
3703 PR c++/24745
3704 * typeck.c (build_binary_op): Fix logic for warning. Move warning
3705 to -Wpointer-arith.
3706 * call.c (convert_like_real): Don't warn when converting to
3707 boolean type.
3708
3709 2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3710
3711 * decl.c (pop_label): Replace warning with call to
3712 warn_for_unused_label.
3713
3714 2007-01-28 Andrew Pinski <pinskia@gmail.com>
3715
3716 PR C++/28988
3717 * semantics.c (finish_pseudo_destructor_expr): Check the
3718 destrutor name by calling check_dtor_name.
3719
3720 2007-01-24 Douglas Gregor <dgregor@osl.iu.edu>
3721
3722 * lex.c (D_CPP0X): Rename.
3723 (D_CXX0X): To this.
3724 (reswords): D_CPP0X -> D_CXX0X.
3725 (init_reswords): Ditto.
3726 * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
3727 of C++0x keywords as identifiers.
3728
3729 2007-01-23 Simon Martin <simartin@users.sourceforge.net>
3730
3731 PR c++/27492
3732 * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
3733 function decls.
3734
3735 2007-01-23 Ian Lance Taylor <iant@google.com>
3736
3737 * typeck.c (convert_for_assignment): Only warn about a = b = c
3738 when converting to bool.
3739
3740 2007-01-23 Roger Sayle <roger@eyesopen.com>
3741
3742 * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
3743 TREE_OVERFLOW.
3744 * typeck.c (ignore_overflows): Remove the remaining uses of
3745 TREE_CONSTANT_OVERFLOW.
3746
3747 2007-01-20 Jan Hubicka <jh@suse.cz>
3748
3749 * decl2.c (start_objects, start_static_storage_duration_function):
3750 Do not make the functions uninlinable.
3751
3752 2007-01-17 Ian Lance Taylor <iant@google.com>
3753
3754 * class.c (add_method): Call VEC_reserve_exact rather than passing
3755 a negative size to VEC_reserve.
3756
3757 2007-01-11 Simon Martin <simartin@users.sourceforge.net>
3758
3759 PR c++/29573
3760 * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
3761
3762 2007-01-10 Mark Mitchell <mark@codesourcery.com>
3763
3764 PR c++/28999
3765 * decl.c (make_typename_type): If the qualified name is not a
3766 type, issue an error.
3767 * parser.c (cp_parser_elaborated_type_specifier): Fix comment
3768 formatting.
3769
3770 2007-01-08 Geoffrey Keating <geoffk@apple.com>
3771
3772 * rtti.c: Include target.h.
3773 (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
3774 don't emit typeinfo for fundamental types as weak.
3775 * Make-lang.in (cp/rtti.o): Update and correct dependencies.
3776
3777 2007-01-08 Richard Guenther <rguenther@suse.de>
3778
3779 * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
3780
3781 2007-01-08 Mark Shinwell <shinwell@codesourcery.com>
3782
3783 * call.c (standard_conversion): Pass flag to
3784 vector_types_convertible_p to disallow emission of note.
3785 * typeck.c (convert_for_assignment): Pass flag to
3786 vector_types_convertible_p to allow emission of note.
3787 (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
3788 to disallow emission of note.
3789
3790 2007-01-07 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3791
3792 PR c++/28986
3793 * typeck.c (build_binary_op): Call overflow_warning if
3794 TREE_OVERFLOW_P is true for the result and not for any of the
3795 operands.
3796
3797 2007-01-06 Lee Millward <lee.millward@codesourcery.com>
3798
3799 PR c++/19439
3800 * class.c (add_method): Don't wait until template
3801 instantiation time to complain about duplicate methods.
3802
3803 2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3804
3805 PR c/19978
3806 * semantics.c (finish_unary_op_expr): Warn only if result
3807 overflowed and operands did not.
3808
3809 2007-01-05 Ian Lance Taylor <iant@google.com>
3810
3811 * typeck.c (build_binary_op): Warn about comparing a non-weak
3812 address to NULL.
3813
3814 2007-01-05 Douglas Gregor <doug.gregor@gmail.com>
3815
3816 * pt.c (tsubst): Propagate the need for structural equality checks
3817 when reducing the level of template parameters.
3818
3819 2007-01-03 Kazu Hirata <kazu@codesourcery.com>
3820
3821 * pt.c: Fix a comment typo.
3822
3823 2007-01-02 Ian Lance Taylor <iant@google.com>
3824
3825 * semantics.c (maybe_convert_cond): Optionally warn when using an
3826 assignment as a condition.
3827 * typeck.c (convert_for_assignment): Optionally warn about
3828 assigning the result of an assignment to a bool.
3829
3830 2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
3831
3832 * pt.c (canonical_template_parms): Correct typo in comment.
3833
3834 2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
3835
3836 * typeck.c (structural_comptypes): Renamed from "comptypes".
3837 (comptypes): Use canonical type information to perform fast type
3838 comparison. When VERIFY_CANONICAL_TYPES, verify that the
3839 canonical type comparison returns the same results as we would see
3840 from the current, structural check. Support COMPARE_STRUCTURAL
3841 when we need structural checks.
3842 * decl.c (typename_compare): Fix comment.
3843 (build_typename_type): TYPENAME_TYPE nodes require structural
3844 equality checks, because they resolve different based on the
3845 current class type.
3846 (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
3847 require structural equality checks (for now).
3848 (build_ptrmemfunc_type): Build the canonical pointer to member
3849 function type.
3850 (compute_array_index_type): Whenever we build a new index type
3851 to represent the size of an array in a template, we need to mark
3852 this index type as requiring structural equality. This goes for
3853 arrays with value-dependent sizes with the current ABI, or all
3854 arrays with ABI-1.
3855 * tree.c (cplus_array_hash): New.
3856 (struct cplus_array_info): New.
3857 (cplus_array_compare): New.
3858 (cplus_array_htab): New.
3859 (build_cplus_array_type_1): Use a hash table to cache the array
3860 types we build. Build the canonical array type for each array
3861 type.
3862 (cp_build_qualified_type_real): When building a cv-qualified array
3863 type, use the hash table of array types and build canonical array
3864 types as necessary.
3865 (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
3866 use structural equality (for now).
3867 * cp-tree.h (COMPARE_STRUCTURAL): New.
3868 * pt.c (canonical_template_parms): New.
3869 (canonical_type_parameter): New.
3870 (process_template_parm): Find the canonical type parameter.
3871 (lookup_template_class): When we have named the primary template
3872 type, set the canonical type for our template class to the primary
3873 template type. If any of the template arguments need structural
3874 equality checks, the template class needs structural equality
3875 checks.
3876 (tsubst): When reducing the level of a template template
3877 parameter, we require structural equality tests for the resulting
3878 parameter because its template parameters have not had their types
3879 canonicalized. When reducing a template type parameter, find the
3880 canonical reduced type parameter.
3881 (any_template_arguments_need_structural_equality_p): New.
3882