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