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