class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
[gcc.git] / gcc / cp / ChangeLog
1 2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2
3 * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
4
5 2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
6
7 PR c/21438
8 * typeck.c (build_binary_op): Call warn_for_div_zero instead of
9 warning.
10
11 2007-03-13 Alexandre Oliva <aoliva@redhat.com>
12
13 * cp/repo.c (init_repo): Initialize random_seed saved options.
14 (finish_repo): Adjust.
15
16 2007-03-13 Mark Mitchell <mark@codesourcery.com>
17
18 PR bootstrap/30899
19 * Make-lang.in (doc/g++.1): Use $< to specify the location from
20 which to copy.
21
22 2007-03-12 Seongbae Park <seongbae.park@gmail.com>
23
24 * decl.c (compute_array_index_type): New warning flag warn_vla.
25
26 2007-03-12 Mark Mitchell <mark@codesourcery.com>
27
28 PR c++/30108
29 * call.c (convert_default_arg): Copy non-constant arguments.
30
31 2007-03-11 Mark Mitchell <mark@codesourcery.com>
32
33 PR c++/31038
34 * parser.c (cp_parser_postfix_expression): Disallow compound
35 literals in constant expressions.
36
37 PR c++/30328
38 * semantics.c (finish_typeof): Use unlowered_expr_type.
39
40 2007-03-10 Mark Mitchell <mark@codesourcery.com>
41
42 PR c++/30274
43 * cp-tree.h (unlowered_expr_type): New function.
44 * typeck.c (is_bitfield_expr_with_lowered_type): Handle
45 COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
46 (unlowered_expr_type): New function.
47 (build_unary_op): Disallow predecrements of bool bitfields.
48 * call.c (build_conditional_expr): Use unlowered_expr_type.
49 * pt.c (type_unification_real): Likewise.
50
51 2007-03-09 Douglas Gregor <doug.gregor@gmail.com>
52
53 PR c++/20599
54 * typeck.c (check_return_expr): Check for bare parameter packs.
55 (comptypes): Compare template parameter packs and
56 type pack expansions.
57 * decl.c (grokdeclarator): Deal with the declaration of function
58 parameter packs.
59 (grokparms): Verify that the (optional) function parameter pack is
60 at the end of the parameter list.
61 (xref_basetypes): Handle pack expansions in the base class.
62 (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
63 * cp-tree.def (TYPE_ARGUMENT_PACK): New.
64 (NONTYPE_ARGUMENT_PACK): New.
65 (TYPE_PACK_EXPANSION): New.
66 (EXPR_PACK_EXPANSION): New.
67 (ARGUMENT_PACK_SELECT): New.
68 * cp-objcp-common.c (cp_tree_size): Compute size of
69 (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
70 ARGUMENT_PACK_SELECT.
71 * error.c (dump_template_argument): Print template argument packs.
72 (dump_template_argument_list): Ditto.
73 (dump_template_parameter): Dump `...' for template type parameter
74 packs.
75 (dump_type): Dump TYPE_PACK_EXPANSION nodes.
76 (dump_parameters): Print function parameter packs.
77 (dump_template_parms): Print template argument packs.
78 (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
79 (maybe_warn_variadic_templates): New.
80 * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
81 * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
82 NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
83 CAST_EXPR.
84 * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
85 (write_template_arg): Write argument packs as separate arguments.
86 * cp-tree.h (struct template_parm_index_s): Add flag that
87 indicates that the template parameter is actually a parameter
88 pack.
89 (struct tree_argument_pack_select): New.
90 (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
91 (union lang_tree_node): Add argument_pack_select.
92 (FUNCTION_PARAMETER_PACK_P): New.
93 (PACK_EXPANSION_P): New.
94 (PACK_EXPANSION_PATTERN): New.
95 (SET_PACK_EXPANSION_PATTERN): New.
96 (PACK_EXPANSION_PARAMETER_PACKS): New.
97 (ARGUMENT_PACK_P): New.
98 (ARGUMENT_PACK_ARGS): New.
99 (SET_ARGUMENT_PACK_ARGS): New.
100 (ARGUMENT_PACK_INCOMPLETE_P): New.
101 (ARGUMENT_PACK_EXPLICIT_ARGS): New.
102 (TEMPLATE_PARM_PARAMETER_PACK): New.
103 (TEMPLATE_TYPE_PARAMETER_PACK): New.
104 (ARGUMENT_PACK_SELECT_FROM_PACK): New.
105 (ARGUMENT_PACK_SELECT_INDEX): New.
106 (ARGUMENT_PACK_SELECT_ARG): New.
107 (struct cp_declarator): Add parameter_pack_p flag.
108 (maybe_warn_variadic_templates): Declare.
109 (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
110 indicate a template parameter pack.
111 (uses_parameter_packs): Declare.
112 (template_parameter_pack_p): Declare.
113 (template_parms_variadic_p): Declare.
114 (make_pack_expansion): Declare.
115 (check_for_bare_parameter_packs): Declare.
116 * cxx-pretty-print.c (pp_cxx_unary_expression): Print
117 sizeof... expressions.
118 (pp_cxx_expression): Print pack expansions and non-type argument
119 packs.
120 (pp_cxx_exception_specification): Print pack expansions.
121 (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
122 (pp_cxx_ctor_initializer): Print pack expansions.
123 (pp_cxx_type_id): Print pack expansions.
124 (pp_cxx_template_argument_list): Print argument packs.
125 (pp_cxx_template_parameter): Print ellipsis for template parameter
126 packs.
127 * pt.c (comp_template_parms): Compare template parameter packs.
128 (template_parameter_pack_p): New.
129 (template_parms_variadic_p): New.
130 (template_args_variadic_p): New.
131 (make_ith_pack_parameter_name): New.
132 (struct find_parameter_pack_data): New.
133 (find_parameter_packs_r): New.
134 (uses_parameter_packs): New.
135 (make_pack_expansion): New.
136 (check_for_bare_parameter_packs): New.
137 (expand_template_argument_pack): New.
138 (reduce_template_parm_level): Propagate parameter pack flag.
139 (process_template_parm): Add is_parameter_pack parameter to state
140 when the parameter is actually a parameter pack. Create template
141 parameter packs when is_parameter_pack is true.
142 (current_template_args): The argument for a template parameter
143 pack is an argument pack containing a single pack expansion.
144 (process_partial_specialization): When checking that non-type
145 argument expressions do not involve template parameters, loop over
146 the arguments in argument packs separately.
147 (push_template_decl_real): Check that the type of the declaration
148 does not have any bare parameter packs. Check that primary
149 templates have no more than one parameter pack, and that it comes
150 at the end of the template parameter list.
151 (convert_template_argument): Handle coercions for pack expansion
152 expressions by coercing the pattern then rebuilding the expansion.
153 (coerce_template_parms): When coercing the arguments for a
154 variadic template, pack "extra" arguments into an argument pack.
155 (coerce_template_template_parms): Cannot coerce between parameter
156 packs and non-pack parameters.
157 (template_args_equal): Compare PACK_EXPANSION_P expressions.
158 (comp_template_args): Expand all template arguments packs before
159 comparing template argument lists.
160 (mangle_class_name_for_template): Make argument packs as separate
161 template arguments.
162 (for_each_template_parm_r): No need to handle BASELINK.
163 (instantiate_class_template): Handle pack expansions in the base
164 class list.
165 (tsubst_pack_expansion): New.
166 (tsubst_template_args): Handle substitutions of argument packs and
167 pack expansion into template argument lists.
168 (tsubst_decl): Expand function parameter packs into separate
169 function parameters.
170 (tsubst_arg_types): Expand a type pack expansion into separate
171 argument types.
172 (tsubst_exception_specification): Handle pack expansions in
173 exception specifiers.
174 (tsubst): See through ARGUMENT_PACK_SELECT arguments when
175 replacing a template parameter with its argument. If we encounter
176 a substitution for an argument pack, just return the parameter
177 itself.
178 (tsubst_copy): sizeof(X...) returns the number of elements in
179 parameter pack X. See through ARGUMENT_PACK_SELECT when the
180 PARM_DECL is a parameter pack.
181 (tsubst_expr): Expression pack expansions and argument packs
182 cannot show up here; they will all be handled through function
183 calls, sizeof, and template argument lists.
184 (tsubst_copy_and_build): sizeof(X...) returns the number of
185 elements in parameter pack X. Handle pack expansions in TREE_LIST
186 and CONSTRUCTOR nodes.
187 (fn_type_unification): Handle "incomplete" explicit template
188 argument lists that specify some of the arguments for a template
189 parameter pack.
190 (type_unification_real): Unify arguments against pack expansions.
191 (template_parm_level_and_index): New, helper function.
192 (unify_pack_expansion): New.
193 (unify): Unify argument packs on an argument-by-argument basis,
194 handling variadic argument packs as well.
195 (more_specialized_fn): Handle unification of function parameter
196 packs. All things being equal, prefer non-variadic function
197 templates to variadic function templates.
198 (more_specialized_class): Prefer the variadic class template
199 partial specialization that binds fewer arguments to a parameter
200 pack.
201 (regenerate_decl_from_template): Expand function parameter packs
202 into separate parameters.
203 (instantiate_decl): Ditto.
204 (tsubst_initializer_list): Handle pack expansions for base-class
205 initializers.
206 (dependent_type_p_r): Determine dependent types in argument packs
207 and pack expansions.
208 (value_dependent_expression_p): Determine value-dependence of
209 non-type argument packs.
210 (dependent_template_arg_p): Handle argument packs.
211 * semantics.c (finish_cond): Check for bare parameter packs.
212 (finish_expr_stmt): Ditto.
213 (finish_for_expr): Ditto.
214 (finish_switch_cond): Ditto.
215 (finish_mem_initializers): Ditto.
216 * name-lookup.c (arg_assoc_type): Handle pack expansions and
217 argument packs.
218 * decl2.c (cp_build_parm_decl): Mark function parameter packs.
219 * parser.c (make_declarator): Declarator is not an expansion.
220 (make_pointer_declarator): Transfer parameter pack flag to outer
221 declarator.
222 (make_reference_declarator): Ditto.
223 (make_ptrmem_declarator): Ditto.
224 (make_call_declarator): Ditto.
225 (make_array_declarator): Ditto.
226 (cp_parser_postfix_expression): Allow pack expansion expressions
227 in the argument list for a call expression.
228 (cp_parser_parenthesized_expression_list): Add new parameter
229 ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
230 into separate arguments."
231 (cp_parser_new_placement): Allow pack expansion expressions.
232 (cp_parser_new_initializer): Ditto.
233 (cp_parser_mem_initializer_list): Allow ellipsis to create a
234 base-class initializer expansion.
235 (cp_parser_mem_initializer): Ditto.
236 (cp_parser_template_parameter_list): Keep track of whether the
237 template parameter is a template parameter pack.
238 (cp_parser_template_parameter): Parse the ellipsis to indicate a
239 template parameter pack.
240 (cp_parser_type_parameter): Ditto.
241 (cp_parser_template_argument_list): Parse the ellipsis to indicate
242 a pack expansion.
243 (cp_parser_direct_declarator): Parse the ellipsis to indicate that
244 this declarator is a parameter pack.
245 (cp_parser_parameter_declaration): The ellipsis does not end the
246 parameter declaration, because it might be a parameter pack. Parse
247 the ellipsis to indicate a parameter pack.
248 (cp_parser_initializer): Allow pack expansions.
249 (cp_parser_initializer_list): Allow ellipsis to create an
250 initializer expansion.
251 (cp_parser_base_clause): Allow ellipsis to create a base specifier
252 expansion.
253 (cp_parser_type_id_list): Allow ellipsis to create an exception
254 specifier expansion.
255 (cp_parser_attribute_list): Don't allow pack expansions.
256 (cp_parser_functional_cast): Allow pack expansions.
257 (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
258 compute the length of a parameter pack.
259 (cp_parser_next_token_ends_template_argument_p): An ellipsis can
260 end a template argument.
261 * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
262 NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
263 CAST_EXPR.
264
265 2007-03-09 Dirk Mueller <dmueller@suse.de>
266
267 * cp/call.c (build_new_op): Call warn_logical_operator.
268
269 2007-03-08 Volker Reichelt <reichelt@netcologne.de>
270
271 PR c++/30852
272 * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
273
274 PR c++/30534
275 * pt.c (any_template_arguments_need_structural_equality_p):
276 Robustify.
277
278 2007-03-08 Alexandre Oliva <aoliva@redhat.com>
279
280 * decl.c (grokdeclarator): Disable warnings for anonymous
281 bitfields.
282
283 2007-03-05 Volker Reichelt <reichelt@netcologne.de>
284
285 * typeck2.c (readonly_error): Always emit a hard error.
286 Remove last argument.
287 * cp-tree.h (readonly_error): Adjust prototype.
288 * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
289 * typeck.c (build_unary_op): Likewise.
290 (build_modify_expr): Likewise.
291
292 2007-03-04 Simon Martin <simartin@users.sourceforge.net>
293
294 PR c++/30895
295 * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
296
297 2007-03-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
298
299 PR c++/15787
300 * parser.c (struct cp_parser): New IN_IF_STMT.
301 (cp_parser_statement_seq_opt): Handle an unexpected 'else',
302 returning if parsing the body of an 'if' statement or issuing an
303 error and continuing.
304 (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
305 body of 'if'.
306 (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
307
308 2007-03-02 Simon Martin <simartin@users.sourceforge.net>
309
310 PR c++/28253
311 * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
312 for thunks.
313
314 2007-03-02 Geoffrey Keating <geoffk@apple.com>
315
316 * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
317 Objective-C++. Don't exit early if -shared-libgcc needs to be
318 added.
319
320 2007-03-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
321
322 * typeck.c (common_base_type): Delete unused function.
323
324 2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
325
326 * Make-lang.in: Add dummy lang.install-pdf target.
327
328 2007-03-01 Simon Baldwin <simonb@google.com>
329
330 PR c++/23689
331 * decl.c (check_tag_decl): Added new warning for typedef ignored
332 when it precedes an otherwise valid non-typedef declaration.
333
334 2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
335
336 * typeck.c (build_function_call): Store converted arguments
337 in a stack-allocated array instead of building a list.
338 (convert_arguments): Store arguments in the array passed in as an
339 argument, and return the actual number of arguments.
340 * call.c (build_call): Delete, and replace with...
341 (build_call_n, build_call_a): New.
342 (build_op_delete_call): Rewrite to avoid constructing argument lists.
343 (build_over_call): Store converted arguments in a stack-allocated
344 array instead of building a list.
345 (build_cxx_call): Pass arguments in an array instead of as a list.
346 (build_java_interface_fn_ref): Rewrite to avoid constructing
347 argument lists.
348 * tree.h: Update declarations to reflect above changes.
349 * method.c (use_thunk): Use a stack-allocated array to hold
350 the arguments instead of a list.
351 * rtti.c (throw_bad_cast): Update call to cxx_call.
352 (throw_bad_typeid): Likewise.
353 (build_dynamic_cast_1): Likewise.
354 * init.c (build_builtin_delete_call): Use build_call_n.
355 * decl.c (expand_static_init): Likewise.
356 * except.c (cp_protect_cleanup_actions): Likewise.
357 * cp-gimplify.c (genericize_eh_spec_block): Likewise.
358 (gimplify_must_not_throw_expr): Likewise.
359 (cxx_omp_apply_fn): Use build_call_a.
360
361 2007-02-26 Mark Mitchell <mark@codesourcery.com>
362
363 * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
364 * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
365
366 2007-02-25 Mark Mitchell <mark@codesourcery.com>
367
368 * cp-tree.h (static_ctors): Remove.
369 * cp-tree.h (static_dtors): Likewise.
370 * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
371 refactoring of tree_map hierarchy.
372 (decl_shadowed_for_var_insert): Likewise.
373 * semantics.c (expand_body): Use c_expand_body.
374 (expand_or_defer_fn): Don't update static_ctors or static_dtors.
375 * decl2.c (static_ctors): Remove.
376 (static_dtors): Likewise.
377 (generate_ctor_or_dtor_function): Pass NULL_TREE to
378 objc_generate_static_init_call. Do not call static_[cd]tors.
379 (generate_ctor_and_dtor_functions_for_priority): Do not check for
380 static_[cd]tors.
381 (cp_write_global_declarations): Likewise.
382
383 2007-02-23 Richard Guenther <rguenther@suse.de>
384
385 * class.c (note_name_declared_in_class): Make declaration
386 changes meaning a pedwarn.
387
388 2007-02-22 Michael Matz <matz@suse.de>
389
390 PR c++/29433
391 * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
392 * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
393 dump_function_decl): Guard emitting outer scopes by new flag.
394 * cp-lang.c (cxx_dwarf_name): New function.
395 (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
396 * pt.c (classtype_mangled_name, mangle_class_name_for_template):
397 Remove functions.
398 (push_template_decl_real, lookup_template_class): Remove calls
399 to above functions.
400
401 2007-02-19 Mark Mitchell <mark@codesourcery.com>
402
403 * call.c (build_new_method_call): Ensure that explicit calls of
404 destructors have type "void".
405
406 2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
407
408 * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
409 and -Walways-true with -Waddress.
410 * cvt.c (convert_to_void): Replace unconditional warning with
411 -Waddress.
412
413 2007-02-18 Kazu Hirata <kazu@codesourcery.com>
414
415 * decl.c, tree.c: Fix comment typos.
416
417 2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
418
419 PR C++/30158
420 * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the
421 statement expression if we had an error mark node.
422
423 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
424 Brooks Moses <brooks.moses@codesourcery.com>
425 Lee Millward <lee.millward@codesourcery.com>
426
427 * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
428 Change class to tcc_vl_exp.
429
430 * call.c (build_call): Use build_call_list instead
431 of build3.
432 (build_over_call): Likewise.
433 (build_new_method_call): Use build_min_non_dep_call_list
434 instead of build_min_non_dep.
435
436 * error.c (dump_call_expr_args): New function.
437 (dump_aggr_init_expr_args): New function.
438 (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them.
439 Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
440
441 * cvt.c (convert_to_void): Use build_call_array instead
442 of build3; use new AGGR_INIT_EXPR accessor macros.
443
444 * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
445 instead of TREE_CODE_LENGTH.
446
447 * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
448 AGGR_INIT_EXPR accessor macros.
449
450 * cp-gimplify.c (cp_gimplify_init_expr): Use
451 AGGR_INIT_EXPR_SLOT to set the slot operand.
452
453 * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
454 (AGGR_INIT_EXPR_SLOT): New macro.
455 (AGGR_INIT_EXPR_ARG): New macro.
456 (aggr_init_expr_nargs): New macro.
457 (AGGR_INIT_EXPR_ARGP): New macro.
458 (aggr_init_expr_arg_iterator): New.
459 (init_aggr_init_expr_arg_iterator): New.
460 (next_aggr_init_expr_arg): New.
461 (first_aggr_init_expr_arg): New.
462 (more_aggr_init_expr_args_p): New.
463 (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
464 (stabilize_aggr_init): New declaration.
465 (build_min_non_dep_call_list): Likewise.
466
467 * tree.c (process_aggr_init_operands): New function.
468 (build_aggr_init_array) New function.
469 (build_cplus_new): Update to use new CALL_EXPR and
470 AGGR_INIT_EXPR accessor macros. Replace use of build3 with
471 build_aggr_init_array.
472 (build_min_non_dep_call_list) New function.
473 (build_min_nt): Assert input code parameter is not a variable
474 length expression class.
475 (build_min, build_min_non_dep): Likewise.
476 (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
477 to check for equality instead of recursing. Handle tcc_vl_exp
478 tree code classes.
479 (stabilize_call): Update to only handle CALL_EXPRs, not
480 AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
481 (stabilize_aggr_init): New function.
482 (stabilize_init): Use it.
483
484 * cxx-pretty-print.c (pp_cxx_postfix_expression)
485 <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
486 AGGR_INIT_EXPR accessor macros and argument iterators.
487
488 * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
489 build_vl_exp. Iterate through the operands, recursively
490 processing each one.
491 (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
492 CALL_EXPR accessor macros.
493 (value_dependent_expression_p) <default>: Handle tcc_vl_exp
494 tree code classes. Use TREE_OPERAND_LENGTH instead of
495 TREE_CODE_LENGTH.
496
497 * semantics.c (finish_call_expr): Use build_nt_call_list
498 instead of build_nt.
499 (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR
500 accessor macros. Use build_call_array to construct the
501 CALL_EXPR node instead of build3
502
503 * decl2.c (build_offset_ref_call_from_tree): Use
504 build_nt_call_list and build_min_non_dep_call_list instead
505 of build_min_nt and build_min_non_dep.
506
507 * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
508 Use build_nt_call_list instead of build_min_nt.
509
510 2007-02-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
511
512 PR c++/28943
513 * call.c (build_conditional_expr): Improve error message.
514
515 2007-02-13 Dirk Mueller <dmueller@suse.de>
516
517 * friend.c (do_friend): Annotate warning about friend
518 declarations in templates with OPT_Wnon_template_friend.
519 Convert informal message from warning() to inform().
520
521 2007-02-12 Simon Martin <simartin@users.sourceforge.net>
522 Mark Mitchell <mark@codesourcery.com>
523
524 PR c++/14622
525 * pt.c (do_decl_instantiation): Detect type mismatches in explicit
526 instantiations for variables.
527
528 2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
529
530 PR middle-end/7651
531 * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
532 Check warn_unused_value just once.
533
534 2007-02-11 Mark Mitchell <mark@codesourcery.com>
535
536 PR c++/26988
537 * pt.c (determine_specialization): Use skip_artificial_parms_for.
538 (fn_type_unificiation): Likewise.
539 (get_bindings): Likewise.
540
541 o2007-02-06 Mark Mitchell <mark@codesourcery.com>
542
543 PR target/29487
544 * decl.c (finish_function): Use DECL_REPLACEABLE.
545 * tree.c (cp_cannot_inline_tree_fn): Likewise.
546
547 2007-02-10 Gabriel Dos Reis <gdr@integrable-solutions.net>
548
549 * parser.c (cp_parser_primary_expression): Reformat overly long lines.
550
551 2007-02-10 Richard Henderson <rth@redhat.com>, Jakub Jelinek <jakub@redhat.com>
552
553 * decl.c (grokvardecl): Don't error if !have_tls.
554 (grokdeclarator): Likewise.
555 * parser.c (cp_parser_omp_threadprivate): Likewise.
556
557 2007-02-07 Jakub Jelinek <jakub@redhat.com>
558
559 PR c++/30703
560 * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
561 parameters and result decls in omp clauses.
562 (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
563 by reference.
564
565 2007-02-05 Dirk Mueller <dmueller@suse.de>
566
567 PR bootstrap/30510
568 * parser.c (cp_parser_class_specifier): Always initialize bases.
569
570 2007-02-05 Paolo Bonzini <bonzini@gnu.org>
571
572 * cp-tree.h (OMP_ATOMIC_CODE): Delete.
573 (OMP_ATOMIC_DEPENDENT_P): Rewrite.
574 * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
575 expressions.
576 * semantics.c (finish_omp_atomic): Store a whole expression node
577 in operand 1, and integer_zero_node in operand 0, for dependent
578 OMP_ATOMIC. Rewrite to make flow easier to understand.
579
580 2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
581
582 * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
583
584 2007-02-04 Kazu Hirata <kazu@codesourcery.com>
585
586 * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
587 parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
588
589 2007-02-03 Douglas Gregor <doug.gregor@gmail.com>
590
591 * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
592 keyword warning to -Wc++0x-compat.
593
594 2007-02-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
595
596 * decl.c (grokdeclarator): Update documentation.
597
598 2007-02-02 Jakub Jelinek <jakub@redhat.com>
599
600 PR c++/30536
601 * decl.c (grokdeclarator): If __thread is used together with
602 a storage class other than extern and static, clear thread_p
603 after issuing diagnostics and fall through to checking the
604 storage class.
605
606 2007-01-30 Roger Sayle <roger@eyesopen.com>
607
608 * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
609 calculating the size of an array (to avoid recursive errors).
610
611 2007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
612
613 PR c++/24745
614 * typeck.c (build_binary_op): Fix logic for warning. Move warning
615 to -Wpointer-arith.
616 * call.c (convert_like_real): Don't warn when converting to
617 boolean type.
618
619 2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
620
621 * decl.c (pop_label): Replace warning with call to
622 warn_for_unused_label.
623
624 2007-01-28 Andrew Pinski <pinskia@gmail.com>
625
626 PR C++/28988
627 * semantics.c (finish_pseudo_destructor_expr): Check the
628 destrutor name by calling check_dtor_name.
629
630 2007-01-24 Douglas Gregor <dgregor@osl.iu.edu>
631
632 * lex.c (D_CPP0X): Rename.
633 (D_CXX0X): To this.
634 (reswords): D_CPP0X -> D_CXX0X.
635 (init_reswords): Ditto.
636 * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
637 of C++0x keywords as identifiers.
638
639 2007-01-23 Simon Martin <simartin@users.sourceforge.net>
640
641 PR c++/27492
642 * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
643 function decls.
644
645 2007-01-23 Ian Lance Taylor <iant@google.com>
646
647 * typeck.c (convert_for_assignment): Only warn about a = b = c
648 when converting to bool.
649
650 2007-01-23 Roger Sayle <roger@eyesopen.com>
651
652 * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
653 TREE_OVERFLOW.
654 * typeck.c (ignore_overflows): Remove the remaining uses of
655 TREE_CONSTANT_OVERFLOW.
656
657 2007-01-20 Jan Hubicka <jh@suse.cz>
658
659 * decl2.c (start_objects, start_static_storage_duration_function):
660 Do not make the functions uninlinable.
661
662 2007-01-17 Ian Lance Taylor <iant@google.com>
663
664 * class.c (add_method): Call VEC_reserve_exact rather than passing
665 a negative size to VEC_reserve.
666
667 2007-01-11 Simon Martin <simartin@users.sourceforge.net>
668
669 PR c++/29573
670 * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
671
672 2007-01-10 Mark Mitchell <mark@codesourcery.com>
673
674 PR c++/28999
675 * decl.c (make_typename_type): If the qualified name is not a
676 type, issue an error.
677 * parser.c (cp_parser_elaborated_type_specifier): Fix comment
678 formatting.
679
680 2007-01-08 Geoffrey Keating <geoffk@apple.com>
681
682 * rtti.c: Include target.h.
683 (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
684 don't emit typeinfo for fundamental types as weak.
685 * Make-lang.in (cp/rtti.o): Update and correct dependencies.
686
687 2007-01-08 Richard Guenther <rguenther@suse.de>
688
689 * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
690
691 2007-01-08 Mark Shinwell <shinwell@codesourcery.com>
692
693 * call.c (standard_conversion): Pass flag to
694 vector_types_convertible_p to disallow emission of note.
695 * typeck.c (convert_for_assignment): Pass flag to
696 vector_types_convertible_p to allow emission of note.
697 (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
698 to disallow emission of note.
699
700 2007-01-07 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
701
702 PR c++/28986
703 * typeck.c (build_binary_op): Call overflow_warning if
704 TREE_OVERFLOW_P is true for the result and not for any of the
705 operands.
706
707 2007-01-06 Lee Millward <lee.millward@codesourcery.com>
708
709 PR c++/19439
710 * class.c (add_method): Don't wait until template
711 instantiation time to complain about duplicate methods.
712
713 2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
714
715 PR c/19978
716 * semantics.c (finish_unary_op_expr): Warn only if result
717 overflowed and operands did not.
718
719 2007-01-05 Ian Lance Taylor <iant@google.com>
720
721 * typeck.c (build_binary_op): Warn about comparing a non-weak
722 address to NULL.
723
724 2007-01-05 Douglas Gregor <doug.gregor@gmail.com>
725
726 * pt.c (tsubst): Propagate the need for structural equality checks
727 when reducing the level of template parameters.
728
729 2007-01-03 Kazu Hirata <kazu@codesourcery.com>
730
731 * pt.c: Fix a comment typo.
732
733 2006-01-02 Ian Lance Taylor <iant@google.com>
734
735 * semantics.c (maybe_convert_cond): Optionally warn when using an
736 assignment as a condition.
737 * typeck.c (convert_for_assignment): Optionally warn about
738 assigning the result of an assignment to a bool.
739
740 2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
741
742 * pt.c (canonical_template_parms): Correct typo in comment.
743
744 2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
745
746 * typeck.c (structural_comptypes): Renamed from "comptypes".
747 (comptypes): Use canonical type information to perform fast type
748 comparison. When VERIFY_CANONICAL_TYPES, verify that the
749 canonical type comparison returns the same results as we would see
750 from the current, structural check. Support COMPARE_STRUCTURAL
751 when we need structural checks.
752 * decl.c (typename_compare): Fix comment.
753 (build_typename_type): TYPENAME_TYPE nodes require structural
754 equality checks, because they resolve different based on the
755 current class type.
756 (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
757 require structural equality checks (for now).
758 (build_ptrmemfunc_type): Build the canonical pointer to member
759 function type.
760 (compute_array_index_type): Whenever we build a new index type
761 to represent the size of an array in a template, we need to mark
762 this index type as requiring structural equality. This goes for
763 arrays with value-dependent sizes with the current ABI, or all
764 arrays with ABI-1.
765 * tree.c (cplus_array_hash): New.
766 (struct cplus_array_info): New.
767 (cplus_array_compare): New.
768 (cplus_array_htab): New.
769 (build_cplus_array_type_1): Use a hash table to cache the array
770 types we build. Build the canonical array type for each array
771 type.
772 (cp_build_qualified_type_real): When building a cv-qualified array
773 type, use the hash table of array types and build canonical array
774 types as necessary.
775 (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
776 use structural equality (for now).
777 * cp-tree.h (COMPARE_STRUCTURAL): New.
778 * pt.c (canonical_template_parms): New.
779 (canonical_type_parameter): New.
780 (process_template_parm): Find the canonical type parameter.
781 (lookup_template_class): When we have named the primary template
782 type, set the canonical type for our template class to the primary
783 template type. If any of the template arguments need structural
784 equality checks, the template class needs structural equality
785 checks.
786 (tsubst): When reducing the level of a template template
787 parameter, we require structural equality tests for the resulting
788 parameter because its template parameters have not had their types
789 canonicalized. When reducing a template type parameter, find the
790 canonical reduced type parameter.
791 (any_template_arguments_need_structural_equality_p): New.
792
793 2006-12-31 Simon Martin <simartin@users.sourceforge.net>
794
795 PR c++/29731
796 * parser.c (cp_parser_primary_expression): Return error_mark_node when
797 a statement-expression is found outside of a function body.
798
799 2006-12-28 Kazu Hirata <kazu@codesourcery.com>
800
801 * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
802 Remove.
803
804 * decl2.c: Fix a comment typo.
805
806 2006-12-21 Andrew Pinski <pinskia@gmail.com>
807
808 PR C++/30225
809 * decl.c (cxx_builtin_function): Only copy the decl if adding
810 it to the std namespace.
811
812 2006-12-21 Andrew Pinski <pinskia@gmail.com>
813
814 PR C++/30168
815 * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
816
817 2006-12-22 Kazu Hirata <kazu@codesourcery.com>
818
819 * decl.c: Fix a coment typo.
820
821 2006-12-18 Ian Lance Taylor <iant@google.com>
822
823 * decl.c (start_preparsed_function): Add support for
824 -Wmissing-declarations.
825
826 2006-12-16 Simon Martin <simartin@users.sourceforge.net>
827
828 PR c++/29475
829 * cp-tree.h (struct deferred_access_check): New structure to represent a
830 deferred access check. It replaces the previous representation as a tree.
831 (get_deferred_access_checks): Return a vector of struct
832 deferred_access_check instead of a tree list.
833 (perform_access_checks): Take a vector of struct deferred_access_check
834 instead of a tree list.
835 * semantics.c (struct deferred_access): Store the deferred access checks
836 as a vector of struct deferred_access_check instead of a tree list.
837 (push_deferring_access_checks): Handle the change in struct
838 deferred_access.
839 (get_deferred_access_checks): Likewise.
840 (pop_to_parent_deferring_access_checks): Likewise.
841 (perform_or_defer_access_check): Likewise.
842 (perform_access_checks): Take a vector of struct deferred_access_check
843 instead of a tree list.
844 * parser.c (struct tree_check): New structure to store various data
845 associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
846 (struct cp_token): Changed the value field to be a union with a pointer to
847 a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
848 tokens and a tree field for all other tokens.
849 (eof_token): Adjusted due to the change in struct cp_token.
850 (cp_lexer_get_preprocessor_token): Likewise.
851 (cp_lexer_purge_token): Likewise.
852 (cp_lexer_purge_tokens_after): Likewise.
853 (cp_lexer_print_token): Likewise.
854 (cp_parser_error): Likewise.
855 (cp_parser_identifier): Likewise.
856 (cp_parser_string_literal): Likewise.
857 (cp_parser_primary_expression): Likewise.
858 (cp_parser_unqualified_id): Likewise.
859 (cp_parser_parenthesized_expression_list): Likewise.
860 (cp_parser_storage_class_specifier_opt): Likewise.
861 (cp_parser_function_specifier_opt): Likewise.
862 (cp_parser_type_specifier): Likewise.
863 (cp_parser_simple_type_specifier): Likewise.
864 (cp_parser_initializer_list): Likewise.
865 (cp_parser_member_specification_opt): Likewise.
866 (cp_parser_attribute_list): Likewise.
867 (cp_parser_objc_expression): Likewise.
868 (cp_parser_objc_protocol_qualifiers): Likewise.
869 (cp_parser_objc_selector): Likewise.
870 (cp_parser_objc_declaration): Likewise.
871 (cp_parser_objc_statement): Likewise.
872 (cp_parser_omp_clause_name): Likewise.
873 (cp_parser_omp_clause_default): Likewise.
874 (cp_parser_omp_clause_schedule): Likewise.
875 (cp_parser_omp_parallel): Likewise.
876 (cp_parser_initial_pragma): Likewise.
877 (pragma_lex): Likewise.
878 (cp_parser_pre_parsed_nested_name_specifier): Likewise.
879 (cp_parser_nested_name_specifier_opt): Likewise.
880 Use cp_token::u::tree_check_value to save the token's value, the
881 associated deferred checks and its qualifying scope.
882 (cp_parser_template_id): Likewise.
883 (cp_parser_template_declaration_after_export): Adjusted the call to
884 get_deferred_access_checks.
885 (cp_parser_init_declarator): Take the access checks as a vector of struct
886 deferred_access_check instead of a tree list.
887 (cp_parser_single_declaration): Likewise.
888 (cp_parser_perform_template_parameter_access_checks): Likewise.
889 (cp_parser_simple_declaration): Adjusted the call to
890 cp_parser_init_declarator.
891 (cp_parser_explicit_specialization): Adjusted the call to
892 cp_parser_single_declaration.
893
894 2006-12-13 Ian Lance Taylor <iant@google.com>
895
896 PR c++/19564
897 PR c++/19756
898 * parser.c (cp_parser_expression_stack_entry): Add field
899 lhs_type.
900 (cp_parser_binary_expression): Track tree code of left hand side
901 of expression. Use it when calling build_x_binary_op.
902 (cp_parser_selection_statement): Add if_p parameter. Change all
903 callers. Warn about ambiguous else.
904 (cp_parser_statement): Add if_p parameter. Change all callers.
905 (cp_parser_implicitly_scoped_statement): Likewise.
906 * typeck.c (build_x_binary_op): Add parameters arg1_code and
907 arg2_code. Change all callers. Call warn_about_parentheses.
908 * cp-tree.h (build_x_binary_op): Update declaration.
909
910 2006-12-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
911
912 * decl.c (build_enumerator): Update error message to match C
913 front-end.
914
915 2006-12-11 Jan Hubicka <jh@suse.cz>
916
917 * decl2.c (var_finalized_p): Update for renamed varpool functions.
918
919 2006-12-09 Zack Weinberg <zackw@panix.com>
920
921 * parser.c (yydebug, enum pragma_omp_clause): Delete.
922
923 2006-12-07 Mark Mitchell <mark@codesourcery.com>
924
925 PR c++/29732
926 * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
927 (explicit_class_specialization_p): Declare.
928 * pt.c (explicit_class_specialization_p): New function.
929 * parser.c (cp_parser_init_declarator): Check correct number of
930 template parameters for in-class function definitions.
931 (cp_parser_check_declrator_template_parameters): Stop looking for
932 template classes when we find an explicit specialization.
933
934 2006-12-07 Lee Millward <lee.millward@codesourcery.com>
935
936 PR c++/29980
937 * cp_parser_elaborated_type_specifier: Check
938 the return value of check_elaborated_type_specifier.
939
940 2006-12-06 Mark Mitchell <mark@codesourcery.com>
941
942 PR c++/29730
943 * parser.c (cp_parser_init_declarator): Reject initialization of
944 functions.
945
946 2006-12-05 Mark Mitchell <mark@codesourcery.com>
947
948 PR c++/29729
949 * decl2.c (check_member_template): Move check for member
950 templates in local classes to ...
951 * parser.c (cp_parser_template_declaration_after_export):
952 ... here.
953
954 PR c++/29728
955 * decl.c (check_array_designated_initializer): New function.
956 (maybe_deduce_size_from_array_init): Use it.
957 (reshape_init_array): Likewise.
958
959 2006-12-05 Aldy Hernandez <aldyh@redhat.com>
960
961 Merge from gimple-tuples-branch.
962
963 2006-10-05 Aldy Hernandez <aldyh@redhat.com>
964
965 * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
966 (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
967 (cxx_omp_clause_copy_ctor): Same.
968 (cxx_omp_clause_assign_op): Same.
969
970 2006-09-28 Aldy Hernandez <aldyh@redhat.com>
971
972 * cp-tree.h (union lang_tree_node): Gimple statements do not
973 have a TREE_CHAIN.
974 (TREE_INDIRECT_USING): Look in base.
975
976 2006-12-04 Jan Hubicka <jh@suse.cz>
977
978 * cp-objcp-common.c (cp_expr_size): Return NULL in the case
979 size is undefined.
980
981 2006-12-04 Mark Mitchell <mark@codesourcery.com>
982
983 PR c++/29733
984 * pt.c (tsubst_decl): Disallow variables of function type.
985
986 PR c++/29632
987 * call.c (add_builtin_candidate): Do not permit NULL pointer
988 constants to be compared with template parameters.
989
990 2006-12-04 Eric Botcazou <ebotcazou@adacore.com>
991
992 * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
993 Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
994
995 2006-12-03 Richard Henderson <rth@redhat.com>
996 Andrew Pinski <pinskia@gmail.com>
997
998 PR C++/14329
999 * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
1000
1001 2006-12-02 Andrew Pinski <andrew_pinski@playstation.sony.com>
1002
1003 PR C++/30033
1004 * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
1005
1006 2006-12-02 Kazu Hirata <kazu@codesourcery.com>
1007
1008 * name-lookup.c: Follow spelling conventions.
1009
1010 2006-12-01 Geoffrey Keating <geoffk@apple.com>
1011
1012 * decl.c (poplevel): Check DECL_INITIAL invariant.
1013 (duplicate_decls): Preserve DECL_INITIAL when eliminating
1014 a new definition in favour of an old declaration.
1015 (start_preparsed_function): Define and document value of
1016 DECL_INITIAL before and after routine.
1017 (finish_function): Check DECL_INITIAL invariant.
1018 * parser.c
1019 (cp_parser_function_definition_from_specifiers_and_declarator):
1020 Skip duplicate function definitions.
1021
1022 2006-12-01 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1023
1024 PR c++/30022
1025 * typeck.c (type_after_usual_arithmetic_conversions):
1026 Fix assertion for vector types.
1027 (build_binary_op): Use temporary for inner type of vector types.
1028
1029 2006-12-01 Ryan Mansfield <rmansfield@qnx.com>
1030
1031 PR c++/29066
1032 * typeck.c (build_binary_op): Fix pointer to member function
1033 comparison for ptrmemfunc_vbit_in_delta targets.
1034
1035 2006-12-01 Dirk Mueller <dmueller@suse.de>
1036
1037 PR c++/18313
1038 * decl.c (grokdeclarator): Warn for type qualifiers on return
1039 type for non-dependent types.
1040 * pt.c (tsubst_function_type): Warn for type qualifiers on
1041 return type for dependent types.
1042
1043 2006-11-30 Geoffrey Keating <geoffk@apple.com>
1044
1045 * rtti.c (get_tinfo_decl): Handle return value from
1046 pushdecl_top_level_and_finish.
1047
1048 2006-11-29 Lee Millward <lee.millward@codesourcery.com>
1049
1050 PR c++/29022
1051 * parser.c (cp_parser_class_head): Move processing
1052 of any base classes to...
1053 (cp_parser_class_specifier) ...here. Take an extra
1054 tree* parameter for any base classes. Only process
1055 them if the opening brace was found.
1056
1057 2006-11-28 Jakub Jelinek <jakub@redhat.com>
1058
1059 PR c++/29735
1060 * decl.c (grokfndecl): Check main's type after applying
1061 attributes, not before.
1062
1063 2006-11-27 Mark Mitchell <mark@codesourcery.com>
1064
1065 * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
1066 entries for a primary construction virtual table.
1067
1068 2006-11-26 Mark Mitchell <mark@codesourcery.com>
1069
1070 PR c++/29886
1071 * parser.c (cp_parser): Add in_function_body.
1072 (cp_parser_new): Initialize it.
1073 (cp_parser_primary_expression): Use parser->in_function_body
1074 instead of at_function_scope_p.
1075 (cp_parser_asm_definition): Likewise.
1076 (cp_parser_direct_declarator): Likewise.
1077 (cp_parser_class_specifier): Clear parser->in_function_body.
1078 (cp_parser_constructor_declarator_p): Use parser->in_function_body
1079 instead of at_function_scope_p.
1080 (cp_parser_function_body_after_declarator): Set
1081 parser->in_function_body.
1082
1083 2006-11-21 Douglas Gregor <doug.gregor@gmail.com>
1084
1085 * cp-tree.def (STATIC_ASSERT): New.
1086 * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
1087 * error.c (dump_decl): Handle STATIC_ASSERT.
1088 * cp-tree.h (STATIC_ASSERT_CONDITION): New.
1089 (STATIC_ASSERT_MESSAGE): New.
1090 (STATIC_ASSERT_SOURCE_LOCATION): New.
1091 (struct tree_static_assert): New.
1092 (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
1093 (union lang_tree_node): Add static_assertion.
1094 (finish_static_assert): Declare.
1095 * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
1096 (pp_cxx_declaration): Handle STATIC_ASSERT.
1097 * pt.c (instantiate_class_template): Handle
1098 STATIC_ASSERT members.
1099 (tsubst_expr): Handle STATIC_ASSERT statements.
1100 * semantics.c (finish_static_assert): New.
1101 * lex.c (D_CPP0X): New.
1102 (reswords): Add static_assert keyword.
1103 (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
1104 * parser.c (cp_parser_block_declaration): Parse static
1105 assertions.
1106 (cp_parser_static_assert): New.
1107 (cp_parser_member_declaration): Parse static assertions.
1108
1109 2006-11-21 Jakub Jelinek <jakub@redhat.com>
1110
1111 PR c++/29570
1112 * decl.c (cp_finish_decl): Check for value dependent brace enclosed
1113 scalar initializer.
1114
1115 PR c++/29734
1116 * cp-tree.h (WANT_VECTOR): Define.
1117 (WANT_ARITH): Add WANT_VECTOR.
1118 * cvt.c (build_expr_type_conversion): Handle vector types.
1119 * typeck.c (build_unary_op): Add WANT_VECTOR to
1120 build_expr_type_conversion flags.
1121
1122 2006-11-20 Simon Martin <simartin@users.sourceforge.net>
1123
1124 PR c++/29475
1125 * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
1126 extra argument that represents the declaration to use to print
1127 potential error messages.
1128 * init.c (build_offset_ref): Adjusted the call to
1129 perform_or_defer_access_check.
1130 * class.c (alter_access, resolve_address_of_overloaded_function):
1131 Likewise.
1132 * decl.c (make_typename_type, make_unbound_class_template): Likewise.
1133 * search.c (lookup_member): Likewise.
1134 * friend.c (add_friend): Likewise.
1135 * parser.c (cp_parser_template_id,
1136 cp_parser_pre_parsed_nested_name_specifier): Likewise.
1137 * semantics.c (finish_non_static_data_member,
1138 check_accessibility_of_qualified_id, finish_id_expression): Likewise.
1139 (pop_to_parent_deferring_access_checks, perform_access_checks,
1140 perform_or_defer_access_check): Adjusted the call to enforce_access.
1141 * call.c (enforce_access): Use the new extra argument to build the
1142 error message.
1143 (build_op_delete_call): Adjusted the call to
1144 perform_or_defer_access_check.
1145 (build_over_call): Likewise.
1146
1147 2006-11-16 Dirk Mueller <dmueller@suse.de>
1148
1149 * name-lookup.c (begin_scope): Use GGC_CNEW instead of
1150 GGC_NEW and memset.
1151
1152 2006-11-13 Roger Sayle <roger@eyesopen.com>
1153
1154 * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
1155 base type info initializer has the correct type.
1156
1157 2006-11-13 Mark Mitchell <mark@codesourcery.com>
1158
1159 PR c++/29518
1160 * pt.c (coerce_template_parms): Do not skip_evaluation while
1161 substituting template arguments.
1162
1163 2006-11-11 Richard Guenther <rguenther@suse.de>
1164
1165 * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
1166 FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
1167
1168 2006-11-03 Roger Sayle <roger@eyesopen.com>
1169
1170 * call.c (build_op_delete_call): Test user-visible type against
1171 size_type_node, instead of against the internal type, sizetype.
1172 * class.c (type_requires_array_cookie): Likewise.
1173 * mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
1174 handling of TYPE_IS_SIZETYPE.
1175 * typeck.c (type_after_usual_arithmetic_conversions): Remove
1176 special case handling of TYPE_IS_SIZETYPE.
1177 (comptypes): Likewise.
1178
1179 2006-11-01 Danny Smith <dannysmith@users.sourceforge.net>
1180
1181 * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
1182 if targetm.cxx.use_atexit_for cxa_atexit.
1183 (start_cleanup_fn): Likewise.
1184 (register_dtor_fn): Likewise.
1185
1186 2006-09-25 Geoffrey Keating <geoffk@apple.com>
1187
1188 * decl2.c (cp_write_global_declarations): Rename from
1189 cp_finish_file.
1190 * cp-lang.c (finish_file): Don't call cp_finish_file.
1191 * cp-tree.h (cp_write_global_declarations): Rename from
1192 cp_finish_file.
1193 * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
1194 cp_write_global_declarations.
1195
1196 2006-10-31 Geoffrey Keating <geoffk@apple.com>
1197
1198 * name-lookup.c (get_anonymous_namespace_name): New.
1199 (push_namespace_with_attribs): Use get_anonymous_namespace_name.
1200 * decl2.c (start_objects): Update for rename of
1201 get_file_function_name_long.
1202
1203 2006-10-30 Dirk Mueller <dmueller@suse.de>
1204
1205 PR c++/28704
1206 * decl.c (grokdeclarator): Duplicate diagnostic message
1207 for easier translation.
1208 * decl.c (grokdeclarator): Fix line-wrapping.
1209
1210 2006-10-30 Dirk Mueller <dmueller@suse.de>
1211
1212 PR c++/6321
1213 * decl.c (grokfndecl): Use check_main_parameter_types.
1214
1215 2006-10-30 Dirk Mueller <dmueller@suse.de>
1216
1217 PR c++/28669
1218 * decl.c (grokfndecl): Duplicate warning message for
1219 easier translation.
1220
1221 2006-10-30 Dirk Mueller <dmueller@suse.de>
1222
1223 * typeck.c (build_unary_op): Fix indenting. Use G_().
1224
1225 2006-10-29 Dirk Mueller <dmueller@suse.de>
1226
1227 PR c++/29089
1228 * typeck.c (build_unary_op): Duplicate warning message
1229 for easier translation.
1230
1231 2006-10-29 Dirk Mueller <dmueller@suse.de>
1232
1233 PR c++/16307
1234 * typeck.c (build_array_ref): Warn for char subscriptions
1235 on pointers.
1236
1237 2006-10-29 Kazu Hirata <kazu@codesourcery.com>
1238
1239 * decl.c: Fix a comment typo.
1240
1241 2006-10-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
1242
1243 PR C++/29295
1244 * typeck.c (build_unary_op): Use same_type_p when comparing to
1245 boolean type.
1246
1247 2006-10-29 Dirk Mueller <dmueller@suse.de>
1248
1249 PR c++/29033
1250 * typeck.c (build_binary_op): Duplicate warning message
1251 for better translation.
1252
1253 2006-10-23 Rafael Avila de Espindola <rafael.espindola@gmail.com>
1254
1255 * decl.c (builtin_function_1): Move common code to
1256 add_builtin_function.
1257 (builtin_function): Rename to cxx_builtin_function.
1258 Change the signature.
1259 * call.c: Include langhooks.h.
1260 (build_java_interface_fn_ref): Replace calls to
1261 builtin_function with add_builtin_function.
1262 * Make-lang.in (cp/call.o): Depend on langhooks.h.
1263 * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
1264 cxx_builtin_function.
1265 * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
1266 Change the signature.
1267
1268 2006-10-22 Nathan Sidwell <nathan@codesourcery.com>
1269
1270 PR c++/20647
1271 * rtti.c (tinfo_base_init): The type info string is always global.
1272
1273 2006-10-20 Lee Millward <lee.millward@codesourcery.com>
1274 Mark Mitchell <mark@codesourcery.com>
1275
1276 PR c++/28053
1277 * decl2.c (grokbitfield): Detect invalid non-integral
1278 types earlier when possible.
1279
1280 2006-10-18 Mark Shinwell <shinwell@codesourcery.com>
1281
1282 PR c++/26884
1283 * typeck2.c (digest_init): Raise error upon attempts to
1284 initialize arrays with variables.
1285
1286 2006-10-17 Lee Millward <lee.millward@codesourcery.com>
1287
1288 PR c++/27952
1289 * cp-tree.h (xref_basetypes): Return bool instead of void.
1290 * decl.c (xref_basetypes): Adjust definition. Return false
1291 if the class bases are invalid.
1292 * parser.c (cp_parser_class_head): Check the return value
1293 from xref_basetypes.
1294
1295 2006-10-17 Mark Mitchell <mark@codesourcery.com>
1296
1297 PR c++/28261
1298 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
1299 comment.
1300
1301 PR c++/28261
1302 * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
1303 function.
1304 (cp_parser_constructor_declarator_p): Use it.
1305 (cp_parser_check_type_definition): Return a value indicating
1306 whether or not the definition is valid.
1307 (cp_parser_enum_specifier): Skip invalid enum definitions.
1308
1309 2006-10-17 Mark Mitchell <mark@codesourcery.com>
1310
1311 PR c++/29039
1312 * typeck2.c (build_functional_cast): Don't zero-initialize
1313 non-PODs; instead, call their constructors.
1314 * method.c (synthesize_method): Always build mem-initializers, if
1315 we're synthesizing the default constructor.
1316
1317 2006-10-17 Mark Mitchell <mark@codesourcery.com>
1318
1319 PR c++/27270
1320 * decl.c (reshape_init_class): Move check for designated
1321 to ...
1322 * parser.c (cp_parser_initializer_list): ... here.
1323 * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
1324
1325 2006-10-16 Mark Mitchell <mark@codesourcery.com>
1326
1327 PR c++/27270
1328 * typeck2.c (process_init_constructor_array): Reword comment.
1329 * pt.c (tsubst_copy_and_built): Call reshape_init before calling
1330 digest_init.
1331
1332 PR c++/29408
1333 * parser.c (cp_parser_using_declaration): Stop parsing when
1334 something goes wrong with an access declaration.
1335
1336 PR c++/29435
1337 * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
1338 types when their sizes are required. Refine test for VLAs.
1339
1340 PR c++/28211
1341 * parser.c (cp_parser_template_argument): Don't consider "&var" a
1342 possible constant-expression.
1343 * pt.c (convert_nontype_argument): Refine handling of arguments of
1344 pointer type.
1345
1346 2006-10-13 Mark Mitchell <mark@codesourcery.com>
1347
1348 PR c++/28506
1349 * parser.c (function_declarator_p): New function.
1350 (cp_parser_init_declarator): Use it.
1351 (cp_parser_member_declaration): Likewise.
1352
1353 2006-10-12 Mark Mitchell <mark@codesourcery.com>
1354
1355 PR c++/29318
1356 * rtti.c (get_tinfo_decl): Refuse to create type info objects for
1357 variably modified types.
1358
1359 2006-10-12 Lee Millward <lee.millward@codesourcery.com>
1360
1361 PR c++/27961
1362 * decl.c (start_decl): Return error_mark_node if a
1363 function is initialized like a variable.
1364 (check_var_type): If a variable of field is declared void,
1365 set the type to error_mark_node.
1366 (grokdeclarator): Check the return type of check_var_type.
1367 * class.c (finish_struct_1): Robustify.
1368
1369 2006-10-11 Mark Mitchell <mark@codesourcery.com>
1370
1371 PR c++/29175
1372 * decl.c (check_initializer): Issue errors about trying to
1373 initialize arrays whose elements have variable size.
1374
1375 2006-10-11 Lee Millward <lee.millward@codesourcery.com>
1376
1377 PR c++/29024
1378 * cp-tree (struct cp_decl_specifier_seq): Rename to
1379 conflicting_specifiers_p
1380 * parser.c (cp_parser_set_storage_class): Set
1381 conflicting_specifiers_p for the input decl specifier
1382 if a typedef specifier is present. Rename uses of
1383 multiple_specifiers_p to conflicting_specifiers_p.
1384 (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
1385 class specifier has already been set for this declaration,
1386 set conflicting_specifiers_p to true on the decl_specs.
1387 * decl.c (grokdeclarator): Rename uses of
1388 multiple_specifiers_p to conflicting_specifiers_p.
1389
1390 2006-10-10 Brooks Moses <bmoses@stanford.edu>
1391
1392 * Make-lang.in: Added "c++.pdf" target support.
1393
1394 2006-10-10 Richard Guenther <rguenther@suse.de>
1395
1396 PR rtl-optimization/29323
1397 * decl.c (finish_function): Set TREE_NOTHROW only for
1398 functions that bind local.
1399
1400 2006-10-09 Richard Henderson <rth@redhat.com>
1401
1402 Revert emutls patch.
1403
1404 2006-10-04 Richard Henderson <rth@redhat.com>
1405 Jakub Jelinek <jakub@redhat.com>
1406
1407 * decl.c (grokvardecl): Don't error if !have_tls.
1408 (grokdeclarator): Likewise.
1409 * parser.c (cp_parser_omp_threadprivate): Likewise.
1410
1411 2006-10-03 Mark Mitchell <mark@codesourcery.com>
1412
1413 PR c++/29020
1414 * friend.c (do_friend): Improve comments; add assertion.
1415 * parser.c (cp_parser_nested_name_specifier_opt): Resolve
1416 typenames for qualified names used in declarations, even when
1417 caching qualified name lookup.
1418
1419 PR c++/29138
1420 * decl2.c (grokfield): Don't handle access declarations here.
1421 * parser.c (cp_parser_using_declaration): Handle access
1422 declarations too.
1423 (cp_parser_block_declaration): Adjust calls to
1424 cp_parser_using_declaration.
1425 (cp_parser_member_declaration): Likewise. Use
1426 cp_parser_using_declaration to look for access_declarations.
1427
1428 2006-10-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1429
1430 PR c++/29291
1431 * init.c (build_new): Check for invalid init.
1432
1433 2006-10-02 Mark Mitchell <mark@codesourcery.com>
1434
1435 PR c++/29226
1436 * typeck.c (cxx_sizeof_or_alignof_type): Tidy. In templates, do
1437 not try to actually evaluate sizeof for a VLA type.
1438
1439 2006-10-01 Mark Mitchell <mark@codesourcery.com>
1440
1441 PR c++/29105
1442 * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
1443 * semantics.c (baselink_for_fns): Build a baselink, even when
1444 processing a template.
1445
1446 PR c++/29080
1447 * parser.c (cp_parser_postfix_dot_deref_expression): Use
1448 BASELINK_ACCESS_BINFO as the qualifying scope when calling
1449 adjust_result_of_qualified_name_lookup.
1450
1451 2006-09-25 Lee Millward <lee.millward@codesourcery.com>
1452
1453 PR c++/27329
1454 PR c++/26938
1455 * cp-tree.h (redeclare_class_template): Adjust declaration
1456 to return bool instead of void.
1457 * pt.c (redeclare_class_template): Update definition.
1458 Return false on error.
1459 * decl.c (xref_tag): Return error_mark_node if
1460 redeclare_class_template returned false.
1461
1462 PR c++/27667
1463 * cp-tree.h (begin_specialization): Return bool
1464 instead of void.
1465 * pt.c (check_specialization_scope): Likwise.
1466 Adjust comment. Return false if a specialization
1467 isn't permitted in the current scope.
1468 (begin_specialization): Use the return value of
1469 check_specialization_scope.
1470 * parser.c (cp_parser_explicit_specialization): If
1471 begin_specialization returned false, skip the rest
1472 of the specialization.
1473
1474 2006-09-21 Mark Mitchell <mark@codesourcery.com>
1475
1476 PR c++/29016
1477 * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
1478 BASELINK.
1479
1480 2006-09-21 Lee Millward <lee.millward@codesourcery.com>
1481
1482 PR c++/28861
1483 * decl.c (shadow_tag): Return error_mark_node
1484 if maybe_process_partial_specialization failed.
1485
1486 PR c++/28303
1487 * decl.c (grokdeclarator): Return error_mark_node on
1488 declaration with two or more data types.
1489
1490 2006-09-20 Danny Smith <dannysmith@users.sourceforge.net>
1491
1492 PR target/27650
1493 * class.c (check_for_override): Remove dllimport from virtual
1494 methods.
1495
1496 2006-09-18 Steven Bosscher <steven@gcc.gnu.org>
1497
1498 PR c++/29087
1499 * parser.c (cp_parser_labeled_statement): Return nothing. Do
1500 not take in_statement_expr and in_compound as arguments. Rename
1501 to cp_parser_label_for_labeled_statement. Parse only the label,
1502 not the statement.
1503 (cp_parser_statement): Parse the statement of a labeled-statement
1504 from here, using tail recursion.
1505
1506 2006-09-14 Andrew Pinski <pinskia@physics.uc.edu>
1507
1508 PR C++/29002
1509 * init.c (build_zero_init): If we have an error mark node for
1510 the array size, return.
1511
1512 2006-09-10 Mark Mitchell <mark@codesourcery.com>
1513
1514 PR c++/28991
1515 * cp-objcp-common.c (cxx_staticp): New function.
1516 * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
1517 * cp-tree.h (cxx_staticp): New function.
1518
1519 2006-09-09 Jason Merrill <jason@redhat.com>
1520
1521 PR c++/28996
1522 * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
1523
1524 2006-09-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1525
1526 PR c++/28858
1527 * parser.c (cp_parser_skip_until_found): Rename to
1528 cp_parser_skip_to_end_of_template_parameter_list. Remove last two
1529 parameters. Track levels of '< ... >'. Stop at '{', '}', or ';'.
1530 Reorganize. Adjust comment.
1531 (cp_parser_template_declaration_after_export): Adjust call.
1532 (cp_parser_enclosed_template_argument_list): Likewise.
1533
1534 2006-09-07 Andrew Pinski <pinskia@physics.uc.edu>
1535
1536 PR C++/28906
1537 * init.c (build_new_1): Build a distinct type copy
1538 for the array type that was returned from
1539 build_cplus_array_type.
1540
1541 2006-09-07 Jason Merrill <jason@redhat.com>
1542
1543 PR c++/27371
1544 * cvt.c (convert_to_void): Enable previous change.
1545
1546 PR c++/26957
1547 * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
1548 parms.
1549
1550 2006-09-07 Simon Martin <simartin@users.sourceforge.net>
1551
1552 PR c++/28284
1553 * pt.c (fold_non_dependent_expr): Make sure expr is not
1554 dereferenced if it is NULL.
1555
1556 2006-09-06 Zak Kipling <zak@transversal.com>
1557
1558 PR c++/26195
1559 * decl.c (make_rtl_for_nonlocal_decl),
1560 (start_preparsed_function): Don't use lbasename on
1561 input_filename when calling get_fileinfo.
1562 * semantics.c (begin_class_definition): Likewise.
1563 * lex.c (cxx_make_type): Likewise.
1564 (handle_pragma_interface): Call get_fileinfo on input_filename,
1565 not on the parameter to the directive.
1566
1567 2006-09-06 Mark Mitchell <mark@codesourcery.com>
1568
1569 PR c++/28903
1570 * pt.c (tsubst): Use fold_non_dependent_expr to fold array
1571 dimensions.
1572
1573 PR c++/28886
1574 * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
1575 dimensions.
1576
1577 2006-09-06 Jason Merrill <jason@redhat.com>
1578
1579 PR c++/27371
1580 * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
1581 * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
1582 * tree.c (build_cplus_new): Set it.
1583
1584 PR c++/26696
1585 * cvt.c (convert_to_void): Replace a subexpression with no side
1586 effects with void_zero_node.
1587 * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
1588 (get_first_fn): Ditto.
1589 * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
1590
1591 2006-09-05 Jason Merrill <jason@redhat.com>
1592
1593 PR c++/26571
1594 * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
1595 where the name is a type used incorrectly.
1596
1597 PR c++/26671
1598 * typeck.c (maybe_warn_about_returning_address_of_local): Look
1599 through COMPONENT_REF and ARRAY_REF.
1600
1601 PR c++/26102
1602 * name-lookup.c (do_class_using_decl): Try to find the base even
1603 if bases_dependent_p.
1604 * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
1605
1606 PR c++/19809
1607 * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
1608
1609 2006-09-04 Nathan Sidwell <nathan@codesourcery.com>
1610
1611 PR 23287 Revert my 2006-09-01 patch.
1612 * parser.c: Reverted.
1613 * pt.c: Reverted.
1614
1615 2006-09-02 Lee Millward <lee.millward@codesourcery.com>
1616
1617 PR c++/27670
1618 PR c++/27493
1619 PR c++/27494
1620 PR c++/27397
1621 * parser.c (cp_parser_template_parameter_list): Add
1622 invalid template parameters to the parameter list as
1623 error_mark_node.
1624
1625 2006-09-02 Jakub Jelinek <jakub@redhat.com>
1626
1627 PR c++/28878
1628 * except.c (build_throw): Only set current_function_returns_abnormally
1629 if cfun is not NULL.
1630
1631 PR c++/26917
1632 * repo.c (repo_file): Remove.
1633 (open_repo_file, reopen_repo_file_for_write): Return fopened
1634 FILE * instead of setting global repo_file variable.
1635 (init_repo): Adjust caller.
1636 (finish_repo): Likewise. Return instead of goto out before
1637 reopen_repo_file_for_write has been called.
1638
1639 2006-09-01 Nathan Sidwell <nathan@codesourcery.com>
1640
1641 PR c++/28705
1642 * semantics.c (finish_call_expr): Add assert.
1643 * name-lookup.c (lookup_arg_dependent): Check we found an overload
1644 or an object.
1645
1646 PR c++/23287
1647 * parser.c (cp_parser_id_expression): Add member_p
1648 argument. Update all callers.
1649 (cp_parser_unqualified_id): Likewise. Lookup a destructor name in
1650 the object's scope, if valid.
1651 (cp_parser_global_scope_opt): Add object_scope_valid_p. Update
1652 callers.
1653 (cp_parser_postfix_dot_deref_expression): Set object_scope.
1654 * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
1655
1656 2006-08-30 Jason Merrill <jason@redhat.com>
1657
1658 PR c++/26670
1659 * class.c (check_field_decls): Don't unset TYPE_PACKED until all
1660 the fields have been processed.
1661
1662 2006-08-29 Andrew Pinski <pinskia@physics.uc.edu>
1663
1664 PR C++/28349
1665 * call.c (build_x_va_arg): Remove the reference type
1666 from the type before creating the pointer type.
1667
1668 2006-08-29 J"orn Rennecke <joern.rennecke@st.com>
1669
1670 PR c++/28139
1671 * except.c (expand_start_catch_block): Use correct types for bitwise
1672 copy.
1673
1674 2006-08-28 Jason Merrill <jason@redhat.com>
1675
1676 PR c++/26670
1677 * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
1678 fields can't be packed.
1679
1680 PR c++/26577
1681 * cvt.c (convert_to_void): Don't automatically load from volatiles
1682 of TREE_ADDRESSABLE type.
1683
1684 2006-08-28 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1685
1686 PR c++/28860
1687 * cp-tree.h (maybe_process_partial_specialization): Return
1688 tree instead of void.
1689 * parser.c (cp_parser_class_head): Use return value of
1690 maybe_process_partial_specialization.
1691 * pt.c (maybe_process_partial_specialization): Return error_mark_node
1692 for broken specializations, TYPE otherwise. Check for template
1693 template parameters.
1694
1695 2006-08-27 Mark Mitchell <mark@codesourcery.com>
1696
1697 PR c++/28058
1698 * pt.c (register_specialization): Return error_mark_node for
1699 specialization-after-instantiation.
1700 * decl2.c (mark_used): Mark the main function used when one of its
1701 clones is used.
1702
1703 2006-08-27 Lee Millward <lee.millward@codesourcery.com>
1704
1705 PR c++/26573
1706 * class.c (check_field_decls): Don't issue error about
1707 local classes containing static data members.
1708
1709 2006-08-26 Joseph S. Myers <joseph@codesourcery.com>
1710
1711 PR c++/24009
1712 * parser.c (struct cp_token): Add input_file_stack_index.
1713 (eof_token): Update.
1714 (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
1715 (cp_lexer_set_source_position_from_token): Restore input file
1716 stack.
1717
1718 2006-08-26 Lee Millward <lee.millward@codesourcery.com>
1719
1720 PR c++/28736
1721 PR c++/28737
1722 PR c++/28738
1723 * pt.c (process_template_parm): Store invalid template
1724 parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
1725 (push_inline_template_parms_recursive): Check for template
1726 parameters having a TREE_VALUE of error_mark_node rather than
1727 check the parameter itself.
1728 (mangle_class_name_for_template): Likewise.
1729 (comp_template_parms): When comparing the individual template
1730 parameters, return 1 if either is error_mark_node.
1731 (current_template_args): Robustify.
1732 (redeclare_class_template): Likewise.
1733
1734 2006-08-26 Mark Mitchell <mark@codesourcery.com>
1735
1736 PR c++/28588
1737 * class.c (resolve_address_of_overloaded_function): Add
1738 access_path parameter. Perform access checks.
1739 (instantiate_type): Adjust call to
1740 resolve_address_of_overloaded_function. Remove unnecessary code.
1741 * tree.c (is_overloaded_fn): Document. Return 2 when there are
1742 acutally multiple functions.
1743 (really_overloaded_fn): Use is_overloaded_fn.
1744 * mangle.c (write_expression): Handle BASELINKs.
1745 * cp-tree.h (really_overloaded_fn): Return bool.
1746 (baselink_for_fns): Declare.
1747 * search.c (lookup_member): Check access for single static
1748 functions here.
1749 * pt.c (convert_nontype_argument_function): Handle BASELINKs.
1750 (tsubst_copy_and_build): Generate BASELINKs for template-ids.
1751 * semantics.c (finish_call_expr): Use baselink_for_fns.
1752 (baselink_for_fns): New function.
1753 (finish_id_expression): Use it.
1754 * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
1755
1756 PR c++/28595
1757 * pt.c (tsubst): Issue errors about attempts to create VLAs at
1758 template-instantiation time.
1759
1760 2006-08-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1761
1762 PR c++/28853
1763 * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
1764 template parameters. Improve error message for template type
1765 parameters.
1766
1767 PR c++/28852
1768 * cp-tree.h (grok_op_properties): Return bool instead of void.
1769 * decl.c (grokfndecl): Discard invalid operator declarations.
1770 (copy_fn_p): Revert change for PR 27547.
1771 (grok_op_properties): Return error status (true on success).
1772 * pt.c (tsubst_decl): Discard invalid operator declarations.
1773
1774 2006-08-25 Mark Mitchell <mark@codesourcery.com>
1775
1776 PR c++/28056
1777 * decl.c (grokdeclarator): Disallow declarations with qualified
1778 names in local scopes.
1779
1780 2006-08-25 Nathan Sidwell <nathan@codesourcery.com>
1781
1782 PR c++/27787
1783 * decl.c (make_typename_type): Only try and resolve it when
1784 context is not dependent. Refactor.
1785 * decl2.c (check_classfn): Push to class scope before looking for
1786 the function.
1787
1788 2006-08-24 Danny Smith <dannysmith@users.sourceforge.net>
1789
1790 PR driver/28528
1791 * g++spec.c (lang_specific_driver): Always check if we need to
1792 swallow a space-separated arg to '-x'.
1793 * lang-specs.h: Don't create ouput files for '-xc++-header'
1794 if -fsyntax-only.
1795
1796 2006-08-23 Jason Merrill <jason@redhat.com>
1797
1798 PR c++/27714
1799 * pt.c (push_template_decl_real): A friend template with class
1800 scope isn't primary.
1801
1802 2006-08-23 Benjamin Smedberg <benjamin@smedbergs.us>
1803
1804 PR c++/28687
1805 * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
1806 Move -fno-rtti check to be more specific.
1807
1808 2006-08-22 Jason Merrill <jason@redhat.com>
1809
1810 PR c++/23372
1811 * call.c (build_over_call): Don't make a copy here if build_call
1812 will make one too.
1813
1814 2006-08-22 Andrew Pinski <pinskia@physics.uc.edu>
1815
1816 PR C++/28450
1817 * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
1818 COMPLEX_TYPEs.
1819
1820 2006-08-22 Simon Martin <simartin@users.sourceforge.net>
1821
1822 PR c++/28420
1823 * parser.c (cp_parser_postfix_expression): Make sure that the
1824 saved value for parser->type_definition_forbidden_message is
1825 restored before returning to avoid an invalid free().
1826
1827 2006-08-22 Jason Merrill <jason@redhat.com>
1828
1829 PR c++/28659
1830 * typeck.c (merge_types): If either of the types have the right
1831 attributes, return that one.
1832
1833 * tree.c (cp_build_type_attribute_variant): Make sure we aren't
1834 doing this to class types.
1835 * typeck.c (original_type): Deal with type quals properly.
1836
1837 2006-08-21 Jason Merrill <jason@redhat.com>
1838
1839 PR c++/27115
1840 * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
1841 just leave the expression as it is.
1842 (finish_stmt_expr): If the statement-expression has class type,
1843 wrap it in a TARGET_EXPR.
1844 * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
1845 CLEANUP_POINT_EXPR.
1846 * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
1847
1848 2006-08-21 Lee Millward <lee.millward@codesourcery.com>
1849
1850 PR c++/26269
1851 * decl.c (duplicate_decls): Return early if either
1852 newdecl or olddecl is error_mark_node.
1853
1854 PR c++/28505
1855 * decl.c (grokdeclarator): Return early after
1856 issuing diagnostic about an incomplete type.
1857
1858 PR c++/28741
1859 * tree.c (decl_anon_ns_mem_p): Robustify.
1860 * decl2.c (determine_visibility): Likewise.
1861
1862 2006-08-20 Mark Mitchell <mark@codesourcery.com>
1863
1864 PR c++/28341
1865 * tree.c (cast_valid_in_integral_constant_expression_p): New
1866 function.
1867 * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
1868 * pt.c (tsubst_expr): Add integral_constant_expression_p
1869 parameter.
1870 (fold_non_dependent_expr): Adjust callers of
1871 tsubst_{expr,copy_and_build}.
1872 (tsubst_friend_function): Likewise.
1873 (tsubst_template_arg): Likewise.
1874 (tsubst_default_argument): Likewise.
1875 (tsubst_decl): Likewise.
1876 (tsubst): Likewise.
1877 (tsubst_omp_clasuses): Likewise.
1878 (regenerate_decl_fromp_template): Likewise.
1879 (instantiate_decl): Likewise.
1880 (tsubst_initializer_list): Likewise.
1881 (tsubst_enum): Likewise.
1882 (tsubst_expr): Use RECUR throughout.
1883 (tsubst_copy_and_build): Change definition of RECUR. Do not allow
1884 invalid casts in integral constant expressions.
1885 * parser.c (cp_parser_postfix_expression): Use
1886 cast_valid_in_integral_constant_expression_p.
1887 (cp_parser_cast_expression): Likewise.
1888 (cp_parser_functional_cast): Likewise.
1889
1890 PR c++/28346
1891 * pt.c (tsubst_qualified_id): Do not strip references from
1892 OFFSET_REFs.
1893
1894 2006-08-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1895
1896 PR c++/28606
1897 * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
1898 Fix formatting.
1899 (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
1900 for valid type-names.
1901 (cp_parser_unqualified_id): Fix error handling for destructors.
1902
1903 PR c++/28710
1904 * decl.c (xref_tag): Improve error message. Return early on error.
1905
1906 PR c++/28711
1907 * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
1908
1909 2006-08-17 Paolo Bonzini <bonzini@gnu.org>
1910
1911 PR c++/28573
1912 * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
1913
1914 2006-08-16 Andrew Pinski <pinskia@physics.uc.edu>
1915
1916 PR c++/28302
1917 * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
1918 perform_integral_promotions for non integral type.
1919
1920 2006-08-16 Jason Merrill <jason@redhat.com>
1921
1922 PR c++/28385
1923 * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
1924 if arg is a function.
1925
1926 2006-08-16 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1927
1928 PR c++/28593
1929 * init.c (build_new): Return early on invalid placement.
1930
1931 2006-08-15 Lee Millward <lee.millward@codesourcery.com>
1932
1933 PR c++/28594
1934 * pt.c (process_template_parm): Robustify.
1935
1936 2006-08-14 Steve Ellcey <sje@cup.hp.com>
1937
1938 PR c++/28288
1939 PR c++/14556
1940 * operators.def: Remove <?, ?>, <?=, and >?= operators.
1941 * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
1942 (cp_parser_warn_min_max): Remove.
1943
1944 2006-08-11 Jason Merrill <jason@redhat.com>
1945
1946 PR c++/28559
1947 * parser.c (cp_parser_elaborated_type_specifier): Also ignore
1948 attributes applied to a TYPENAME_TYPE.
1949
1950 2006-08-09 Lee Millward <lee.millward@codesourcery.com>
1951
1952 PR c++/28637
1953 * pt.c (coerce_template_parms): Copy across the
1954 invalid template arguments to the new template inner arguments.
1955 (retrieve_specialization): Robustify.
1956
1957 PR c++/28638
1958 * pt.c (coerce_template_template_parms): Robustify.
1959
1960 PR c++/28639
1961 * error.c (dump_template_parms): Robustify.
1962
1963 PR c++/28640
1964 * pt.c (redeclare_class_template): Robustify.
1965
1966 PR c++/28641
1967 * pt.c (type_unification_real): Robustify.
1968
1969 2006-08-03 Lee Millward <lee.millward@codesourcery.com>
1970
1971 PR c++/28347
1972 * decl.c (start_decl): Return error_mark_node if a
1973 diagnostic was issed for an invalid typedef initialization.
1974
1975 2006-08-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1976
1977 PR c++/27508
1978 * parser.c (cp_parser_unqualified_id): Check for invalid scopes
1979 when parsing destructor names.
1980
1981 PR c++/28274
1982 * decl.c (duplicate_decls): Call check_default_args here.
1983 (start_preparsed_function): Do not call check_default_args.
1984 * name-lookup.c (pushdecl_maybe_friend): Only call
1985 check_default_args if duplicate_decls got bypassed.
1986
1987 2006-08-02 Richard Guenther <rguenther@suse.de>
1988
1989 PR c++/28479
1990 Revert
1991 2006-07-05 Richard Guenther <rguenther@suse.de>
1992 Andrew Pinski <pinskia@gcc.gnu.org>
1993
1994 PR c++/27084
1995 * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1996 top level qualifiers for pointer type comparisons.
1997
1998 2006-08-02 Mark Mitchell <mark@codesourcery.com>
1999
2000 PR c++/28557
2001 * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
2002
2003 2006-07-31 Mark Mitchell <mark@codesourcery.com>
2004
2005 PR c++/28523
2006 * tree.c (stabilize_expr): Tweak documentation. Add assertion.
2007 (stabilize_call): Tweak documentation.
2008 (stabilize_init): Only call stabilize_call for calls.
2009
2010 2006-08-01 Steve Ellcey <sje@cup.hp.com>
2011
2012 PR c++/28432
2013 * decl2.c (check_classfn): Remove early return.
2014 * search.c (lookup_member): Return NULL with bad type.
2015
2016 2006-08-01 Steve Ellcey <sje@cup.hp.com>
2017
2018 PR c++/28256
2019 * decl.c (check_initializer): Check for 1 initializer on scalar types.
2020
2021 2006-08-01 Daniel Jacobowitz <dan@codesourcery.com>
2022
2023 PR debug/23336
2024 * pt.c (tsubst_copy_and_build): Mark used enum types.
2025 * semantics.c (finish_id_expression): Likewise.
2026
2027 2006-07-31 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2028
2029 PR c++/6634
2030 * decl.c (grokdeclarator): Check whether "long" or "short" was
2031 specified for non-integral types.
2032
2033 2006-07-28 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2034
2035 * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
2036
2037 2006-07-28 Lee Millward <lee.millward@codesourcery.com>
2038
2039 PR c++/27668
2040 PR c++/27962
2041 * pt.c (process_template_parm) Store invalid template
2042 parameters as error_mark_node in the paramater list.
2043 (push_inline_template_parms_recursive): Handle invalid
2044 template parameters.
2045 (comp_template_parms): Likewise.
2046 (check_default_tmpl_arg): Likewise.
2047 (coerce_template_template_parms): Likewise.
2048 (mangle_class_name_for_template): Likewise.
2049 (tsubst_template_parms): Likewise.
2050 * error.c (dump_template_argument_list): Likewise.
2051
2052 2006-07-28 Kazu Hirata <kazu@codesourcery.com>
2053
2054 * cp-tree.h: Fix a comment typo.
2055
2056 2006-07-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2057
2058 PR c++/27572
2059 * decl.c (grokdeclarator): Return error_mark_node after invalid
2060 typedef.
2061
2062 2006-07-23 Daniel Jacobowitz <dan@codesourcery.com>
2063
2064 PR c++/28460
2065 * decl.c (grokvardecl): Use FROB_CONTEXT.
2066 * pt.c (register_specialization): Likewise.
2067
2068 2006-07-23 Mark Mitchell <mark@codesourcery.com>
2069
2070 PR c++/28025
2071 * cp-tree.h (LOOKUP_HIDDEN): New macro. Reformat comments.
2072 * name-lookup.c (unqualified_namespace_lookup): There is no way to
2073 have a hidden name in non-namespace scopes.
2074 * pt.c (tsubst_friend_class): Look for hidden names.
2075 * decl.c (lookup_and_check_tag): Fix typo in comment.
2076
2077 * semantics.c (finish_compound_literal): Fix typo in comment.
2078
2079 2006-07-21 Jason Merrill <jason@redhat.com>
2080
2081 * decl2.c (determine_visibility): Don't propagate visibility from
2082 type to decl.
2083 (constrain_class_visibility): Don't warn in system headers.
2084 Don't warn about pointer fields.
2085
2086 2006-07-20 Mike Stump <mrs@apple.com>
2087
2088 * decl2.c (determine_visibility_from_class): Don't use hidden
2089 visibility for explicit instantiations.
2090
2091 2006-07-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2092
2093 PR c++/28250
2094 * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
2095 valid decls. Cleanup.
2096
2097 PR c++/28363
2098 * semantics.c (check_template_template_default_arg): Simplify
2099 error handling.
2100
2101 2006-07-20 Jason Merrill <jason@redhat.com>
2102
2103 PR c++/28407
2104 * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
2105 const variables with implicit internal linkage.
2106 * tree.c (decl_linkage): Only return lk_external if it's set.
2107
2108 PR c++/28409
2109 * decl2.c (constrain_visibility): Ignore the anonymous namespace
2110 for extern "C" decls.
2111 (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
2112
2113 * decl2.c (constrain_visibility): Remove specified and reason
2114 parameters. Don't touch decls that already have explicit visibility.
2115 (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
2116 template.
2117 (determine_visibility_from_class): Reverse sense of
2118 DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
2119 (constrain_class_visibility): Only complain about member visibility
2120 if the member type is another class. Don't change visibility of the
2121 current class.
2122
2123 2006-07-19 Mark Mitchell <mark@codesourcery.com>
2124
2125 PR c++/28338
2126 * decl.c (layout_var_decl): Don't call push_local_name here.
2127 (initialize_artificial_var): Assert artificiality.
2128 (cp_finish_decl): Call push_local_name here.
2129
2130 2006-07-18 Mark Mitchell <mark@codesourcery.com>
2131
2132 PR c++/28337
2133 * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
2134 templates.
2135
2136 2006-07-18 Mark Mitchell <mark@codesourcery.com>
2137
2138 PR c++/28048
2139 * semantics.c (check_accessibility_of_qualified_id): Robustify.
2140
2141 PR c++/28235
2142 * pt.c (tsubst_decl): Handling substitutions into a static data
2143 member from within the scope of the tempalte itself.
2144
2145 2006-07-18 Lee Millward <lee.millward@gmail.com>
2146
2147 PR c++/28258
2148 * method.c (locate_copy): Check for non_reference
2149 returning error_mark_node.
2150
2151 PR c++/28260
2152 * decl.c (duplicate_decls): Return error_mark_node
2153 on ambiguous declaration.
2154
2155 2006-07-18 Steve Ellcey <sje@cup.hp.com>
2156
2157 PR c++/27495
2158 * search.c (adjust_result_of_qualified_name_lookup): Change
2159 assert to part of if statement.
2160
2161 2006-07-17 Steve Ellcey <sje@cup.hp.com>
2162
2163 PR c++/28291
2164 * decl.c (reshape_init_class): Return error_mark_node on error.
2165
2166 2006-07-17 Steve Ellcey <sje@cup.hp.com>
2167
2168 PR c++/28304
2169 * decl2.c (check_classfn): Return NULL_TREE on error.
2170
2171 2006-07-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2172
2173 PR c++/28250
2174 * name-lookup.c (pushdecl_maybe_friend): Return early on
2175 error_mark_node.
2176 * except.c (expand_start_catch_block): Use error_mark_node instead
2177 of NULL_TREE for invalid decls.
2178 * parser.c (cp_parser_exception_declaration): Return error_mark_node
2179 on invalid catch parameter. Simplify.
2180
2181 2006-07-16 Jakub Jelinek <jakub@redhat.com>
2182
2183 PR c++/28370
2184 * decl2.c (note_vague_linkage_var): Removed.
2185 (finish_static_data_member_decl): Add decl to pending_statics vector
2186 directly. Do it even for non-public decls.
2187
2188 2006-07-15 Lee Millward <lee.millward@gmail.com>
2189
2190 PR c++/28292
2191 * decl2.c (acceptable_java_type): Robustify. Use
2192 proper Boolean return type instead of return 1.
2193 (check_java_method): Don't issue error about
2194 type not being an acceptable Java parameter if
2195 it's error_mark_node.
2196
2197 PR c++/28269
2198 * parser.c (cp_parser_elaborated_type_specifier):
2199 Return early if an invalid type was detected.
2200
2201 2006-07-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2202
2203 PR c++/28249
2204 * parser.c (cp_parser_check_decl_spec): New function.
2205 (cp_parser_decl_specifier_seq): Factor out check for repeated
2206 decl-specifiers into cp_parser_check_decl_spec. Use it.
2207 (cp_parser_type_specifier_seq): Use it.
2208
2209 PR c++/28294
2210 * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
2211 only.
2212
2213 PR c++/28387
2214 * decl2.c (cplus_decl_attributes): Check for invalid decls.
2215
2216 2006-07-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2217
2218 PR c++/28343
2219 * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
2220 * decl2.c (grokfield): Likewise.
2221
2222 2006-07-12 Geoffrey Keating <geoffk@apple.com>
2223
2224 * decl2.c (determine_visibility): Don't change visibility of
2225 function locals because of -fvisibility-inlines-hidden.
2226
2227 2006-07-12 Jason Merrill <jason@redhat.com>
2228
2229 PR c++/28217
2230 * semantics.c (note_decl_for_pch): Don't premangle templates.
2231
2232 2006-07-12 Martin Michlmayr <tbm@cyrius.com>
2233
2234 * typeck.c (string_conv_p): Remove spurious quotation mark in
2235 warning.
2236
2237 2006-07-07 Lee Millward <lee.millward@gmail.com>
2238 Andrew Pinski <pinskia@gmail.com>
2239
2240 PR c++/27820
2241 * decl.c (define_label): Return error_mark_node on error.
2242 * semantics.c (finish_label_stmt): Don't call
2243 add_stmt for invalid labels.
2244
2245 2006-07-06 Jason Merrill <jason@redhat.com>
2246
2247 PR c++/28279
2248 * decl2.c (finish_static_data_member_decl): Don't assert
2249 TREE_PUBLIC.
2250
2251 2006-07-05 Jason Merrill <jason@redhat.com>
2252
2253 PR c++/13983
2254 PR c++/17519
2255 * class.c (check_field_decls): Check TYPE_PACKED after
2256 stripping array types.
2257 (finish_struct_bits): Don't copy TYPE_SIZE here.
2258
2259 PR c++/18681
2260 * friend.c (is_friend): Fix DR 45 implementation.
2261
2262 2006-07-05 Richard Guenther <rguenther@suse.de>
2263 Andrew Pinski <pinskia@gcc.gnu.org>
2264
2265 PR c++/27084
2266 * cp-objcp-common.c (cxx_types_compatible_p): Ignore
2267 top level qualifiers for pointer type comparisons.
2268
2269 2006-07-01 Jason Merrill <jason@redhat.com>
2270
2271 PR c++/28215
2272 * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
2273 DECL_TEMPLATE_INFO.
2274
2275 2006-06-30 Jason Merrill <jason@redhat.com>
2276
2277 PR c++/26577
2278 * call.c (build_new_method_call): Force evaluation of the
2279 instance pointer, not the object.
2280
2281 2006-06-30 Kazu Hirata <kazu@codesourcery.com>
2282
2283 * decl2.c: Fix a comment typo.
2284
2285 2006-06-30 Jason Merrill <jason@redhat.com>
2286
2287 PR c++/18698
2288 * decl2.c (grokfield): Only try to treat the decl as an access
2289 declaration if the scope is a class.
2290
2291 2006-06-29 Jason Merrill <jason@redhat.com>
2292
2293 PR c++/26905
2294 PR c++/26612
2295 PR c++/27000
2296 PR c++/26984
2297 PR c++/19134
2298 * decl2.c (determine_visibility): Overhaul.
2299 (determine_visibility_from_class): Likewise.
2300 (min_vis_r, type_visibility, constrain_visibility): New fns.
2301 (constrain_visibility_for_template): Likewise.
2302 (constrain_class_visibility): Likewise.
2303 * decl.c (cp_finish_decl): Call determine_visibility for function
2304 decls, too.
2305 * name-lookup.c (pushtag): Call determine_visibility.
2306 * decl.c (duplicate_decls): Don't copy visibility from template to
2307 specialization.
2308 * pt.c (check_explicit_specialization): Likewise.
2309 (lookup_template_class, tsubst_decl): Call determine_visibility.
2310 * class.c (finish_struct_1): Call constrain_class_visibility.
2311
2312 PR c++/26905
2313 PR c++/21675
2314 PR c++/17470
2315 * parser.c (cp_parser_explicit_instantiation): Pass the attributes
2316 to grokdeclarator.
2317 (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
2318 (cp_parser_enum_specifier): Likewise.
2319 (cp_parser_elaborated_type_specifier): Apply attributes if this
2320 declares only the class.
2321 (cp_parser_class_specifier): Apply leading attributes immediately.
2322 * semantics.c (begin_class_definition): Add attributes parameter,
2323 apply them to the type.
2324
2325 PR c++/21581
2326 PR c++/25915
2327 * tree.c (decl_anon_ns_mem_p): New function.
2328 * cp-tree.h: Declare it.
2329 * decl2.c (determine_visibility): Make anonymous namespace
2330 members static.
2331 (min_vis_r, constrain_visibility): Likewise.
2332 * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
2333 pseudo-types.
2334 * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
2335 global_namespace.
2336 * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
2337 on anonymous namespaces.
2338
2339 2006-06-28 Jason Merrill <jason@redhat.com>
2340
2341 PR c++/27424
2342 * pt.c (convert_template_argument): Pass all template arguments
2343 on to coerce_template_template_parms.
2344
2345 2006-06-25 Lee Millward <lee.millward@gmail.com>
2346 Mark Mitchell <mark@codesuorcery.com>
2347
2348 PR c++/28054
2349 * decl2.c (grokbitfied): Remove check for grokdeclarator
2350 returning NULL_TREE, instead check for error_mark_node
2351 to indicate failure.
2352 * decl.c (grokdeclarator): Adjust block comment.
2353
2354 2006-06-25 Lee Millward <lee.millward@gmail.com>
2355
2356 PR c++/28051
2357 * mangle.c (mangle_conv_op_name_for_type): Check for
2358 invalid types.
2359 * name-lookup.c (push_class_level_binding): Robustify.
2360 (do_class_using_decl): Return early if name is error_mark_node.
2361
2362 2006-06-23 Steve Ellcey <sje@cup.hp.com>
2363
2364 PR c++/28114
2365 * name-lookup.c (pushtag): Return if we have error_mark_node.
2366
2367 2006-06-23 Steve Ellcey <sje@cup.hp.com>
2368
2369 PR c++/27019
2370 * typeck2.c (process_init_constructor_array): Set ce->value on errors.
2371
2372 2006-06-23 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2373
2374 PR c++/28112
2375 * parser.c (cp_parser_attribute_list): Skip attributes with invalid
2376 arguments. Fix comment.
2377
2378 PR c++/11468
2379 * init.c (build_new_1): Handle error_mark_nodes returned by
2380 build_java_class_ref.
2381 (build_java_class_ref): Do not abort compilation, but return
2382 error_mark_node. Improve error message. Fix indentation.
2383
2384 2006-06-23 Danny Smith <dannysmith@users.sourceforge.net>
2385
2386 PR target/27789
2387 * decl.c (start_decl): Check that dllimports are not initialized.
2388
2389 2006-06-22 Lee Millward <lee.millward@gmail.com>
2390
2391 PR c++/27805
2392 * typeck2.c (build_m_component_ref): Use error_operand_p.
2393
2394 PR c++/27821
2395 * decl.c (grokdeclarator): Return error_mark_node on
2396 invalid uses of the scope resolution operator.
2397
2398 2006-06-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2399
2400 PR c++/28111
2401 * pt.c (determine_specialization): Check for invalid decls.
2402
2403 PR c++/28110
2404 * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
2405 parameters.
2406
2407 PR c++/28109
2408 * rtti.c (get_tinfo_decl_dynamic): Robustify.
2409
2410 2006-06-20 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2411
2412 PR c++/28052
2413 * init.c (push_base_cleanups): Skip members with invalid types.
2414 * typeck.c (build_class_member_access_expr): Robustify.
2415
2416 2006-06-19 Mark Mitchell <mark@codesourcery.com>
2417
2418 * pt.c (instantiate_template): Fix typo in comment.
2419
2420 2006-06-19 Richard Guenther <rguenther@suse.de>
2421
2422 * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
2423 power-of-two token vector size.
2424
2425 2006-06-16 Mark Mitchell <mark@codesourcery.com>
2426
2427 PR c++/28016
2428 * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
2429 members.
2430
2431 PR c++/27979
2432 * call.c (standard_conversion): Strip cv-qualifiers from bitfield
2433 types.
2434
2435 PR c++/27884
2436 * decl.c (have_extern_spec): Remove.
2437 (start_decl): Do not check have_extern_spec.
2438 (start_function): Likewise.
2439 * cp-tree.h (have_extern_spec): Remove.
2440 * parser.c (cp_parser_linkage_specification): Don't set
2441 have_extern_spec.
2442 (cp_parser_init_declarator): Likewise.
2443 (cp_parser_parameter_declaration): Do not treat parameters as
2444 within the scope of an unbraced linkage specification.
2445
2446 2006-06-15 Mark Mitchell <mark@codesourcery.com>
2447
2448 PR c++/27689
2449 * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
2450 macro.
2451 * pt.c (unify): Use it.
2452
2453 PR c++/27666
2454 * call.c (build_conditional_expr): Robustify.
2455
2456 PR c++/27640
2457 * pt.c (instantiate_template): Set processing_template_decl to
2458 zero while performing substitutions.
2459
2460 2006-06-14 Mark Mitchell <mark@codesourcery.com>
2461
2462 PR c++/27665
2463 * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
2464 identify destructors.
2465 (cp_parser_nested_name_specifier_opt): Remove invalid
2466 optimization.
2467 (cp_parser_template_id): Refine heuristic for determining whether
2468 we are entering a scope.
2469
2470 PR c++/27648
2471 * parser.c (cp_parser_declarator): Robustify.
2472
2473 PR c++/26559
2474 * pt.c (tsubst_expr): Use finish_omp_atomic.
2475 (value_dependent_expression_p): All CALL_EXPRs are dependent.
2476 * semantics.c (finish_omp_atomic): Rework to use standard
2477 paradigms for handling non-dependent expressions.
2478
2479 2006-06-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
2480
2481 * typeck.c (build_modify_expr): Tidy diagnostic message.
2482
2483 2006-06-14 Mark Mitchell <mark@codesourcery.com>
2484
2485 PR c++/28018
2486 * typeck.c (build_modify_expr): Disallow array assignment.
2487
2488 2006-06-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
2489
2490 * cp-tree.def: Fix typo.
2491
2492 2006-06-13 Mark Mitchell <mark@codesourcery.com>
2493
2494 PR c++/27227
2495 * decl.c (decls_match): Allow an extern "C" variable declarations
2496 from different namespaces to match.
2497 (duplicate_decls): Disallow redeclaring a variable with a
2498 different linkage specification.
2499
2500 2006-06-13 Jakub Jelinek <jakub@redhat.com>
2501
2502 PR middle-end/27793
2503 * cp-tree.h (cxx_int_tree_map): New struct.
2504 (struct language_function): Add extern_decl_map field.
2505 * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
2506 to cp_function_chain->extern_decl_map hash table instead of
2507 copying over DECL_UID.
2508 * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
2509 functions.
2510 (cp_genericize_r): Remap DECL_EXTERN local decls using
2511 cp_function_chain->extern_decl_map hash table.
2512 * decl.c (finish_function): Clear extern_decl_map.
2513
2514 2006-06-12 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2515
2516 PR c++/27601
2517 * semantics.c (finish_offsetof): Handle pseudo-destructors.
2518
2519 PR c++/27933
2520 * name-lookup.c (lookup_qualified_name): Always return error_mark_node
2521 if lookup fails.
2522
2523 PR c++/27951
2524 * decl2.c (finish_anon_union): Return early if build_anon_union_vars
2525 fails.
2526
2527 2006-06-12 Roger Sayle <roger@eyesopen.com>
2528
2529 PR c++/21210
2530 * typeck2.c (build_functional_cast): Use cp_convert to construct
2531 non-aggregate initializers instead of the user-level build_c_cast.
2532
2533 2006-06-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2534
2535 PR c++/27601
2536 * cp-tree.h (finish_offsetof): Add prototype.
2537 * semantics.c (finish_offsetof): New function.
2538 * parser.c (cp_parser_builtin_offsetof): Call it instead of
2539 fold_offsetof.
2540 * pt.c (tsubst_copy_and_build): Likewise.
2541
2542 2006-06-06 Mark Mitchell <mark@codesourcery.com>
2543
2544 PR c++/27177
2545 * call.c (standard_conversion): Require that the derived type be
2546 complete when performing a derived-to-base conversion.
2547
2548 2006-06-04 Mark Mitchell <mark@codesourcery.com>
2549
2550 PR c++/27819
2551 * decl.c (cp_finish_decl): Process initializers for static data
2552 members with non-dependent initializers, even in templates.
2553
2554 PR c++/27722
2555 * decl.c (maybe_deduce_size_from_array_init): If the declaration
2556 is erroneous, give it an erroneous type.
2557 (layout_var_decl): If the type is erroneous, give up.
2558 (check_initializer): Likewise.
2559
2560 PR c++/27807
2561 * cp-tree.h (TYPE_OBJ_P): New macro.
2562 (TYPE_PTROB_P): Use it.
2563 (TYPE_REF_OBJ_P): Likewise.
2564 * semantics.c (finish_compound_literal): Do not permit compound
2565 literals of non-object types.
2566
2567 PR c++/27806
2568 * typeck.c (original_type): Robustify.
2569
2570 2006-06-05 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2571
2572 PR c++/27804
2573 * init.c (constant_value_1): Return decl instead of error_mark_node
2574 for invalid initializers.
2575
2576 2006-06-01 Andrew Pinski <pinskia@physics.uc.edu>
2577
2578 PR c++/27592
2579 * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
2580 on operand of the COND_EXPR for the null pointer check.
2581
2582 2006-06-01 Andrew Pinski <pinskia@physics.uc.edu>
2583
2584 PR c++/26740
2585 * typeck.c (build_unary_op): Mark the function as being used.
2586
2587 2006-06-01 Alexandre Oliva <aoliva@redhat.com>
2588
2589 PR c++/26660
2590 * parser.c (cp_parser_initial_pragma): Read one more token for
2591 caller after reading PCH file in.
2592
2593 2006-05-31 Mark Mitchell <mark@codesourcery.com>
2594
2595 PR c++/27801
2596 * call.c (perform_implicit_conversion): Do not actually perform
2597 conversions in templates.
2598
2599 PR c++/26496
2600 * call.c (resolve_args): Check for invalid uses of bound
2601 non-static member functions.
2602 * init.c (build_offset_ref): Return error_mark_node for errors.
2603
2604 PR c++/27385
2605 * decl.c (reshape_init): Robustify.
2606 (reshape_init_array_1): Likewise.
2607
2608 2006-05-30 Mark Mitchell <mark@codesourcery.com>
2609
2610 PR c++/27808
2611 * parser.c (cp_parser_decl_specifier_seq): Issue errors about
2612 "friend" specifiers that do not appear in class scopes.
2613
2614 PR c++/27803
2615 * class.c (check_bitfield_decl): Ensure that all bitfields have
2616 integral type.
2617
2618 2006-05-29 Kazu Hirata <kazu@codesourcery.com>
2619
2620 * pt.c (convert_nontype_argument): Fix a typo in an error
2621 message.
2622
2623 2006-05-28 Kazu Hirata <kazu@codesourcery.com>
2624
2625 * decl.c, decl2.c, parser.c: Fix comment typos. Follow
2626 spelling conventions.
2627
2628 2006-05-24 Mark Mitchell <mark@codesourcery.com>
2629
2630 PR c++/20103
2631 * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
2632 error_mark_node to indicate an initialization is OK.
2633 (start_decl): Likewise. Adjust call to start_decl_1.
2634 (start_decl_1): Add initialized parameter. Simplify.
2635 * except.c (initialize_handler_parm): Adjust call to
2636 setart_decl_1.
2637 (expand_start_catch_block): Let cp_finish_decl initialize catch
2638 parameters.
2639 * cp-tree.h (start_decl_1): Adjust prototype.
2640 * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
2641 (instantiate_decl): Let cp_finish_decl handle initialization.
2642 * semantics.c (finish_compound_literal): Create a temporary
2643 variable for the literal.
2644 * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
2645 cases.
2646 * decl2.c (finish_static_data_member_decl): Don't set
2647 DECL_INITIAL.
2648 (grokfield): Do not try to initialize functions.
2649
2650 2006-05-23 Mark Mitchell <mark@codesourcery.com>
2651
2652 PR c++/20173
2653 * pt.c (determine_specialization): Disallow partial
2654 specializations of templates.
2655
2656 2006-05-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2657
2658 PR c++/27716
2659 * typeck.c (build_modify_expr): Test arguments for error_operand_p.
2660
2661 * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
2662
2663 2006-05-21 Mark Mitchell <mark@codesourcery.com>
2664
2665 PR c++/27210
2666 * cp-tree.h (cp_save_expr): New function.
2667 * init.c (build_new): Correct logic for zero-element array
2668 warning. Use cp_save_expr.
2669 * tree.c (cp_save_expr): New function.
2670
2671 2006-05-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2672
2673 PR c++/27398
2674 * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
2675 or void_type_node.
2676
2677 2006-05-19 Mike Stump <mrs@apple.com>
2678
2679 * typeck.c (default_conversion): Remove static.
2680
2681 2006-05-19 Mark Mitchell <mark@codesourcery.com>
2682
2683 PR c++/26433
2684 * cp-tree.h (begin_function_try_block): Change prototype.
2685 (finish_function_handler_sequence): Likewise.
2686 * parser.c (cp_parser_function_try_block): Adjust calls.
2687 * pt.c (tsubst_expr): Adjust calls.
2688 * semantics.c (begin_function_try_block): Create an artificial
2689 outer scope.
2690 (finish_function_handler_sequence): Close it.
2691
2692 2006-05-18 Mark Mitchell <mark@codesourcery.com>
2693
2694 PR c++/27471
2695 PR c++/27506
2696 * typeck.c (decay_conversion): Convert bitfields to their declared
2697 types here. Improve documentation. Avoid use of cp_convert.
2698 (default_conversion): Make it static. Perform integral promotions
2699 before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
2700 conversions.
2701 * init.c (build_init): Remove.
2702 (expand_default_init): Do not call rvalue.
2703 * call.c (null_ptr_cst_p): Robustify.
2704 (build_conditional_expr): Tidy.
2705 * except.c (build_throw): Do not perform lvalue-to-rvalue
2706 conversion on operand before initializing temporary.
2707 * tree.c (convert.h): Include it.
2708 (convert_bitfield_to_declared_type): Use convert_to_integer, not
2709 cp_convert.
2710 (rvalue): Don't convert bitfields to their declared type here.
2711 * cp-tree.h (build_init): Remove.
2712 (default_conversion): Likewise.
2713 * typeck2.c (build_m_component_ref): Do not perform
2714 lvalue-to-rvalue, function-to-pointer, or array-to-pointer
2715 conversions here. Correct error message.
2716
2717 2006-05-17 Mark Mitchell <mark@codesourcery.com>
2718
2719 PR c++/26122
2720 * decl2.c (check_member_template): Remove checks for virtual
2721 functions.
2722 * parser.c (cp_parser_function_specifier_opt): Complain about
2723 virtual templates.
2724 (cp_parser_pure_specifier): Likewise.
2725
2726 PR c++/26068
2727 * parser.c (cp_parser_set_storage_class): Check for
2728 invalid uses of storage classes on unbraced linkage
2729 specifications.
2730 (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
2731 to cp_parser_set_storage_class.
2732
2733 2006-05-17 Jakub Jelinek <jakub@redhat.com>
2734
2735 PR c++/27491
2736 * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
2737 on CONSTRUCTORs.
2738
2739 PR middle-end/27415
2740 * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
2741 on combined parallel workshare constructs.
2742 * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
2743
2744 2006-05-16 H.J. Lu <hongjiu.lu@intel.com>
2745
2746 PR driver/26885
2747 * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
2748
2749 2006-05-15 Mark Mitchell <mark@codesourcery.com>
2750
2751 PR c++/27339
2752 * cp-tree.h (perform_access_checks): New function.
2753 * semantics.c (perform_access_checks): New function.
2754 (perform_deferred_access_checks): Use it.
2755 * parser.c (cp_parser_simple_declaration): Adjust call to
2756 cp_parser_init_declarator.
2757 (cp_parser_type_parameter): Do not defer checks in default
2758 arguments.
2759 (cp_parser_explicit_specialization): Adjust call to
2760 cp_parser_single_declaration.
2761 (cp_parser_init_declarator): Perform template-parameter access
2762 checks.
2763 (cp_parser_parameter_declaration): Do not defer checks for
2764 template parameter default arguments.
2765 (cp_parser_template_declaration_after_export): Gather access
2766 checks for template parameters, and pass them to
2767 cp_parser_single_declaration.
2768 (cp_parser_template_parameter_access_checks): New function.
2769 (cp_parser_single_declaration): Add checks parameter.
2770
2771 PR c++/27505
2772 * call.c (convert_like_real): Convert bitfields to their declared
2773 types when forming an rvalue.
2774 * tree.c (convert_bitfield_to_declared_type): New function.
2775 (rvalue): Use it.
2776 * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
2777
2778 2006-05-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2779
2780 PR c++/27582
2781 * pt.c (any_dependent_template_arguments_p): Return early on invalid
2782 argument list.
2783
2784 PR c++/27581
2785 * search.c (adjust_result_of_qualified_name_lookup): Skip on
2786 invalid context_class.
2787
2788 PR c++/27315
2789 * pt.c (do_decl_instantiation): Return early on invalid decl.
2790
2791 PR c++/27559
2792 * pt.c (push_template_decl_real): Return error_mark_node instead
2793 of broken decl.
2794
2795 PR c++/27496
2796 * pt.c (tsubst_friend_class): Return early on invalid friend
2797 declarations.
2798
2799 2006-05-14 H.J. Lu <hongjiu.lu@intel.com>
2800
2801 * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
2802 (cp/decl2.o): Likewise.
2803 (cp/typeck.o): Likewise.
2804 (cp/cvt.o): Likewise.
2805 (cp/parser.o): Likewise.
2806 (cp/call.o): Replace target.h with $(TARGET_H).
2807
2808 2006-05-14 Alexandre Oliva <aoliva@redhat.com>
2809
2810 * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
2811 COMPONENT_REF alone.
2812
2813 2006-05-11 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2814
2815 PR c++/27547
2816 * decl.c (copy_fn_p): Return early on non-member functions.
2817
2818 2006-05-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2819
2820 PR c++/27447
2821 * decl2.c (build_memfn_type): Skip invalid functions and class types.
2822
2823 2006-05-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2824
2825 PR c++/27427
2826 * pt.c (convert_nontype_argument): Return early on invalid arguments.
2827
2828 * pt.c (process_template_parm): Remove superfluous temporary.
2829
2830 PR c++/27430
2831 * pt.c (process_template_parm): Handle erroneous non-type parameters.
2832
2833 PR c++/27423
2834 * typeck.c (convert_for_initialization): Skip erroneous types.
2835
2836 PR c++/27422
2837 * typeck.c (convert_arguments): Return early on args with
2838 invalid types.
2839
2840 2006-05-03 Aldy Hernandez <aldyh@redhat.com>
2841
2842 PR/21391
2843 * typeck.c (build_static_cast_1): Save casted types in used types
2844 hash table.
2845 (build_reinterpret_cast_1): Same.
2846 * rtti.c (build_dynamic_cast_1): Same.
2847
2848 2006-05-04 Jakub Jelinek <jakub@redhat.com>
2849
2850 PR c++/27359
2851 * parser.c (cp_parser_omp_for_loop): Only call
2852 cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
2853 called.
2854
2855 2006-05-02 Mark Mitchell <mark@codesourcery.com>
2856
2857 PR c++/27102
2858 * decl.c (grokdeclarator): Robustify checks for defining members
2859 of incomplete types.
2860
2861 PR c++/27309
2862 * class.c (add_method): Call grok_special_member_properties.
2863 * decl.c (grokdeclarator): Don't call it here.
2864 (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
2865 assignment operator. Set TYPE_HAS_CONSTURCTOR if DECL is a
2866 constructor.
2867 (start_method): Don't call grok_special_member_properties.
2868 * method.c (implicitly_declare_fn): Likewise.
2869 * pt.c (instantiate_class_template): Likewise.
2870 * decl2.c (grokfield): Likewise.
2871
2872 2006-05-02 Jakub Jelinek <jakub@redhat.com>
2873
2874 PR middle-end/27337
2875 * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
2876 * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
2877 * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
2878
2879 2006-04-30 Mark Mitchell <mark@codesourcery.com>
2880
2881 PR c++/27094
2882 * pt.c (tsubst_default_argument): Increment function_depth around
2883 call to tsubst_expr.
2884 * parser.c (cp_parser_parameter_declaration): Likewise.
2885 * decl2.c (mark_used): Tidy.
2886
2887 2006-04-30 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2888
2889 PR c++/27278
2890 * decl.c (grok_op_properties): Skip operators with invalid args
2891 when checking for class-type or enum-type args.
2892
2893 2006-04-29 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2894
2895 PR c++/27279
2896 * decl.c (copy_fn_p): Skip functions with invalid first arg.
2897
2898 2006-04-27 Mark Mitchell <mark@codesourcery.com>
2899
2900 PR c++/27292
2901 * tree.c (rvalue): Convert bitfields to their declared types.
2902
2903 PR c++/27102
2904 * typeck2.c (cxx_incomplete_type_diagnostic): Handle
2905 TYPENAME_TYPE.
2906
2907 2006-04-24 Mark Mitchell <mark@codesourcery.com>
2908
2909 PR c++/27292
2910 * typeck.c (decay_conversion): Don't adjust bitfield types.
2911 (perform_integral_promotions): Treat bitfield enums as enums, not
2912 as short integer types.
2913 * tree.c (rvalue): Convert bitfields to their correct types.
2914
2915 2006-04-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2916
2917 PR c++/19963
2918 * class.c (layout_class_type): Skip fields with invalid types.
2919
2920 2006-04-23 Mark Mitchell <mark@codesourcery.com>
2921
2922 PR c++/26912
2923 * cp-tree.h (build_this_parm): Declare.
2924 (grok_method_quals): Remove.
2925 (build_memfn_type): Declare.
2926 (build_artificial_parm): Declare.
2927 (do_friend): Remove quals parameter.
2928 * decl.c (build_this_parm): New function.
2929 (grokfndecl): Use it. Do not pass quals to grokclassfn.
2930 (grokdeclarator): Rename quals to memfn_quals. Avoid allocating
2931 unnecessary TYPE_DECLs. Correct qualification of member function
2932 types. Tidy.
2933 * method.c (implicitly_declare_fn): Use build_this_parm.
2934 * friend.c (do_friend): Remove quals parameter.
2935 * decl2.c (grok_method_quals): Remove.
2936 (build_memfn_type): New function.
2937 (build_artificial_parm): Give it external linkage.
2938 (grokclassfn): Remove quals parameter. Do not build "this"
2939 PARM_DECL here.
2940
2941 PR c++/26534
2942 * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
2943 * typeck.c (is_bitfield_expr_with_lowered_type): New function.
2944 (decay_conversion): Convert bitfield expressions to the correct
2945 type.
2946 (build_modify_expr): Remove spurious conversions.
2947 * class.c (layout_class_type): Modify the type of bitfields to
2948 indicate a limited range.
2949 * call.c (standard_conversion): Adjust the type of bitfield
2950 expressions used in an rvalue context.
2951 (build_conditional_expr): Likewise.
2952
2953 2006-04-22 Kazu Hirata <kazu@codesourcery.com>
2954
2955 * decl.c: Fix comment typos.
2956
2957 2006-04-21 Eric Christopher <echristo@apple.com>
2958
2959 * decl.c: Fix typo in function name.
2960
2961 2006-04-19 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2962
2963 PR c++/26558
2964 * parser.c (cp_parser_class_name): Check for invalid typenames.
2965 Rearrange code.
2966
2967 PR c++/26739
2968 * pt.c (tsubst_friend_function): Return early if
2969 pushdecl_namespace_level fails.
2970
2971 PR c++/26036
2972 * typeck.c (convert_arguments): Return error_mark_node instead of
2973 error_mark_list.
2974 * cp-tree.h (error_mark_list): Remove declaration.
2975 * decl.c (error_mark_list): Remove definition.
2976 (cxx_init_decl_processing): Do not initialize error_mark_list.
2977
2978 PR c++/10385
2979 * rtti.c (build_dynamic_cast_1): Check for invalid conversions
2980 before calling convert_to_reference.
2981 * cvt.c (convert_to_reference): Assert that reftype is a
2982 REFERENCE_TYPE.
2983
2984 2006-04-19 Mark Mitchell <mark@codesourcery.com>
2985
2986 PR c++/27102
2987 * class.c (currently_open_class): Tidy.
2988 * decl.c (grokdeclarator): If we encounter an erroneous
2989 declarator, assume that we have already issued an error message
2990 and return. Return error_mark_node instead of NULL_TREE in more
2991 places. Issue errors about function definitions that do not have
2992 a function declarator. Check for complete types for all function
2993 definitions.
2994 * cp-tree.h (cp_error_declarator): Remove.
2995 (currently_open_class): Change return type.
2996 * parser.c (cp_parser_id_expression): Add optional_p parameter.
2997 (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
2998 (cp_parser_id_expression): Likewise.
2999 (cp_parser_unqualified_id): If the name is optional, return
3000 NULL_TREE.
3001 (cp_parser_postfix_dot_deref_expression): Adjust calls.
3002 (cp_parser_type_parameter): Likewise.
3003 (cp_parser_unqualified_id): Likewise.
3004 (cp_parser_direct_declarator): Likewise.
3005 (cp_parser_declarator_id): Add optional_p parameter.
3006 (cp_parser_function_definition_from_specifiers_and_declarator):
3007 Assume that start_function indicates failure only if it has issued
3008 an error.
3009 (cp_parser_omp_var_list_no_open): Adjust calls.
3010
3011 2006-04-17 Janis Johnson <janis187@us.ibm.com>
3012
3013 PR c++/26114, c++/26115
3014 * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
3015 * class.c (check_field_decls): Ditto.
3016
3017 2006-04-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3018
3019 * init.c (build_offset_ref): Remove superfluous temporary.
3020
3021 2006-04-16 Mark Mitchell <mark@codesourcery.com>
3022
3023 PR c++/26365
3024 * typeck.c (finish_class_member_access_expr): Robustify
3025
3026 2006-04-15 Kazu Hirata <kazu@codesourcery.com>
3027
3028 * Make-lang.in (cp/pt.o): Depend on vecprim.h.
3029 * pt.c: Include vecprim.h.
3030 (inline_parm_levels): Change the type to VEC(int,heap) *.
3031 (inline_parm_levels_used): Remove.
3032 (maybe_begin_member_template_processing,
3033 maybe_end_member_template_processing): Use VEC instead of
3034 VARRAY.
3035
3036 * cp/call.c: Fix comment typos.
3037
3038 2006-04-12 Mark Mitchell <mark@codesourcery.com>
3039
3040 * parser.c (cp_parser_init_declarator): Initialize local variables
3041 aggressively.
3042
3043 2006-04-12 Roger Sayle <roger@eyesopen.com>
3044
3045 * parser.c (cp_parser_init_declarator): Initialise
3046 is_parenthesized_init to false to avoid compiler warning.
3047
3048 2006-04-11 Mark Mitchell <mark@codesourcery.com>
3049
3050 * cp-tree.h (build_operator_new_call): Adjust prototype.
3051 (build_new_method_call): Likewise.
3052 (build_op_delete_call): Likewise.
3053 * init.c (build_raw_new_expr): New function.
3054 (build_new_1): Pass information as parameters, rather than
3055 bundling it into a NEW_EXPR.
3056 (build_new): Adjust accordingly.
3057 (build_vec_delete_1): Adjust for changes to build_op_delete_call.
3058 (build_delete): Likewise.
3059 * decl.c (finish_destructor_body): Likewise.
3060 * call.c (build_operator_new_call): Return the allocation function
3061 used.
3062 (build_op_delete_call): Take allocation function as parameter.
3063 (build_special_member_call): Adjust call to build_new_method_call.
3064 (build_new_method_call): Return function called.
3065 * pt.c (tsubst_copy_and_build): Adjust call to
3066 build_new_method_call.
3067 * semantics.c (finish_call_expr): Likewise.
3068 * parser.c (cp_parser_postfix_expression): Likewise.
3069 * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
3070 "incomplete", not "undefined", types.
3071
3072 PR c++/26295
3073 * decl.c (grokdeclarator): Remove namespace-handling code for
3074 pointers-to-members.
3075 * parser.c (cp_parser_ptr_operator): Check for qualified names
3076 using namespaces.
3077
3078 PR c++/26122
3079 * parser.c (cp_parser_init_declarator): Adjust logic for deciding
3080 whether or not to look for a pure-specifier.
3081 (cp_parser_member_declaration): Likewise.
3082
3083 2006-04-08 Kazu Hirata <kazu@codesourcery.com>
3084
3085 * decl2.c, pt.c, semantics.c: Fix comment typos.
3086
3087 2006-04-06 Roger Sayle <roger@eyesopen.com>
3088
3089 * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
3090
3091 2006-04-05 Jason Merrill <jason@redhat.com>
3092
3093 * name-lookup.c (push_namespace_with_attribs): Temporarily disable
3094 default hidden visibility for anonymous namespace.
3095
3096 2006-03-29 Roger Sayle <roger@eyesopen.com>
3097
3098 PR c++/22494
3099 * init.c (build_vec_delete_1): Convert BASE pointer's type to
3100 the base pointer type to avoid a type mismatch in the EQ_EXPR.
3101
3102 2006-03-24 Carlos O'Donell <carlos@codesourcery.com>
3103
3104 * search.c (maybe_suppress_debug_info): If
3105 flag_emit_class_debug_always then don't suppress.
3106
3107 2006-03-22 Jason Merrill <jason@redhat.com>
3108
3109 * name-lookup.c (push_namespace_with_attribs): Only apply hidden
3110 visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
3111
3112 2006-03-21 Jakub Jelinek <jakub@redhat.com>
3113
3114 PR c++/26691
3115 * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
3116
3117 2006-03-21 Jason Merrill <jason@redhat.com>
3118
3119 PR c++/21581
3120 * parser.c (cp_parser_declaration): Support attributes on
3121 anonymous namespaces.
3122 * name-lookup.c (push_namespace_with_attribs): Anonymous
3123 namespaces default to hidden visibility.
3124
3125 2006-03-20 Jason Merrill <jason@redhat.com>
3126
3127 PR c++/21764, c++/19238
3128 * decl.c (cp_finish_decl): Call determine_visibility later.
3129 (start_preparsed_function): Likewise.
3130 * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
3131 (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
3132 * name-lookup.h (struct cp_binding_level): Add has_visibility
3133 bitfield.
3134 * name-lookup.c: Include c-pragma.h.
3135 (push_namespace_with_attribs): Split out from push_namespace.
3136 Push visibility if appropriate. Set TREE_PUBLIC on namespaces.
3137 (leave_scope): Pop visibility if appropriate.
3138 * decl2.c (determine_visibility_from_class): Split out from...
3139 (determine_visibility): ...here. Handle function scope and
3140 nested classes.
3141 (import_export_decl): Move visibility handling to
3142 determine_visibility_from_class.
3143 * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
3144 attributes on namespace declarations.
3145
3146 2006-03-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3147
3148 PR c++/6634
3149 * decl.c (grokdeclarator): Do not accept long long double.
3150 Reorganize checks for invalid (combinations of) type modifiers.
3151 Quote modifiers in messages.
3152
3153 2006-03-09 Jason Merrill <jason@redhat.com>
3154
3155 PR c++/16387, c++/16389
3156 * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
3157 (cxx_sizeof_or_alignof_expr): Split out from here.
3158
3159 2006-03-09 Diego Novillo <dnovillo@redhat.com>
3160
3161 Merge from gomp-20050608-branch
3162
3163 2006-02-02 Diego Novillo <dnovillo@redhat.com>
3164
3165 * decl.c (pop_labels_1): Use appropriate pointer casting.
3166 (poplevel_named_label_1): Likewise.
3167 (named_label_entry_hash): Likewise.
3168 (named_label_entry_eq): Likewise.
3169 (check_goto): Likewise.
3170 (define_label): Likewise.
3171
3172 2006-01-26 Diego Novillo <dnovillo@redhat.com>
3173
3174 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
3175 of TREE_BLOCK.
3176 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
3177 instead of TREE_CODE/TREE_OPERAND.
3178 * semantics.c: Likewise.
3179 * parser.c: Likewise.
3180
3181 2005-11-10 Diego Novillo <dnovillo@redhat.com>
3182
3183 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
3184 target does not support TLS.
3185
3186 2005-11-09 Jakub Jelinek <jakub@redhat.com>
3187
3188 * decl.c (redeclaration_error_message): Don't error about
3189 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
3190 (olddecl).
3191
3192 2005-11-08 Jakub Jelinek <jakub@redhat.com>
3193
3194 PR c++/24735
3195 * semantics.c (finish_omp_barrier, finish_omp_flush): New
3196 functions.
3197 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
3198 (cp_parser_omp_flush): Call finish_omp_flush.
3199 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
3200 prototypes.
3201
3202 PR c++/24734
3203 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
3204
3205 2005-11-03 Jakub Jelinek <jakub@redhat.com>
3206
3207 * semantics.c (finish_omp_threadprivate): Error on class-scope
3208 variables.
3209
3210 2005-11-02 Jakub Jelinek <jakub@redhat.com>
3211
3212 * parser.c (cp_parser_omp_all_clauses): If some clause
3213 type is not allowed, don't remove just one of the
3214 clauses, but all clauses added in that loop round.
3215
3216 * semantics.c (finish_omp_clauses): Fix function
3217 comment. Don't handle non-const or mutable specially,
3218 as const and not mutable is predetermined shared and
3219 that leads to double error. Don't ICE if copyin var is
3220 PARM_DECL.
3221
3222 PR c++/24613
3223 * parser.c (cp_parser_pragma): Diagnose
3224 PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
3225 construct.
3226
3227 * semantics.c (finish_omp_threadprivate): Error if V
3228 is automatic variable or has incomplete type.
3229
3230 2005-11-01 Diego Novillo <dnovillo@redhat.com>
3231
3232 * parser.c (cp_parser_omp_all_clauses): Use
3233 OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
3234
3235 2005-11-01 Diego Novillo <dnovillo@redhat.com>
3236
3237 * parser.c (cp_parser_omp_all_clauses): When emitting an
3238 error message, remove the invalid clause from the list.
3239
3240 2005-10-31 Diego Novillo <dnovillo@redhat.com>
3241
3242 * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
3243 combined parallel+workshare directives.
3244
3245 2005-10-31 Richard Henderson <rth@redhat.com>
3246
3247 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
3248 Use cxx_omp_clause_dtor.
3249 * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
3250 (cxx_omp_clause_dtor): New.
3251 * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
3252 (cxx_omp_clause_default_ctor): Use it.
3253 (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
3254 Likewise.
3255 (cxx_omp_clause_dtor): New.
3256 * semantics.c (finish_omp_clauses): Rewrite cdtor
3257 checking to fill in CP_OMP_CLAUSE_INFO. Don't
3258 specialcase LASTPRIVATE for removal.
3259 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
3260 cxx_omp_clause_assign_op): Move to cp-gimplify.c.
3261
3262 2005-10-28 Jakub Jelinek <jakub@redhat.com>
3263
3264 * semantics.c (finish_omp_threadprivate): If
3265 DECL_RTL_SET_P, call make_decl_rtl again so that
3266 encode_section_info can update SYMBOL_REF's flags.
3267
3268 2005-10-26 Jakub Jelinek <jakub@redhat.com>
3269
3270 * semantics.c (finish_omp_for): Don't segfault if COND
3271 or INCR is NULL. If not calling c_finish_omp_for
3272 right away and one of COND and INCR is NULL, issue
3273 error and don't expand anything.
3274
3275 PR c++/24512
3276 * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
3277 * semantics.c (finish_omp_for): Likewise. Set
3278 OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
3279 into the current statement list if not processing
3280 template decl or pass it to c_finish_omp_for.
3281
3282 * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
3283 into PRE_BODY statement list. Pass it to finish_omp_for.
3284 * pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
3285 OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
3286 finish_omp_for. Put all the statements into sk_omp
3287 scope.
3288
3289 2005-10-25 Jakub Jelinek <jakub@redhat.com>
3290
3291 PR c++/24516
3292 * parser.c (struct cp_parser): Rename in_iteration_statement
3293 field to in_statement.
3294 (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
3295 (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
3296 (cp_parser_new, cp_parser_begin_omp_structured_block,
3297 cp_parser_end_omp_structured_block,
3298 cp_parser_omp_for_loop): Adjust for
3299 in_iteration_statement renaming.
3300 (cp_parser_selection_statement): Save
3301 parser->in_iteration, or it temporarily with
3302 IN_SWITCH_STMT for the
3303 cp_parser_implicitly_scoped_statement call.
3304 (cp_parser_iteration_statement): Adjust for
3305 in_iteration_statement renaming. Use
3306 IN_ITERATION_STMT rather than true.
3307 (cp_parser_jump_statement): Adjust for
3308 in_iteration_statement renaming and new values. Don't
3309 error on break in a switch statement within OMP_FOR or
3310 OpenMP structured block.
3311
3312 PR c++/24513
3313 * parser.c (cp_parser_cache_group): Don't stop if next
3314 token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
3315 well. If current token is CPP_PRAGMA, consume
3316 everything until CPP_PRAGMA_EOL inclusive.
3317
3318 2005-10-24 Jakub Jelinek <jakub@redhat.com>
3319
3320 PR c++/24502
3321 * semantics.c (finish_omp_for): Handle MODOP_EXPR in
3322 addition to MODIFY_EXPR.
3323
3324 2005-10-23 Richard Henderson <rth@redhat.com>
3325
3326 * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
3327 (bc_label): New.
3328 (begin_bc_block, finish_bc_block): Use it.
3329 (push_context, pop_context): Remove.
3330 (cp_genericize): Don't use them. Assert bc_label is null.
3331 * semantics.c (finish_omp_clauses): Create a fake data
3332 element of TYPE for probing ctors.
3333
3334 2005-10-23 Richard Henderson <rth@redhat.com>
3335
3336 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
3337 (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
3338 (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
3339 (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
3340 * semantics.c (finish_omp_clauses): Look through
3341 arrays when looking up special member calls. Also
3342 remove FIRSTPRIVATE when LASTPRIVATE fails.
3343 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
3344 (cxx_omp_clause_assign_op): New.
3345 * cp-tree.h: Declare them.
3346
3347 2005-10-21 Richard Henderson <rth@redhat.com>
3348
3349 * decl.c (check_previous_goto_1): Return false if error.
3350 (check_switch_goto): Likewise.
3351 (finish_case_label): Don't emit the case label on error.
3352 * parser.c (struct cp_parser): Revert
3353 in_switch_statement_p changes.
3354 (cp_parser_labeled_statement,
3355 cp_parser_selection_statement): Likewise.
3356 (cp_parser_begin_omp_structured_block): Don't save...
3357 (cp_parser_end_omp_structured_block): or restore
3358 in_switch_statement_p.
3359
3360 2005-10-21 Richard Henderson <rth@redhat.com>
3361
3362 * semantics.c (finish_omp_threadprivate): Set
3363 decl_flags.u2sel when necessary.
3364
3365 2005-10-21 Richard Henderson <rth@redhat.com>
3366
3367 * decl.c (poplevel_named_label_1): Restore creation of the
3368 bad_decls list.
3369 (decl_jump_unsafe): Check for error_mark_node types.
3370 (check_goto): Don't check cdtor_label. Don't use identify_goto.
3371 * semantics.c (finish_return_stmt): Do check_omp_return before
3372 converting to cdtor_label goto.
3373
3374 2005-10-21 Richard Henderson <rth@redhat.com>
3375
3376 PR c++/24451
3377 * decl.c (check_omp_return): Return false on error.
3378 * cp-tree.h (check_omp_return): Update decl.
3379 * semantics.c (finish_return_stmt): Avoid adding
3380 return on error.
3381
3382 2005-10-21 Richard Henderson <rth@redhat.com>
3383
3384 * cp-tree.h (struct language_function): Remove
3385 x_named_label_uses.
3386 Change x_named_labels to a hashtable.
3387 (check_omp_return): Declare.
3388 * decl.c (struct named_label_use_entry): Rename from
3389 named_label_use_list. Remove label_decl.
3390 (struct named_label_entry): Rename from
3391 named_label_list. Remove old_value and next. Change
3392 in_try_scope and in_catch_scope to bool. Add
3393 in_omp_scope.
3394 (pop_labels_1): New.
3395 (pop_labels): Use it.
3396 (pop_local_label, poplevel_named_label_1): New.
3397 (poplevel): Use them.
3398 (named_label_entry_hash, named_label_entry_eq): New.
3399 (make_label_decl): Create named_labels. Move label
3400 creation bits from lookup_label.
3401 (declare_local_label): Tidy.
3402 (identify_goto): Split out from ...
3403 (check_previous_goto_1): Add exited_omp argument.
3404 Handle omp scopes.
3405
3406 (use_label): Merge into...
3407 (check_goto): ... here. Handle omp scopes.
3408 (check_omp_return): New.
3409 (check_previous_gotos): Merge into...
3410 (define_label): ... here.
3411 (save_function_data): Remove x_named_label_uses reference.
3412 (finish_function): Likewise.
3413 * name-lookup.h (sk_omp): New.
3414 * name-lookup.c (begin_scope): Handle it.
3415 * parser.c (cp_parser_omp_for): Don't create extra
3416 compound stmt.
3417
3418 (cp_parser_omp_sections): Likewise.
3419 * semantics.c (finish_return_stmt): Call check_omp_return.
3420 (begin_omp_structured_block): Use sk_omp.
3421 (finish_omp_structured_block): Use do_poplevel. Don't build a
3422 MUST_NOT_THROW expression here.
3423 (begin_omp_parallel, finish_omp_parallel): Don't create extra
3424 compound statements.
3425
3426 2005-10-21 Diego Novillo <dnovillo@redhat.com>
3427
3428 PR 24455
3429 * cp/cp-tree.h (struct lang_decl_flags): Add field
3430 threadprivate_p.
3431 (CP_DECL_IS_THREADPRIVATE): Define.
3432 * cp/semantics.c (finish_omp_threadprivate): Set. Do
3433 not error out if CP_DECL_IS_THREADPRIVATE is set
3434 already.
3435 * cp/decl.c (duplicate_decls): Merge
3436 CP_DECL_THREADPRIVATE_P.
3437
3438 2005-10-20 Richard Henderson <rth@redhat.com>
3439
3440 * cp-gimplify.c (cp_gimplify_omp_for): New.
3441 (cp_gimplify_expr): Call it.
3442 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
3443 * parser.c (struct cp_parser): Rename
3444 in_iteration_statement_p to in_iteration_statement and
3445 change to unsigned char. Similarly with
3446 in_switch_statement. Update all users.
3447 (IN_OMP_BLOCK, IN_OMP_FOR): New.
3448 (cp_parser_labeled_statement): Diagnose case labels
3449 binding closer to an openmp block nested than the
3450 switch.
3451 (cp_parser_jump_statement): Diagnose break and
3452 continue labels binding closer to an openmp block than
3453 an iteration or switch.
3454 (cp_parser_omp_for_loop): Mark in_iteration_statement
3455 for an omp for.
3456 (cp_parser_begin_omp_structured_block): New.
3457 (cp_parser_end_omp_structured_block): New.
3458 (cp_parser_omp_structured_block): Use them.
3459 (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
3460 (cp_parser_omp_parallel): Likewise.
3461
3462 2005-10-20 Richard Henderson <rth@redhat.com>
3463
3464 * semantics.c (begin_omp_structured_block): New.
3465 (finish_omp_structured_block): New.
3466 (begin_omp_parallel, finish_omp_parallel): Use them.
3467 * parser.c (cp_parser_omp_structured_block): Likewise.
3468 (cp_parser_omp_for): Likewise.
3469 (cp_parser_omp_sections_scope): Likewise.
3470 * cp-tree.h: Declare them.
3471
3472 2005-10-20 Richard Henderson <rth@redhat.com>
3473
3474 * parser.c (cp_parser_omp_master): Return the statement.
3475 (cp_parser_omp_ordered): Likewise.
3476 (cp_parser_omp_construct): Set the locus for them.
3477
3478 2005-10-19 Richard Henderson <rth@redhat.com>
3479
3480 * semantics.c (finish_omp_atomic): Revert to
3481 uses_template_parms.
3482
3483 2005-10-19 Richard Henderson <rth@redhat.com>
3484
3485 * semantics.c (finish_omp_clauses): Avoid
3486 DECL_THREAD_LOCAL_P on a PARM_DECL. Remove some
3487 stub asserts guaranteed to fail.
3488
3489 2005-10-19 Richard Henderson <rth@redhat.com>
3490
3491 * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
3492 (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
3493 * parser.c (cp_parser_omp_clause_copyin): Remove.
3494 (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
3495 Call finish_omp_clauses.
3496 (cp_parser_omp_clause_if): Don't do error checking here.
3497 (cp_parser_omp_clause_num_threads): Likewise.
3498 (cp_parser_omp_clause_schedule): Likewise.
3499 (cp_parser_omp_atomic): Use finish_omp_atomic.
3500 (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
3501 Don't decompose assignment statment here. Use
3502 finish_omp_for.
3503
3504 * pt.c (tsubst_omp_clauses): New.
3505 (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
3506 OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
3507 * semantics.c (finish_omp_clauses): New.
3508 (begin_omp_parallel, finish_omp_parallel): Know Less about the
3509 internals of the stmt_list stack.
3510 (finish_omp_for, finish_omp_atomic): New.
3511
3512 2005-10-18 Jakub Jelinek <jakub@redhat.com>
3513
3514 * semantics.c (cxx_omp_predetermined_sharing): New function.
3515 * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
3516 * cp-objcp-common.h
3517 (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
3518
3519 2005-10-18 Richard Henderson <rth@redhat.com>
3520
3521 * parser.c (cp_parser_omp_single): Use make_node and accessors
3522 instead of build.
3523
3524 2005-10-17 Richard Henderson <rth@redhat.com>
3525
3526 * parser.c (cp_parser_omp_for_loop): Handle declarations.
3527
3528 2005-10-12 Richard Henderson <rth@redhat.com>
3529
3530 * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
3531 * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
3532 (finish_omp_threadprivate): Declare.
3533 * parser.c (struct cp_lexer): Add in_pragma.
3534 (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
3535 when in_pragma.
3536 (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
3537 (cp_parser_skip_to_end_of_statement): Likewise.
3538 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3539 (cp_parser_skip_to_closing_brace): Likewise.
3540 (cp_parser_skip_to_pragma_eol): Reset in_pragma.
3541 (cp_parser_require_pragma_eol): New.
3542 (cp_parser_statement): Add in_compound argument;
3543 update all callers.
3544 Restart if a non-statement pragma seen outside a
3545 compound.
3546 (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
3547 (cp_parser_declaration_seq_opt): Likewise.
3548 (cp_parser_member_specification_opt): Likewise.
3549 (cp_parser_function_definition_after_decl): Likewise.
3550 (cp_parser_skip_until_found): Likewise.
3551 (cp_parser_cache_group): Likewise.
3552 (enum pragma_omp_clause, cp_parser_omp_clause_name,
3553 check_no_duplicate_clause,
3554 cp_parser_omp_var_list_no_open,
3555 cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
3556 cp_parser_omp_clause_default, cp_parser_omp_clause_if,
3557 cp_parser_omp_clause_nowait,
3558 cp_parser_omp_clause_num_threads,
3559 cp_parser_omp_clause_ordered,
3560 cp_parser_omp_clause_reduction,
3561 cp_parser_omp_clause_schedule,
3562 cp_parser_omp_all_clauses,
3563 cp_parser_omp_structured_block, cp_parser_omp_atomic,
3564 cp_parser_omp_barrier, cp_parser_omp_critical,
3565 cp_parser_omp_flush, cp_parser_omp_for_loop,
3566 cp_parser_omp_for, cp_parser_omp_master,
3567 cp_parser_omp_ordered, cp_parser_omp_sections_scope,
3568 cp_parser_omp_sections, cp_parser_omp_parallel,
3569 cp_parser_omp_single, cp_parser_omp_threadprivate,
3570 cp_parser_omp_construct): New.
3571 (cp_parser_pragma): Handle OpenMP pragmas.
3572 * semantics.c (finish_omp_threadprivate): New.
3573 (begin_omp_parallel, finish_omp_parallel): New.
3574
3575 2005-10-11 Richard Henderson <rth@redhat.com>
3576
3577 * parser.c (struct cp_token): Add pragma_kind.
3578 (eof_token): Initialize it.
3579 (cp_lexer_handle_pragma): Remove.
3580 (cp_parser_initial_pragma): New.
3581 (cp_lexer_new_main): Use it.
3582 (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
3583 (cp_lexer_print_token): Don't handle CPP_PRAGMA.
3584 (cp_parser_skip_to_pragma_eol): New.
3585 (cp_parser_error): Use it.
3586 (pragma_lex): New.
3587
3588 2005-10-09 Richard Henderson <rth@redhat.com>
3589
3590 * lex.c (parse_strconst_pragma): Update for c_lex name change.
3591 (handle_pragma_java_exceptions): Likewise.
3592 * parser.c (cp_lexer_new_main): Likewise.
3593
3594 2005-10-06 Richard Henderson <rth@redhat.com>
3595
3596 * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
3597 (cp_lexer_handle_pragma): Comment out
3598 cpp_handle_deferred_pragma.
3599
3600 2005-10-01 Richard Henderson <rth@redhat.com>
3601
3602 * name-lookup.c (lookup_name): Remove prefer_type argument.
3603 (lookup_name_prefer_type): New function.
3604 * name-lookup.h (lookup_name_prefer_type): Declare it.
3605 * decl.c (lookup_and_check_tag): Use it.
3606 * pt.c (tsubst_friend_class): Likewise. Update for
3607 lookup_name change.
3608 (lookup_template_class, tsubst_copy_and_build): Likewise.
3609
3610 2006-03-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3611
3612 PR c++/15759
3613 * tree.c (bot_manip): Don't call mark_used.
3614
3615 2006-03-02 Mike Stump <mrs@apple.com>
3616
3617 * decl2.c (import_export_decl): Remove redundant call to
3618 targetm.cxx.key_method_may_be_inline ().
3619
3620 2006-03-02 Richard Sandiford <richard@codesourcery.com>
3621
3622 * decl.c (start_decl): Use have_global_bss_p when deciding
3623 whether to make the decl common.
3624
3625 2006-03-01 Mike Stump <mrs@apple.com>
3626
3627 PR darwin/25908
3628 * decl2.c (import_export_decl): Fix ABI breakage on darwin.
3629
3630 2006-02-24 Geoffrey Keating <geoffk@apple.com>
3631
3632 * except.c (expand_start_catch_block): Handle
3633 flag_use_cxa_get_exception_ptr.
3634
3635 2006-02-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3636
3637 PR c++/26291
3638 * decl.c (grok_op_properties): Check for ellipsis in arguments of
3639 operators.
3640
3641 2006-02-20 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
3642
3643 * Make-lang.in (C++): Remove.
3644 (.PHONY): Remove C++.
3645
3646 2006-02-18 Mark Mitchell <mark@codesourcery.com>
3647
3648 PR c++/26266
3649 * cp-tree.h (cp_finish_decl): Adjust declaration.
3650 (grokbitfield): Likewise.
3651 (finish_static_data_member_decl): Likewise.
3652 * init.c (constant_value_1): Ensure processing_template_decl when
3653 folding non-dependent initializers for static data members of
3654 dependent types. Return error_mark_node for erroneous
3655 initailizers.
3656 * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
3657 * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
3658 (cp_finish_decl): Add init_const_expr_p parameter. Set
3659 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
3660 (finish_decl): Adjust call to cp_finish_decl.
3661 (compute_array_index_type): Robustify.
3662 (start_method): Use finish_decl, not cp_finish_decl.
3663 * rtti.c (emit_tinfo_decl): Likewise.
3664 * except.c (initialize_handler_parm): Adjust call to
3665 cp_finish_decl.
3666 (expand_start_catch_block): Likewise.
3667 * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
3668 * pt.c (instantiate_class_template): Adjust call to
3669 finish_static_data_member_decl.
3670 (tsubst_expr): Use finish_decl, not cp_finish_decl.
3671 (instantiate_decl): Adjust call to cp_finish_decl.
3672 * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
3673 cp_finish_decl.
3674 * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
3675 parameter.
3676 (grokfield): Likewise.
3677 * parser.c (cp_parser_condition): Check for constant initializers.
3678 (cp_parser_init_declarator): Adjust calls to grokfield and
3679 cp_finish_decl. Don't set
3680 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
3681 (cp_parser_member_declaration): Likewise.
3682 (cp_parser_objc_class_ivars): Likewise.
3683
3684 2006-02-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3685
3686 * call.c (standard_conversion): Return NULL instead of 0.
3687 (build_user_type_conversion_1): Likewise.
3688 (tourney): Likewise.
3689 * decl.c (redeclaration_error_message): Likewise.
3690 * error.c (language_to_string): Likewise.
3691
3692 2006-02-13 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3693
3694 * cp-tree.h (warn_hidden): Remove prototype.
3695 * class.c (warn_hidden): Make static.
3696
3697 * cp-tree.h (build_type_conversion): Remove prototype.
3698 * cvt.c (build_type_conversion): Add prototype, make static.
3699
3700 * cp-tree.h (push_tinst_level): Remove prototype.
3701 (pop_tinst_level): Likewise.
3702 * pt.c (push_tinst_level): Add prototype, make static.
3703 (pop_tinst_level): Likewise.
3704
3705 2006-02-13 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3706
3707 * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
3708 * typeck.c (unary_complex_lvalue): Likewise.
3709
3710 2006-02-13 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3711
3712 * lex.c (parse_strconst_pragma): Return error_mark_node instead of
3713 "(tree)-1" to indicate failure. Simplify.
3714 (handle_pragma_interface): Test for error_mark_node instead of
3715 "(tree)-1".
3716 (handle_pragma_implementation): Likewise.
3717
3718 2006-02-13 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3719
3720 PR c++/26151
3721 * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
3722 decl-specifiers. Remove extra check for duplicate 'friend'.
3723 * decl.c (grokdeclarator): Remove check for duplicate
3724 decl-specifiers. Set longlong together with long_p.
3725
3726 2006-02-12 Jason Merrill <jason@redhat.com>
3727
3728 PR c++/24996
3729 * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
3730 TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
3731
3732 2006-02-10 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3733
3734 * class.c (debug_class): Remove extern.
3735 (debug_thunks): Likewise.
3736
3737 2006-02-09 Gabriel Dos Reis <gdr@integrable-solutions.net>
3738
3739 * typeck.c (string_conv_p): Don't test for flag_const_strings.
3740
3741 2006-02-08 Jason Merrill <jason@redhat.com>
3742
3743 PR c++/25979
3744 * cp-gimplify.c (cp_gimplify_expr): Don't call
3745 cp_gimplify_init_expr for MODIFY_EXPRs.
3746 * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
3747
3748 2006-02-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3749
3750 PR c++/26071
3751 * decl.c (grokdeclarator): Set dname also for destructor.
3752
3753 PR c++/26070
3754 * decl.c (grokdeclarator): Clear storage_class together with staticp.
3755
3756 2006-02-07 Gabriel Dos Reis <gdr@integrable-solutions.net>
3757
3758 * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
3759 (cp_build_qualified_type): Propogate renaming.
3760 * call.c (convert_like_real): Likewise.
3761 * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
3762 * decl.c (make_typename_type, grokdeclarator): Likewise.
3763 * pt.c (tsubst_friend_function, instantiate_class_template,
3764 tsubst_default_argument, instantiate_decl,
3765 tsubst_initializer_list, tsubst_enum): Likewise.
3766 * semantics.c (finish_template_type): Likewise.
3767 * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
3768
3769 2006-02-07 Dirk Mueller <dmueller@suse.com>
3770
3771 * typeck.c (build_binary_op): Annotate div-by-zero
3772 warnings to make -Wno-div-by-zero have an effect.
3773
3774 2006-02-07 Mark Mitchell <mark@codesourcery.com>
3775
3776 PR c++/9737
3777 * pt.c (coerce_template_template_parms): Do not templates with
3778 excess default arguments to match template template parameters
3779 with fewer parameters.
3780 (coerce_template_parms): Add use_default_args parameter; use
3781 default arguments only when true.
3782 (lookup_template_class): Adjust call to coerce_template_parms.
3783 (fn_type_unification): Likewise.
3784 (unify): Likewise.
3785 (get_bindings): Likewise.
3786 (dependent_type_p): Add assertions.
3787
3788 2006-02-06 Roger Sayle <roger@eyesopen.com>
3789
3790 * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
3791 * rtti.c (typeinfo_in_lib_p): Likewise.
3792 * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
3793 * name-lookup.c (arg_assoc_type): Likewise.
3794
3795 2006-02-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
3796
3797 * cp-tree.h (tf_warn_or_error): New substituion flag.
3798 (cp_build_qualified_type): Use it.
3799 * call.c (convert_like_real): Likewise.
3800 * cvt.c (cp_convert_to_pointer): Likewise.
3801 (convert_to_reference): Likewise.
3802 * decl.c (make_typename_type): Likewise.
3803 (grokdeclarator): Likewise.
3804 * pt.c (tsubst_friend_function): Likewise.
3805 (tsubst_friend_class): Likewise.
3806 (instantiate_class_template): Likewise.
3807 (tsubst_default_argument): Likewise.
3808 (instantiate_decl): Likewise.
3809 (tsubst_initializer_list): Likewise.
3810 (tsubst_enum): Likewise.
3811 * semantics.c (finish_template_type): Likewise.
3812 * typeck.c (build_ptrmemfunc): Likewise.
3813 (convert_for_assignment): Likewise.
3814
3815 2006-02-03 Lee Millward <lee.millward@gmail.com>
3816
3817 * typeck.c (string_conv_p): Pass appropiate
3818 OPT_Wxxxx values when calling warning().
3819 (build_array_ref, cxx_mark_addressable): Likewise.
3820 (check_return_expr): Likewise.
3821
3822 * init.c (perform_member_init): Likewise.
3823 (sort_mem_initializers, emit_mem_initializers): Likewise.
3824
3825 * class.c (check_field_decls): Likewise.
3826 (warn_about_ambiguous_bases): Likewise.
3827
3828 * decl.c (pop_label, poplevel): Likewise.
3829 (duplicate_decls, grok_op_properties): Likewise.
3830 (start_preparsed_function, finish_function): Likewise.
3831
3832 * name-lookup.c (pushdecl_maybe_friend): Likewise.
3833 (pushdecl_maybe_friend): Likewise.
3834
3835 * parser.c (cp_parser_warn_min_max): Likewise.
3836 (cp_parser_cast_expression): Likewise.
3837
3838 * method.c (lazily_declare_fn): Likewise.
3839 * cvt.c (convert_to_void): Likewise.
3840 * mangle.c (finish_mangling): Likewise.
3841 * cp-gimplify.c (gimplify_expr_stmt): Likewise.
3842
3843 2006-02-03 Mark Mitchell <mark@codesourcery.com>
3844
3845 * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
3846 not IDENTIFIER_OPNAME_P.
3847
3848 2006-01-31 Mark Mitchell <mark@codesourcery.com>
3849
3850 PR c++/25342
3851 * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
3852 documentation.
3853 * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
3854 not TREE_VALUE.
3855 (instantiate_class_template): Simplify.
3856 (verify_class_unification): Remove.
3857 (unify): Document parameters. Use INNERMOST_TEMPLATE_ARGS to
3858 permit multiple levels of template arguments.
3859 (more_specialized_class): Simplify.
3860 (get_class_bindings): Pass full arguments to unify. Fold
3861 verify_class_unification into this function. Return full
3862 arguments.
3863 (most_specialized_class): Adjust for changes to
3864 get_class_bindings. Issue errors here for ambiguity. Return the
3865 fully deduced arguments for the most specialized class, in
3866 addition to the partial specialization.
3867
3868 2006-01-31 Ben Elliston <bje@au.ibm.com>
3869
3870 * mangle.c: Comment fix.
3871
3872 2006-01-29 Gabriel Dos Reis <gdr@integrable-solutions.net>
3873
3874 * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
3875 * repo.c (extract_string, afgets): Use cast when converting from
3876 void *.
3877
3878 2006-01-29 Gabriel Dos Reis <gdr@integrable-solutions.net>
3879
3880 * call.c (alloc_conversion): Use cast when converting from void *.
3881 (alloc_conversions): Likewise.
3882 (add_candidate): Likewise.
3883 (print_z_candidates): Likewise.
3884 (add_warning): Likewise.
3885 * pt.c (retrieve_local_specialization): Likewise.
3886 (process_partial_specialization): Likewise.
3887 (mangle_class_name_for_template): Likewise.
3888 (tsubst_template_args): Likewise.
3889 * typeck2.c (pat_calc_hash): Likewise.
3890 (pat_compare): Likewise.
3891 (abstract_virtuals_error): Likewise.
3892 * class.c (method_name_cmp): Likewise.
3893 (resort_method_name_cmp): Likewise.
3894 (get_vfield_name): Likewise.
3895 * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
3896 * lex.c (init_reswords): Likewise.
3897 * rtti.c (create_pseudo_type_info): Likewise.
3898 * search.c (dfs_lookup_base): Likewise.
3899 (dfs_dcast_hint_pre): Likewise.
3900 (dfs_dcast_hint_post): Likewise.
3901 * tree.c (hash_tree_cons): Likewise.
3902 * repo.c (extract_string): Likewise.
3903 (afgets): Likewise.
3904 * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
3905 * g++spec.c (lang_specific_driver): Likewise.
3906
3907 2006-01-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
3908
3909 * call.c (joust): Pass option code to warning. Use inform for
3910 explanation.
3911 * class.c (check_bases): Likewise.
3912 (maybe_warn_about_overly_private_class): Likewise.
3913 (check_field_decls): Likewise.
3914 (layout_empty_base): Likewise.
3915 (layout_virtual_bases): Likewise.
3916 (layout_class_type): Likewise.
3917
3918 2006-01-28 Mark Mitchell <mark@codesourcery.com>
3919
3920 PR c++/25999
3921 * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
3922 here, not ...
3923 (start_function): ... here.
3924
3925 2006-01-28 Mark Mitchell <mark@codesourcery.com>
3926
3927 PR c++/25855
3928 * class.c (resolve_address_of_overloaded_function): Adjust use of
3929 return value from most_specialized_instantiation.
3930 * pt.c (determine_specialization): Avoid multiple calls to
3931 get_bindings.
3932 (most_specialized_instantiation): When a tie occurs, set the
3933 current presumed champion to the next template. Return the
3934 TREE_LIST node containing the template, rather than the template
3935 itself.
3936 (most_specialized): Remove.
3937 * name-lookup.c (push_overloaded_decl): When duplicate_decls
3938 indicates a failed redeclaration, report that to callers.
3939
3940 2006-01-26 Jason Merrill <jason@redhat.com>
3941
3942 PR c++/16021
3943 * name-lookup.c (parse_using_directive): Require strong using to
3944 name a nested namespace.
3945
3946 2006-01-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3947
3948 Revert:
3949 * cp-tree.h (do_poplevel): Remove prototype.
3950 * semantics.c (do_poplevel): Add prototype. Make static.
3951
3952 Revert:
3953 * cp-tree.h (default_conversion): Remove prototype.
3954 * typeck.c (default_conversion): Make static.
3955
3956 2006-01-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3957
3958 * cp-tree.h (get_primary_binfo): Remove prototype.
3959 (push_using_decl): Likewise.
3960 (current_template_args): Likewise.
3961 (more_specialized_class): Likewise.
3962 (mark_class_instantiated): Likewise.
3963 (default_conversion): Likewise.
3964 (pfn_from_ptrmemfunc): Likewise.
3965 * class.c (get_primary_binfo): Add prototype, make static, simplify.
3966 * name-lookup.c (push_using_decl): Make static.
3967 * pt.c (current_template_args): Likewise.
3968 (more_specialized_class): Likewise.
3969 (mark_class_instantiated): Likewise.
3970 * typeck.c (default_conversion): Make static.
3971 (pfn_from_ptrmemfunc): Add prototype, make static.
3972
3973 2006-01-24 Dirk Mueller <dmueller@suse.de>
3974
3975 * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
3976
3977 2006-01-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3978
3979 PR c++/25552
3980 * parser.c (cp_parser_unqualified_id): Check that destructor name
3981 and scope match.
3982 * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
3983 Adjust comment. Return early if possible.
3984 Use same_type_p to compare types.
3985 * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
3986
3987 2006-01-24 Mark Mitchell <mark@codesourcery.com>
3988
3989 * semantics.c: Remove outdated comment.
3990
3991 2006-01-23 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3992
3993 * cp-tree.h (do_poplevel): Remove prototype.
3994 * semantics.c (do_poplevel): Add prototype. Make static.
3995
3996 * cp-tree.h (original_type): Remove prototype.
3997 * typeck.c (original_type): Make static.
3998
3999 * cp-tree.h (declare_global_var): Remove prototype.
4000 * decl.c (declare_global_var): Make static.
4001
4002 * cp-tree.h (implicitly_declare_fn): Remove prototype.
4003 * method.c (implicitly_declare_fn): Make static.
4004
4005 * cp-tree.h (fold_decl_constant_value): Remove prototype.
4006 * pt.c (fold_decl_constant_value): Make static.
4007
4008 * cp-tree.h (build_x_delete): Remove prototype.
4009 * init.c (build_vec_delete_1): Call build_op_delete_call directly
4010 and not via build_x_delete.
4011 (build_x_delete): Remove.
4012
4013 * cp-tree.h (get_vtt_name): Remove prototype.
4014 * class.c (get_vtt_name): Remove.
4015 (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
4016
4017 2006-01-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
4018
4019 * rtti.c (build_dynamic_cast): Fix comment.
4020
4021 2006-01-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
4022
4023 PR c++/10891
4024 * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
4025 -fno-rtti.
4026
4027 2006-01-21 Mark Mitchell <mark@codesourcery.com>
4028
4029 PR c++/25895
4030 * class.c (build_base_path): Generate a NOP_EXPR instead of a
4031 COMPONENT_REF if the base and derived classes are at the same
4032 address.
4033
4034 PR c++/25856
4035 * decl.c (begin_destructor_body): Robustify.
4036
4037 PR c++/25858
4038 * parser.c (cp_parser_direct_declarator): Robustify.
4039
4040 2006-01-20 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4041
4042 * parser.c (cp_lexer_next_token_is_keyword): Simplify.
4043
4044 * parser.c (clear_decl_specs): Remove prototype.
4045
4046 * parser.c (cp_parser_expression_fn): Remove.
4047
4048 * call.c (add_builtin_candidates): Remove superfluous return.
4049 * name-lookup.c (do_toplevel_using_decl): Likewise.
4050 * parser.c (cp_parser_type_specifier_seq): Likewise.
4051 (cp_parser_save_default_args): Likewise.
4052
4053 2006-01-20 Dirk Mueller <dmueller@suse.com>
4054
4055 PR c++/5520
4056 * semantics.c (finish_if_stmt): Call empty_body_warning.
4057 * parser.c (cp_parser_implicitly_scoped_statement):
4058 Mark empty statement with an empty stmt.
4059
4060 2006-01-19 Mark Mitchell <mark@codesourcery.com>
4061
4062 PR c++/22136
4063 * name-lookup.c (do_class_using_decl): Don't try to look up base
4064 classes in templates with dependent base types.
4065
4066 2006-01-19 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4067
4068 PR c++/25854
4069 * pt.c (maybe_process_partial_specialization): Return early on
4070 error_mark_node.
4071
4072 2006-01-19 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4073
4074 PR c++/16829
4075 * decl.c (start_preparsed_function): Check default arguments
4076 unconditionally.
4077 * name-lookup.c (pushdecl_maybe_friend): Check default arguments
4078 of all functions and function templates.
4079 * parser.c (cp_parser_late_parsing_default_args): Check default
4080 arguments.
4081 * decl2.c (check_default_args): Set missing default arguments to
4082 error_mark_node.
4083
4084 2006-01-18 Mark Mitchell <mark@codesourcery.com>
4085
4086 PR c++/25836
4087 * cp-tree.h (push_class_stack): New function.
4088 (pop_class_stack): Likewise.
4089 * class.c (class_stack_node): Add hidden field.
4090 (pushclass): Clear it.
4091 (push_class_stack): New function.
4092 (pop_class_stack): Likewise.
4093 (currently_open_class): Ignore hidden classes.
4094 (currently_open_derived_class): Likewise.
4095 * name-lookup.c (push_to_top_level): Call push_class_stack.
4096 (pop_from_top_level): Call pop_class_stack.
4097
4098 2006-01-18 Kazu Hirata <kazu@codesourcery.com>
4099
4100 * tree.c (find_tree_t, find_tree): Remove.
4101 * cp-tree.h: Remove the prototype for find_tree.
4102
4103 2006-01-18 Jakub Jelinek <jakub@redhat.com>
4104
4105 * search.c (lookup_conversions_r): Fix a pasto.
4106
4107 2006-01-17 Eric Christopher <echristo@apple.com>
4108
4109 * call.c (convert_like_real): When issuing conversion
4110 warnings, depend on OPT_Wconversion.
4111 * cvt.c (build_expr_type_conversion): Ditto.
4112
4113 2006-01-17 Kazu Hirata <kazu@codesourcery.com>
4114
4115 * name-lookup.c (lookup_namespace_name): Remove.
4116 * name-lookup.h: Remove the prototype for
4117 lookup_namespace_name.
4118
4119 2006-01-17 Jakub Jelinek <jakub@redhat.com>
4120
4121 PR c/25682
4122 * decl.c (compute_array_index_type): After issuing not an integral
4123 constant-expression error, set size to 1 to avoid ICEs later on.
4124
4125 2006-01-16 Ian Lance Taylor <ian@airs.com>
4126
4127 * parser.c: Include "cgraph.h".
4128 (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
4129 assemble_asm.
4130
4131 2006-01-16 Rafael �ila de Esp�dola <rafael.espindola@gmail.com>
4132
4133 * g++spec.c (lang_specific_spec_functions): Remove.
4134
4135 2006-01-15 Gabriel Dos Reis <gdr@integrable-solutions.net>
4136
4137 * decl.c (check_initializer): Fix thinko.
4138
4139 2006-01-14 Mark Mitchell <mark@codesourcery.com>
4140
4141 PR c++/25663
4142 * parser.c (cp_parser_direct_declarator): Use cp_parser_error
4143 instead of error.
4144
4145 2006-01-13 Jason Merrill <jason@redhat.com>
4146
4147 * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
4148
4149 * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
4150 * pt.c (check_explicit_specialization): Likewise.
4151
4152 2006-01-12 Jason Merrill <jason@redhat.com>
4153
4154 PR libstdc++/24660
4155 * pt.c (check_explicit_specialization): Handle namespace
4156 association.
4157 * name-lookup.c (set_decl_namespace): Likewise.
4158
4159 2006-01-12 Nathan Sidwell <nathan@codesourcery.com>
4160
4161 PR c++/24824
4162 * class.c (handle_using_decl): Pass correct scope to
4163 cp_emit_debug_info_for_using.
4164
4165 2006-01-11 Nathan Sidwell <nathan@codesourcery.com>
4166
4167 PR c++/25386
4168 * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
4169 packedness.
4170
4171 2006-01-06 Gabriel Dos Reis <gdr@integrablesolutions.net>
4172
4173 * parser.c (cp_parser_primary_expression): Document the grammar
4174 for the built-in offsetof, a GNU extension.
4175
4176 2006-01-04 Zdenek Dvorak <dvorakz@suse.cz>
4177
4178 PR c++/25632
4179 * init.c (constant_value_1): Unshare use of DECL_INITIAL. Fix a typo
4180 in condition.
4181
4182 2006-01-04 Chris Lattner <sabre@gnu.org>
4183
4184 * typeck2.c: update copyright to 2006
4185 (split_nonconstant_init_1): Set TREE_CONSTANT to true.
4186
4187 2006-01-04 Mark Mitchell <mark@codesourcery.com>
4188
4189 PR c++/24782
4190 * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
4191 checks, even when parsing tentatively.
4192
4193 2006-01-04 Richard Henderson <rth@redhat.com>
4194
4195 Merge from gomp branch.
4196 * lex.c (handle_pragma_java_exceptions): Fix whitespace.
4197 * parser.c (struct cp_token): Add pragma_kind.
4198 (eof_token): Update to match.
4199 (struct cp_lexer): Add in_pragma; rearrange next for better packing.
4200 (cp_parser_initial_pragma): New.
4201 (cp_lexer_new_main): Use it. Don't bother clearing
4202 c_lex_return_raw_strings.
4203 (cp_lexer_get_preprocessor_token): Always initialize keyword
4204 and pragma_kind fields. Handle CPP_PRAGMA.
4205 (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
4206 in_pragma is set.
4207 (cp_lexer_handle_pragma): Remove. Update callers to cp_parser_pragma.
4208 (cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
4209 (cp_parser_skip_to_pragma_eol): New.
4210 (cp_parser_error): Use it.
4211 (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
4212 rearrange with switch statement.
4213 (cp_parser_skip_to_end_of_statement): Likewise.
4214 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
4215 (cp_parser_skip_to_closing_brace): Likewise.
4216 (cp_parser_skip_until_found): Likewise.
4217 (cp_parser_statement): Add in_compound argument; update callers.
4218 Use it to decide how to handle pragma parsing.
4219 (cp_parser_labeled_statement): Add in_compound argument; pass
4220 it on to cp_parser_statement.
4221 (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
4222 (cp_parser_declaration_seq_opt): Likewise.
4223 (cp_parser_parameter_declaration): Likewise.
4224 (cp_parser_member_specification_opt): Likewise.
4225 (cp_parser_function_definition_after_decl): Likewise.
4226 (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
4227 (cp_parser_pragma): New.
4228 (pragma_lex): New.
4229
4230 2006-01-04 Dirk Mueller <dmueller@suse.com>
4231
4232 * decl.c (finish_constructor_body): create simple
4233 compound stmt instead of a if(1) { } construct.
4234
4235 2006-01-03 Mark Mitchell <mark@codesourcery.com>
4236
4237 PR c++/25492
4238 * name-lookup.c (push_class_level_binding): When a derived class
4239 provides a type binding, eliminate any type binding from a base
4240 class.
4241
4242 PR c++/25625
4243 * repo.c (repo_emit_p): Always instantiate static data members
4244 initialized by constant expressions, so that there values are
4245 available.
4246
4247 2006-01-02 Mark Mitchell <mark@codesourcery.com>
4248
4249 PR c++/25635
4250 * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
4251 conversion operator.
4252 * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
4253
4254 PR c++/25638
4255 * class.c (add_method): Never associate more than one destructor
4256 with a single class.
4257
4258 PR c++/25637
4259 * cp-tree.h (do_friend): Adjust prototype.
4260 * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
4261 (grokdeclarator): Likewise. Refine check for invalid
4262 declarations/definitions of member functions outside of their own
4263 class.
4264 * friend.c (do_friend): Make funcdef_flag a bool, not an int.
4265
4266 PR c++/25633
4267 * parser.c (cp_parser_mem_initializer_list): Check result of
4268 cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
4269 (cp_parser_mem_initializer): Return error_mark_node for failure.
4270
4271 PR c++/25634
4272 * parser.c (cp_parser_template_parameter_list): Call
4273 begin_template_parm_list and end_template_parm_list here.
4274 (cp_parser_type_parameter): Not here.
4275 (cp_parser_template_declaration_after_export): Or here.
4276 (cp_parser_elaborated_type_specifier): Call
4277 cp_parser_check_template_parameters.
4278
4279 * tree.c (build_target_expr_with_type): Use force_target_expr.
4280
4281 * decl2.c (mark_used): Fix typo in comment.
4282
4283 2006-01-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4284
4285 * parser.c (cp_parser_using_declaration): Skip name-lookup on
4286 invalid scope.
4287
4288 2005-12-30 Gabriel Dos Reis <gdr@integrable-solutions.net>
4289
4290 * cxx-pretty-print.c (pp_cxx_constant): New. Print
4291 string-literal in parens if input program says so.
4292 (pp_cxx_primary_expression): Hand off constant printing to
4293 pp_cxx_constant.
4294 (pp_cxx_pretty_printer_init): Set pp->c_base.constant.
4295 (pp_cxx_expression): Use pp_cxx_constant for literals.
4296 * error.c (dump_expr): Use pp_constant for literals.
4297
4298 2005-12-29 Nathan Sidwell <nathan@codesourcery.com>
4299
4300 * method.c (make_thunk): Don't set comdat_linkage here.
4301 (use_thunk): Make thunk one only here, if thunk target is
4302 DECL_ONE_ONLY.
4303
4304 2005-12-26 Mark Mitchell <mark@codesourcery.com>
4305
4306 PR c++/25439
4307 * decl.c (grokdeclarator): Remove dead code.
4308 * ptree.c (cxx_print_xnode): Handle BASELINK.
4309 * parser.c (make_id_declarator): Add sfk parameter.
4310 (cp_parser_direct_declarator): Do not pass TYPE_DECLs to
4311 make_id_declarator.
4312 (cp_parser_declarator_id): Simplify BASELINKs here.
4313 (cp_parser_member_declaration): Adjust calls to
4314 make_id_declarator.
4315
4316 2005-12-26 Mark Mitchell <mark@codesourcery.com>
4317
4318 PR c++/23171, c++/23172, c++/25417.
4319 * typeck.c (build_unary_op): Create temporary variables for
4320 compound literals whose addresses are taken.
4321 * init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
4322 * decl.c (reshape_init_vector): Likewise.
4323 (reshape_init): Give it external linkage.
4324 (check_initializer): Use COMPOUND_LITERAL_P.
4325 (initialize_artificial_var): Allow the initializer to be a
4326 CONSTRUCTOR.
4327 * call.c (make_temporary_var_for_ref_to_temp): Use
4328 create_temporary_var.
4329 * cp-tree.h (COMPOUND_LITERAL_P): New macro.
4330 (rehape_init): Declare.
4331 * typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
4332 * semantics.c (finish_compound_literal): Use reshape_init.
4333
4334 2005-12-23 Mark Mitchell <mark@codesourcery.com>
4335
4336 PR c++/24671
4337 * pt.c (instantiate_template): Handle SFINAE.
4338
4339 2005-12-23 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4340
4341 * decl.c (grokdeclarator): Improve diagnostic for friend
4342 declarations of class members.
4343
4344 2005-12-22 Mark Mitchell <mark@codesourcery.com>
4345
4346 PR c++/25369
4347 * tree.c (really_overloaded_fn): Tweak comment.
4348 * pt.c (tsubst_call_declarator_parms): Remove.
4349 (tsubst_copy): Call mark_used on the member referenced by an
4350 OFFSET_REF.
4351 * semantics.c (finish_qualified_id_expr): Simplify.
4352 * decl2.c (mark_used): Accept BASELINKs.
4353
4354 PR c++/25364
4355 * typeck.c (build_unary_op): Pass DECLs not names to
4356 build_offset_refs.
4357 * init.c (build_offset_ref): Do not do name lookup. Do not call
4358 mark_used.
4359 * call.c (build_call): Simplify and tidy.
4360 * semantics.c (finish_qualified_id_expr): Call mark_used.
4361
4362 2005-12-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4363
4364 PR c++/23333
4365 * parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
4366 identify a single '0'.
4367
4368 2005-12-20 Mark Mitchell <mark@codesourcery.com>
4369
4370 PR c++/21228
4371 * decl.c (use_eh_spec_block): New function.
4372 (store_parm_decls): Use it.
4373 (finish_function): Likewise.
4374
4375 2005-12-19 Mark Mitchell <mark@codesourcery.com>
4376
4377 PR c++/24278
4378 * init.c (expand_member_init): Print messages about baseclasses
4379 using %T rather than %D.
4380
4381 PR c++/24915
4382 * class.c (add_method): Do not treat templates as identical unless
4383 their return types are the same.
4384
4385 2005-12-12 Mark Mitchell <mark@codesourcery.com>
4386
4387 PR c++/25300
4388 * tree.c (build_qualified_name): Return error_mark_node for
4389 erroneous input.
4390
4391 2005-12-10 Mark Mitchell <mark@codesourcery.com>
4392
4393 PR c++/25337
4394 * pt.c (tsubst_copy_and_build): Permit dependent types for the
4395 object in a class member access expression.
4396
4397 2005-12-10 Terry Laurenzo <tlaurenzo@gmail.com>
4398
4399 PR java/9861
4400 * mangle.c (write_bare_function_type): Mangle return type for
4401 methods of Java classes
4402
4403 2005-12-08 Th�dore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
4404
4405 * call.c (build_conditional_expr): Print types in error messages.
4406
4407 2005-12-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4408
4409 * expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort.
4410
4411 2005-12-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4412
4413 * cp-gimplify.c (gimplify_cp_loop): Use fold_build3.
4414
4415 2005-12-07 Rafael �ila de Esp�dola <rafael.espindola@gmail.com>
4416
4417 * Make-lang.in (c++.all.build, c++.install-normal): Remove.
4418
4419 2005-12-07 Rafael �ila de Esp�dola <rafael.espindola@gmail.com>
4420
4421 * Make-lang.in: Remove all dependencies on s-gtype.
4422
4423 2005-12-06 Aldy Hernandez <aldyh@redhat.com>
4424
4425 PR C++/24138
4426 * decl.c (reshape_init_array_1): Handle max_index of -1.
4427
4428 2005-12-06 Roger Sayle <roger@eyesopen.com>
4429
4430 * typeck.c (build_binary_op): Issue warning if either operand of a
4431 comparison operator is a string literal, except for testing equality
4432 or inequality against NULL.
4433
4434 2005-12-06 Roger Sayle <roger@eyesopen.com>
4435
4436 PR c++/25263
4437 * decl.c (compute_array_index_type): Check that itype is an
4438 INTEGER_CST node before testing/clearing TREE_OVERFLOW.
4439
4440 2005-12-05 Daniel Berlin <dberlin@dberlin.org>
4441
4442 * ptree.c (cxx_print_decl): Update to check for decl_common
4443 structure.
4444
4445 2005-12-02 Mark Mitchell <mark@codesourcery.com>
4446
4447 PR c++/24173
4448 * decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
4449 clobbering newdecl.
4450
4451 2005-12-02 Richard Guenther <rguenther@suse.de>
4452
4453 * semantics.c (simplify_aggr_init_expr): Use buildN instead
4454 of build.
4455
4456 2005-12-02 Gabriel Dos Reis <gdr@integrable-solutions.net>
4457
4458 * parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
4459 ggc_realloc.
4460 (cp_parser_template_argument_list): Use XRESIZEVEC instead of
4461 xrealloc.
4462 * class.c (pushclass): Likewise.
4463
4464 2005-12-02 Gabriel Dos Reis <gdr@integrable-solutions.net>
4465
4466 * decl2.c (get_priority_info): Use XNEW, not xmalloc.
4467 * decl.c (push_switch): Likewise.
4468 * lex.c (handle_pragma_implementation): Likewise.
4469 * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
4470 not ggc_alloc.
4471 (cxx_initialize_diagnostics): Use XNEW, not xmalloc.
4472 * class.c (init_class_processing): Use XNEWVEC, not xmalloc.
4473 * g++spec.c (lang_specific_driver): Likewise.
4474 * mangle.c (save_partially_mangled_name): Likewise.
4475 * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
4476 (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
4477 (cp_parser_sizeof_operand): Likewise.
4478 * repo.c (open_repo_file, open_repo_file): Likewise.
4479
4480 2005-12-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
4481
4482 * parser.c (cp_parser_make_typename_type): Call make_typename_type
4483 with tf_none instead of magic value 0.
4484 (cp_parser_explicit_instantiation): Call do_type_instantiation
4485 with tf_error instead of magic value 1.
4486 (cp_parser_elaborated_type_specifier): Call make_typename_type
4487 with tf_error instead of magic value 1.
4488 (cp_parser_class_name): Likewise.
4489 (cp_parser_lookup_name): Likewise.
4490
4491 2005-12-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
4492
4493 * parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
4494 not RID_MAX.
4495
4496 2005-11-30 Jason Merrill <jason@redhat.com>
4497
4498 PR c++/21123
4499 * cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference
4500 parms in a thunk.
4501
4502 2005-11-30 Ben Elliston <bje@au.ibm.com>
4503
4504 * typeck.c (build_x_unary_op): Correct spelling in error message.
4505
4506 2005-11-28 Nathan Sidwell <nathan@codesourcery.com>
4507
4508 PR c++/21166
4509 * class.c (check_field_decls): Only set DECL_PACKED on a field
4510 when its natural alignment is > BITS_PER_UNIT.
4511
4512 2005-11-27 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4513
4514 PR c++/24979
4515 * cp-tree.h (DECL_MAIN_P): Remove duplicate definition.
4516
4517 2005-11-26 Richard Henderson <rth@redhat.com>
4518
4519 * lex.c: Update for pragma_lex rename.
4520 * parser.c: Likewise.
4521
4522 2005-11-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4523
4524 PR c++/9278
4525 * decl.c (grokparms): Do not allow typedef-names in a '(void)'
4526 parmlist.
4527
4528 2005-11-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4529
4530 * typeck2.c (process_init_constructor_union): Remove check for
4531 unnamed union members.
4532
4533 2005-11-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4534
4535 * name-lookup.c (lookup_name_real): Merge two if's.
4536
4537 2005-11-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4538
4539 * pt.c (instantiate_class_template): Clean-up.
4540
4541 2005-11-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4542
4543 * pt.c (template_class_depth_real): Remove. Move functionality to ...
4544 (template_class_depth): ... here, replacing count_specializations
4545 with 0. Adjust comment.
4546
4547 2005-11-24 Richard Guenther <rguenther@suse.de>
4548 Dirk Mueller <dmueller@suse.de>
4549
4550 PR c++/14024
4551 * typeck.c (build_reinterpret_cast_1): Use
4552 strict_aliasing_warning.
4553
4554 2005-11-23 Gabriel Dos Reis <gdr@integrable-solutions.net>
4555
4556 PR c++/24235
4557 * pt.c (check_instantiated_args): Reword diagnostic message about
4558 template argument involving local types.
4559
4560 2005-11-23 Gabriel Dos Reis <gdr@integrable-solutions.net>
4561
4562 PR c++/21667
4563 * typeck.c (build_array_ref): Avoid code duplicate. Use common
4564 C/C++ diagnostic function warn_array_subscript_with_type_char.
4565
4566 2005-11-21 Gabriel Dos Reis <gdr@integrable-solutions.net>
4567
4568 PR c++/22238
4569 * error.c (resolve_virtual_fun_from_obj_type_ref): New.
4570 (dump_expr): Use it in <case CALL_EXPR>.
4571
4572 2005-11-21 Richard Henderson <rth@redhat.com>
4573
4574 * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.
4575
4576 * name-lookup.c (lookup_name): Remove prefer_type argument.
4577 (lookup_name_prefer_type): New.
4578 * decl.c (lookup_and_check_tag): Use them.
4579 * pt.c (tsubst_friend_class): Likewise.
4580 (lookup_template_class): Likewise.
4581 (tsubst_copy_and_build): Likewise.
4582 * name-lookup.h (lookup_name_prefer_type): New.
4583 (lookup_name): Remove declaration.
4584
4585 2005-11-18 Mark Mitchell <mark@codesourcery.com>
4586
4587 PR c++/8355
4588 * decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
4589 set_decl_namespace.
4590 * name-lookup.c (set_decl_namespace):
4591
4592 2005-11-18 Mike Stump <mrs@apple.com>
4593
4594 * cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
4595 * name-lookup.c (lookup_name_two): Remove.
4596 (lookup_name_one): Add.
4597 * name-lookup.h (lookup_name_two): Remove.
4598 (lookup_name_one): Add.
4599
4600 2005-11-15 Jason Merrill <jason@redhat.com>
4601
4602 PR c++/24580
4603 * method.c (locate_copy): Also use skip_artificial_parms here.
4604 (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
4605 for RECORD_TYPE.
4606 (locate_ctor): Abort if we fail to find a default constructor.
4607
4608 2005-11-15 Mike Stump <mrs@apple.com>
4609
4610 * name-lookup.c (lookup_name_two): Add.
4611 * name-lookup.h: Likewise.
4612
4613 2005-11-15 Mark Mitchell <mark@codesourcery.com>
4614
4615 PR c++/24667
4616 * typeck.c (check_for_casting_away_constness): Use the diag_fn.
4617 (build_const_cast_1): Call it, for C-style casts.
4618
4619 2005-11-14 Mark Mitchell <mark@codesourcery.com>
4620
4621 PR c++/24687
4622 * pt.c (check_explicit_specialization): Don't check for C linkage.
4623 (push_template_decl_real): Likewise.
4624 * parser.c (cp_parser_explicit_specialization): Check here.
4625 (cp_parser_template_declaration_after_export): And here.
4626
4627 * parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
4628 field.
4629
4630 2005-11-14 Jason Merrill <jason@redhat.com>
4631
4632 PR c++/24580
4633 * method.c (locate_ctor): Skip all artificial parms, not just
4634 'this'.
4635
4636 2005-11-14 Mark Mitchell <mark@codesourcery.com>
4637
4638 * parser.c (eof_token): Add initializer for ambiguous_p.
4639
4640 2005-11-13 Mark Mitchell <mark@codesourcery.com>
4641
4642 PR c++/24817
4643 * decl.c (check_redeclaration_exception_specification): New
4644 function.
4645 (duplicate_decls): Use it.
4646 * error.c (fndecl_to_string): Print the template parameter list.
4647
4648 PR c++/20293
4649 * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
4650 for namespaces.
4651 (pp_cxx_original_namespace_definition): Likewise.
4652 * name-lookup.c (ambiguous_decl): Don't issue error messages;
4653 instead return lists of ambiguous candidates.
4654 (select_decl): Handle ambiguous namespace lookups.
4655 * parser.c (cp_token): Add ambiguous_p.
4656 (cp_lexer_get_preprocessor_token): Set it.
4657 (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
4658 when a qualified name uses an invalid scope.
4659 (cp_parser_primary_expression): Print ambiguous candidates.
4660 (cp_parser_type_parameter): Adjust comment to reflect new
4661 parameter name for cp_parser_lookup_name.
4662 (cp_parser_template_argument): Likewise.
4663 (cp_parser_elaborated_type_specifier): Likewise.
4664 (cp_parser_namespace_name): Likewise.
4665 (cp_parser_class_name): Print ambiguous candidates.
4666 (cp_parser_lookup_name): Rename ambiguous_p parameter to
4667 ambiguous_decls. Use it to return a list of ambiguous candiates
4668 when a lookup is ambiguous.
4669 (cp_parser_lookup_name_simple): Adjust comment to reflect new
4670 parameter name for cp_parser_lookup_name.
4671
4672 2005-11-12 Jakub Jelinek <jakub@redhat.com>
4673
4674 PR c++/24780
4675 * typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING
4676 and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants
4677 of array type.
4678
4679 PR c++/24761
4680 * pt.c (tsubst_copy_asm_operands): New function.
4681 (tsubst_expr) <case ASM_EXPR>: Use it.
4682
4683 2005-11-08 Jakub Jelinek <jakub@redhat.com>
4684
4685 PR c++/19450
4686 * decl.c (redeclaration_error_message): Issue diagnostics about
4687 olddecl and newdecl disagreement on __thread property.
4688 (grokdeclarator): Set DECL_TLS_MODEL on class static variables.
4689
4690 2005-11-08 Jason Merrill <jason@redhat.com>
4691
4692 PR c++/21123
4693 * method.c (use_thunk): Use build_cplus_new instead of
4694 force_target_expr.
4695
4696 2005-11-06 Jason Merrill <jason@redhat.com>
4697 James A. Morrison <phython@gcc.gnu.org>
4698
4699 PR c++/17256
4700 * decl2.c (cp_finish_file): Fix conditions for undefined warning.
4701 Set TREE_NO_WARNING instead of TREE_PUBLIC.
4702 * pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
4703 a warning on a function we didn't instantiate because of excessive
4704 recursion.
4705
4706 2005-11-06 Mark Mitchell <mark@codesourcery.com>
4707
4708 * class.c (record_subobject_offsets): Don't record offsets past
4709 biggest empty class for non-empty base classes.
4710 (layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when
4711 keeping track of the size of emptyclasses.
4712
4713 PR c++/21308
4714 * class.c (sizeof_biggest_empty_class): New variable.
4715 (record_subobject_offsets): Don't record offsets past biggest
4716 empty class for data members. Replace vbases_p parameter with
4717 is_data_member parameter.
4718 (build_base_field): Adjust call.
4719 (layout_class_type): Likewise. Maintain
4720 sizeof_biggest_empty_class.
4721
4722 2005-11-05 Kazu Hirata <kazu@codesourcery.com>
4723
4724 * decl2.c, init.c, typeck.c: Fix comment typos.
4725
4726 2005-11-04 Richard Guenther <rguenther@suse.de>
4727
4728 PR c++/22487
4729 * init.c (build_vec_init): Build comparison of matching
4730 types.
4731
4732 2005-11-03 Josh Conner <jconner@apple.com>
4733
4734 PR c++/19989
4735 pt.c (tsubst): Accept zero-length array if tf_error is set
4736 in complain flags. Change error message for negative-
4737 length array.
4738
4739 2005-11-04 Joseph S. Myers <joseph@codesourcery.com>
4740
4741 * cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list*
4742 parameter.
4743
4744 2005-11-03 Joseph S. Myers <joseph@codesourcery.com>
4745
4746 PR c++/17964
4747 * error.c (cp_cpp_error): New function.
4748 * cp-tree.h (cp_cpp_error): Declare.
4749 * parser.c (cp_lexer_new_main): Set CPP option client_diagnostic
4750 and error callback after lexing.
4751
4752 2005-11-03 Mark Mitchell <mark@codesourcery.com>
4753
4754 PR c++/21627
4755 * pt.c (register_specialization): Update inline flags on clones.y
4756
4757 2005-11-03 Andrew Pinski <pinskia@physics.uc.edu>
4758
4759 PR c++/24582
4760 * decl.c (declare_local_label): Return 0 for variables
4761 with error_mark_node as their types.
4762
4763 2005-11-02 Mark Mitchell <mark@codesourcery.com>
4764
4765 PR c++/22434
4766 * call.c (build_conditional_expr): Do bad conversions, if there's
4767 no other choice.
4768
4769 PR c++/24560
4770 * parser.c (cp_parser_postfix_dot_deref_expression): Improve error
4771 message for use of overloaded functions on LHS of "." operator.
4772
4773 PR c++/19253
4774 * parser.c (cp_parser_postfix_expression): Use
4775 cp_parser_elaborated_type_specifier to handle typename-types in
4776 functional casts.
4777 (cp_parser_enclosed_argument_list): Skip ahead to the end of the
4778 template argument list if the closing ">" is not found.
4779
4780 PR c++/24569
4781 * pt.c (instantiate_decl): Use cp_finish_decl, not
4782 finish_static_data_member_decl.
4783
4784 2005-10-28 Andrew Pinski <pinskia@physics.uc.edu>
4785
4786 * decl.c (grokfndecl): Remove the setting
4787 of the return type of the function type
4788 of main after erroring about must returning
4789 int.
4790
4791 2005-10-28 Andrew Pinski <pinskia@physics.uc.edu>
4792
4793 PR C++/23229
4794 * decl.c (grokfndecl): Create a new function type
4795 after erroring out about main not returning int.
4796
4797 2005-10-28 Josh Conner <jconner@apple.com>
4798
4799 PR c++/22153
4800 * parser.c (cp_parser_member_declaration): Detect and handle
4801 a template specialization.
4802
4803 2005-10-28 Andrew Pinski <pinskia@physics.uc.edu>
4804
4805 PR C++/23426
4806 * decl.c (start_decl): Check that the decl is an
4807 error_mark_node before getting the type.
4808 Remove the check for the decl's type being an
4809 error_mark_node.
4810
4811 2005-10-21 Mark Mitchell <mark@codesourcery.com>
4812
4813 PR c++/24260
4814 * parser.c (cp_parser_init_declarator): Pass attributes to
4815 grokfield.
4816
4817 2005-10-20 Mark Mitchell <mark@codesourcery.com>
4818
4819 PR c++/22618
4820 * search.c (accessible_p): Check access in the outermost set of
4821 template parameters.
4822
4823 2005-10-20 Richard Guenther <rguenther@suse.de>
4824
4825 * decl.c (grokdeclarator): Fix ambiguous pedwarn message.
4826
4827 2005-10-18 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4828
4829 PR c++/22293
4830 * decl.c (grokdeclarator): Reject unqualified destructors in
4831 friend declarations.
4832
4833 2005-10-18 Mark Mitchell <mark@codesourcery.com>
4834
4835 PR c++/23293
4836 * pt.c (convert_template_argument): Use canonical type variants in
4837 template specializations.
4838
4839 2005-10-18 Nathan Sidwell <nathan@codesourcery.com>
4840
4841 PR c++/21383
4842 * name-lookup.c (arg_assoc): Template args can be null in a
4843 template-id-expr.
4844
4845 PR c++/22604
4846 * class.c (update_vtable_entry_for_fn): Don't process invalid
4847 covariant overriders.
4848
4849 PR c++/23118
4850 * cp-tree.h (add_method): Add return value.
4851 * class.c (add_method): Return success indicator.
4852 * semantics.c (finish_member_declaration): Don't add an invalid
4853 method to the method list.
4854
4855 2005-10-17 Mark Mitchell <mark@codesourcery.com>
4856
4857 PR c++/21908
4858 * call.c (build_new_method_call): Do not show VTT parameters to
4859 the user.
4860
4861 2005-10-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
4862
4863 PR c++/23440
4864 * parser.c (cp_parser_statement): If the parser reached CPP_EOF,
4865 only complain about missing statement.
4866
4867 2005-10-17 Nathan Sidwell <nathan@codesourcery.com>
4868
4869 PR c++/24386
4870 * cp-tree.h (BASELINK_QUALIFIED_P): New.
4871 * pt.c (tsubst_copy_and_build): <CALL_EXPR case>: Use it.
4872 * typeck.c (finish_class_member_access_expr): Set it.
4873
4874 PR c++/21353
4875 * decl.c (check_default_argument): Don't check
4876 processing_template_decl or uses_template_parms here.
4877 (grokparms): Only call check_default_argument when not processing
4878 a template decl.
4879 * parser.c (cp_parser_late_parsing_default_arg): Call
4880 check_default_argument when not processing a template decl.
4881
4882 2005-10-16 Mark Mitchell <mark@codesourcery.com>
4883
4884 PR c++/24389
4885 * decl2.c (mark_used): Use uses_template_parms instead of
4886 dependent_type_p.
4887 * init.c (constant_value_1): Handle uninstantiated templates
4888 specially.
4889 * pt.c (instantiate_decl): Add sanity check.
4890
4891 2005-10-16 Mark Mitchell <mark@codesourcery.com>
4892
4893 PR c++/22173
4894 * typeck.c (check_template_keyword): Fix thinko.
4895
4896 2005-10-16 Andrew Pinski <pinskia@physics.uc.edu>
4897
4898 PR c++/23959
4899 * decl.c (pop_switch): Only call c_do_switch_warnings
4900 when not processing templates.
4901
4902 2005-10-16 Mark Mitchell <mark@codesourcery.com>
4903
4904 PR c++/22173
4905 * cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro.
4906 (check_template_keyword): New function.
4907 (finish_id_expression): Change prototoype.
4908 (finish_qualified_id_expr): Change prototype.
4909 (build_qualified_name): New function.
4910 (finish_class_member_access_expr): Change prototype.
4911 * init.c (build_offset_ref): Use build_qualified_name.
4912 * mangle.c (write_expression): Likewise.
4913 * parser.c (cp_parser_primary_expression): Remove qualifying_class
4914 parameter. Add address_p and template_arg_p. Use
4915 build_qualified_name.
4916 (cp_parser_id_expression): Default *template_p to
4917 template_keyword_p. Check for invalid uses of the template
4918 keyword.
4919 (cp_parser_postfix_expression): Eliminate special handling for
4920 qualified names. Adjust call to cp_parser_primary_expression.
4921 (cp_parser_postfix_dot_deref_expression): Adjust call to
4922 cp_parser_id_expression and finish_class_member_access_expr.
4923 (cp_parser_template_argument_list): Add comment.
4924 (cp_parser_template_argument): Adjust use of
4925 cp_parser_primary_expression. Remove call to
4926 finish_qualified_id_expr.
4927 (cp_parser_lookup_name): Use build_qualified_name.
4928 * pt.c (tsubst): Use build_qualified_name.
4929 (tsubst_qualified_id): Likewise. Adjust call to
4930 finish_qualified_id_expr.
4931 (tsubst_copy): Use build_qualified_name.
4932 (tsubst_copy_and_build): Adjusts call to finish_id_expression and
4933 finish_class_member_access_expr.
4934 * semantics.c (finish_non_static_data_member): Use
4935 build_qualified_name.
4936 (finish_qualified_id_expr): Add template_p and template_arg_p
4937 parameters.
4938 (finish_id_expression): Remove qualifiying_class parameter. Add
4939 template_p, done, address_p, and template_arg_p. Use
4940 build_qualified_name. Adjust calls to
4941 finish_class_member_acess_expr.
4942 * tree.c (build_qualified_name): New function.
4943 * typeck.c (check_template_keyword): New function.
4944 (finish_class_member_access_expr): Add template_p argument. Check
4945 for invalid uses of the template keyword.
4946
4947 2005-10-15 Mark Mitchell <mark@codesourcery.com>
4948
4949 PR c++/21347
4950 * class.c (maybe_warn_about_overly_private_class): Lazy
4951 constructors are public.
4952
4953 2005-10-14 Mark Mitchell <mark@codesourcery.com>
4954
4955 PR c++/19565
4956 * call.c (convert_like_real): Rely on convert_and_check to issue
4957 warnings about overflow and conversion to unsigned.
4958 * decl.c (finish_enum): Use the location of the enumerators, not
4959 the closing brace of the enumeration, when reporting warnings
4960 about conversions.
4961 (build_enumerator): Use error_mark_node for erroneous values.
4962 * typeck2.c (digest_init): Remove reference to "signature pointer"
4963 from comment.
4964
4965 2005-10-14 Nathan Sidwell <nathan@codesourcery.com>
4966
4967 PR c++/17796
4968 * optimize.c (update_cloned_parm): Add FIRST parameter. Use it.
4969 (maybe_clone_body): Track the first clone.
4970
4971 2005-10-13 Nathan Sidwell <nathan@codesourcery.com>
4972
4973 PR c++/23984
4974 * class.c (build_base_path): The vtable is always the first thing
4975 in the vtt.
4976
4977 2005-10-13 Mark Mitchell <mark@codesourcery.com>
4978
4979 PR c++/20721
4980 * cp-tree.h (DECL_NONTRIVIALLY_INITIALIZED_P): New macro.
4981 * decl.c (duplicate_decls): Merge it into new declarations.
4982 (decl_jump_unsafe): Use it, rather than DECL_INITIAL.
4983 (cp_finish_decl): Set it, when appropriate.
4984
4985 PR c++/22180
4986 * call.c (build_new_method_call): Correct pretty-printing of
4987 destructor names.
4988 * pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an
4989 identifier.
4990
4991 PR c++/23694
4992 * decl.c (start_method): Return error_mark_node for errors.
4993
4994 PR c++/23307
4995 * pt.c (push_template_decl_real): Complain about attempts to
4996 declare template variables.
4997
4998 PR c++/22352
4999 * pt.c (tsubst_template_parms): Set processing_template_decl while
5000 processing the parameters.
5001 (tsubst_decl): Set processing_template_decl when substituting into
5002 a TEMPLATE_DECL.
5003
5004 PR c++/22405
5005 * pt.c (most_specialized_instantiation): Robustify.
5006
5007 PR c++/22464
5008 * semantics.c (finish_id_expression): Issue errors about uses of
5009 local variables in containing functions even in templates.
5010
5011 2005-10-12 Danny Smith <dannysmith@users.sourceforge.net>
5012
5013 PR target/21801
5014 PR target/23589
5015 * class.c (finish_struct_1): Call
5016 targetm.cxx.adjust_class_at_definition.
5017
5018
5019 2005-10-12 Nathan Sidwell <nathan@codesourcery.com>
5020
5021 PR c++/21592
5022 * pt.c (build_non_dependent_expr): Don't wrap a COMPONENT_REF
5023 with already looked up member functions. Assert we're not
5024 returning a NON_DEPENDENT_EXPR with unknown type.
5025 * typeck.c (finish_class_member_access_expr): We can get
5026 non-template-id-expr baselinks. If the lookup finds a baselink,
5027 remember it even inside templates.
5028
5029 PR c++/23797
5030 * parser.c (cp_parser_functional_cast): Cope when TYPE is not a
5031 TYPE_DECL. Use dependent_type_p to check type.
5032 * pt.c (uses_template_parms_p): Use dependent_type_p for a
5033 TYPE_DECL.
5034 (type_dependent_expression_p): Assert we've not been given a
5035 TYPE_DECL.
5036
5037 PR c++/21117
5038 * decl.c (check_function_type): Correctly overwrite incomplete
5039 return type with void type.
5040 * typeck.c (check_return_expr): If the function's return type is
5041 void, don't try and convert a return expr.
5042
5043 2005-10-12 David Edelsohn <edelsohn@gnu.org>
5044
5045 PR c++/23730
5046 * call.c (build_object_call): If BINFO is NULL, bypass
5047 lookup_fnfields and set fns to NULL_TREE.
5048
5049 2005-10-12 Paolo Bonzini <bonzini@gnu.org>
5050
5051 PR c++/24052
5052 * error.c (dump_expr): Pass LABEL_DECL to dump_decl. Print
5053 an ADDR_EXPR of a LABEL_DECL as &&.
5054
5055 2005-10-12 Nathan Sidwell <nathan@codesourcery.com>
5056
5057 PR c++/19964
5058 * class.c (walk_subobject_offsets): Don't walk error_mark_node.
5059
5060 2005-10-11 Ian Lance Taylor <ian@airs.com>
5061
5062 PR c++/8057
5063 * cvt.c (convert_to_void): Don't warn about unused values when
5064 processing a template declaration.
5065
5066 2005-10-11 Mark Mitchell <mark@codesourcery.com>
5067
5068 PR c++/21089
5069 * call.c (convert_like_real): Use decl_constant_value, not
5070 integral_constant_value.
5071 * init.c (constant_value_1): New function.
5072 (integral_constant_value): Use it.
5073 (decl_constant_value): Likewise.
5074 * typeck.c (decay_conversion): Use decl_constant_value, not
5075 integral_constant_value.
5076
5077 PR c++/21369
5078 * parser.c (cp_parser_elaborated_type_specifier): Don't treat
5079 class types as templates if the type is not appearing as part of a
5080 type definition or declaration.
5081
5082 2005-10-10 Mark Mitchell <mark@codesourcery.com>
5083
5084 PR c++/24277
5085 * pt.c (instantiate_decl): Call finish_static_data_member_decl for
5086 static data members.
5087
5088 2005-10-10 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5089 Mark Mitchell <mark@codesourcery.com>
5090
5091 PR c++/23437
5092 * parser.c (cp_parser_template_argument_list): Do not treat
5093 contents of argument list as part of a constant expression.
5094
5095 2005-10-10 Mark Mitchell <mark@codesourcery.com>
5096
5097 PR c++/24139
5098 * decl.c (grokdeclarator): Do not require template parameter lists
5099 for explicitly specialized class.
5100 * error.c (dump_aggr_type): Do not dump template arguments for
5101 non-primary specializations.
5102 (dump_function_name): Likewise.
5103
5104 PR c++/24275
5105 * pt.c (instantiate_decl): Instantiate the initializer of
5106 a static data member in the namespace containing the class
5107 containing the static data member.
5108
5109 2005-10-08 James A. Morrison <phython@gcc.gnu.org>
5110
5111 PR c++/22172
5112 * parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype
5113 scopes as nondependent.
5114
5115 2005-10-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5116
5117 * call.c (resolve_args): Remove redundant test.
5118
5119 2005-10-05 Paolo Bonzini <bonzini@gnu.org>
5120
5121 PR tree-optimization/21419
5122 PR tree-optimization/24146
5123 PR tree-optimization/24151
5124
5125 * semantics.c (finish_asm_stmt): Call readonly_error if outputs are
5126 read-only. Set ASM_VOLATILE_P for asms without outputs.
5127
5128 2005-10-05 Nathan Sidwell <nathan@codesourcery.com>
5129
5130 PR c++/23513
5131 * call.c (joust): Adjust length count to more_specialized_fn.
5132 * pt.c (more_specialized_fn): Cope with non-static member vs
5133 non-member.
5134
5135 2005-10-04 Andrew Pinski <pinskia@physics.uc.edu>
5136
5137 PR middle-end/23125
5138 * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
5139 instead of change_decl_assembler_name.
5140
5141 2005-10-03 Alexandre Oliva <aoliva@redhat.com>
5142
5143 * error.c (dump_type) <UNKNOWN_TYPE>: Print reworded message.
5144
5145 2005-10-03 Mark Mitchell <mark@codesourcery.com>
5146
5147 PR c++/17775
5148 * repo.c: Include flags.h.
5149 (finish_repo): Add -frandom-seed to the arguments.
5150
5151 2005-10-02 Mark Mitchell <mark@codesourcery.com>
5152
5153 PR c++/22621
5154 * parser.c (cp_parser_template_argument): Don't turn "T::f" into
5155 "(*this).T::f".
5156 * pt.c (convert_nontype_argument): Remove ??? comment.
5157
5158 PR c++/23840
5159 * tree.c (lvalue_p_1): A VA_ARG_EXPR with class type is an lvalue,
5160 when class rvalues are lvalues.
5161
5162 2005-09-28 Mark Mitchell <mark@codesourcery.com>
5163
5164 PR c++/16782
5165 * decl.c (grokdeclarator): Always pedwarn about overqualified
5166 member names.
5167
5168 2005-09-27 Mark Mitchell <mark@codesourcery.com>
5169
5170 PR c++/22147
5171 * name-lookup.c (maybe_process_template_type_declaration): Don't
5172 treat forward declarations of classes as templates just because
5173 we're processing_template_decl.
5174 * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend
5175 functions.
5176
5177 2005-09-26 Jason Merrill <jason@redhat.com>
5178
5179 PR c++/13764
5180 * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro.
5181 * name-lookup.c (pushdecl_maybe_friend): Check it.
5182 * decl.c (begin_function_body): Do nothing if it's false.
5183 (finish_function_body): Ditto.
5184 (outer_curly_brace_block): New fn.
5185 (finish_function): Use it.
5186
5187 2005-09-26 Richard Guenther <rguenther@suse.de>
5188
5189 PR middle-end/15855
5190 * decl2.c (do_static_destruction): Remove.
5191 (finish_static_initialization_or_destruction): Likewise.
5192 (DECL_EFFECTIVE_INIT_PRIORITY): New macro.
5193 (NEEDS_GUARD_P): Likewise.
5194 (do_static_initialization): Rename to
5195 do_static_initialization_or_destruction. Process all
5196 initializers/destructors and handle common conditionalizing.
5197 (start_static_initialization_or_destruction): Rename to
5198 one_static_initialization_or_destruction. Handle only
5199 decl-specific conditionalizing.
5200 (cp_finish_file): Call do_static_initialization_or_destruction.
5201
5202 2005-09-22 Jakub Jelinek <jakub@redhat.com>
5203
5204 PR c++/21983
5205 * class.c (find_final_overrider): Move diagnostic about no unique final
5206 overrider to...
5207 (update_vtable_entry_for_fn): ... here.
5208
5209 2005-09-21 Mark Mitchell <mark@codesourcery.com>
5210
5211 PR c++/23993
5212 * init.c (integral_constant_value): Use DECL_INTEGRAL_CONSTANT_VAR_P.
5213
5214 2005-09-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5215
5216 PR c++/23965
5217 * call.c (resolve_args): Return error_mark_node on arguments
5218 whose TREE_TYPE is error_mark_node.
5219
5220 2005-09-20 Jakub Jelinek <jakub@redhat.com>
5221
5222 PR c++/23947
5223 * rtti.c (get_pseudo_ti_init): Recompute ti pointer after
5224 get_tinfo_ptr calls.
5225
5226 2005-09-16 Mark Mitchell <mark@codesourcery.com>
5227
5228 PR c++/23914
5229 * parser.c (cp_parser_enclosed_template_argument_list): Make sure
5230 skip_evaluation is false when processing template arguments.
5231
5232 PR c++/21514
5233 * pt.c (check_instantiated_args): Treat uses of anonymous types as
5234 causing type-deduction failure.
5235
5236 2005-09-15 Jason Merrill <jason@redhat.com>
5237
5238 PR c++/23357
5239 * cp-tree.def (SIZEOF_EXPR, ALIGNOF_EXPR): Change code class to
5240 tcc_expression.
5241
5242 2005-09-15 Mark Mitchell <mark@codesourcery.com>
5243
5244 PR c++/23896
5245 * pt.c (tsubst_aggr_type): Make sure skip_evaluation is false when
5246 processing template arguments.
5247
5248 * pt.c (check_explicit_instantiation_namespace): Fix typo.
5249
5250 PR c++/13140
5251 * decl.c (check_class_member_definition_namespace): New function.
5252 (grokfndecl): Use it.
5253 (grokvardecl): Likewise.
5254 (grokdecl): Improve documentation.
5255 * pt.c (check_explicit_instantiation_namespace): New function.
5256 (register_specialization): Call check_specialization_namespace
5257 when replacing an implicitly instantiated function.
5258 (check_explicit_specialization): Ensure that DECL_CONTEXT is set
5259 correctly for namespace-scope specializations.
5260 (do_decl_instantiation): Use
5261 check_explicit_instantiation_namespace.
5262 (do_type_instantiation): Likewise.
5263
5264 2005-09-15 Nathan Sidwell <nathan@codesourcery.com>
5265
5266 PR c++/23725
5267 * error.c (dump_decl): <USING_DECL case> Use USING_DECL_SCOPE.
5268
5269 2005-09-13 Bastian Blank <waldi@debian.org>
5270
5271 PR c++/16171
5272 * mangle.c (find_substitution): Do not use special substitutions
5273 for identifiers not in std::.
5274
5275 2005-09-13 Mark Mitchell <mark@codesourcery.com>
5276
5277 PR c++/23839
5278 * typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER
5279 for VAR_DECLs.
5280
5281 2005-09-13 Mark Mitchell <mark@codesourcery.com>
5282
5283 PR c++/23842
5284 * pt.c (tsubst_default_argument): Do treat default argument
5285 expressions as occurring in the context of the function called.
5286
5287 2005-09-12 Mark Mitchell <mark@codesourcery.com>
5288
5289 PR c++/23841
5290 * parser.c (cp_parser_primary_expression): Recognize the closing
5291 ">" of a template-argument-list after a floating-point literal as
5292 the end of a cast expression.
5293
5294 2005-09-12 Mark Mitchell <mark@codesourcery.com>
5295
5296 PR c++/23789
5297 * cvt.c (perform_qualification_conversions): Don't create
5298 unnecessary NOP_EXPRs.
5299 * pt.c (tsubst_template_arg): Use fold_non_dependent_expr.
5300
5301 2005-09-12 Ian Lance Taylor <ian@airs.com>
5302
5303 PR g++/7874
5304 * cp-tree.h (struct lang_decl_flags): Add hidden_friend_p
5305 bitfield. Make dummy bitfield one bit smaller.
5306 (DECL_HIDDEN_FRIEND_P): Define.
5307 (pushdecl_maybe_friend): Declare.
5308 (pushdecl_top_level_maybe_friend): Declare.
5309 * decl.c (duplicate_decls): Add newdecl_is_friend parameter.
5310 Change prototype and all callers. Add assertion that a
5311 DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P. Set
5312 DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if
5313 appropriate.
5314 * name-lookup.c (supplement_binding): Don't ignore a
5315 DECL_HIDDEN_FRIEND_P.
5316 (pushdecl_maybe_friend): Break out contents of pushdecl. Add
5317 is_friend parameter. Set DECL_ANTICIPATED and
5318 DECL_HIDDEN_FRIEND_P for a friend function.
5319 (pushdecl): Just call pushdecl_maybe_friend.
5320 (pushdecl_with_scope): Add is_friend parameter. Change prototype
5321 and all callers.
5322 (pushdecl_namespace_level): Likewise.
5323 (push_overloaded_decl): Likewise. Check DECL_HIDDEN_FRIEND_P as
5324 well as DECL_ANTICIPATED when checking for a builtin.
5325 (do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as
5326 DECL_ANTICIPATED when checking for a builtin.
5327 (do_nonmember_using_decl): Likewise.
5328 (pushdecl_top_level_1): Add is_friend parameter. Change all
5329 callers.
5330 (pushdecl_top_level_maybe_friend): New function.
5331 (remove_hidden_names): New function.
5332 (struct arg_lookup): Add args field.
5333 (friend_of_associated_class_p): New static function.
5334 (arg_assoc_namespace): Ignore hidden functions which are not
5335 friends of an associated class of some argument.
5336 (lookup_arg_dependent): Remove hidden functions from list passed
5337 in. Initialize k.args.
5338 * name-lookup.h (remove_hidden_names): Declare.
5339 * friend.c (do_friend): Call pushdecl_maybe_friend instead of
5340 pushdecl.
5341 * call.c (add_function_candidate): Change DECL_ANTICIPATED test to
5342 an assertion, with a check for DECL_HIDDEN_FRIEND_P.
5343 (build_new_function_call): Add koenig_p parameter. Change
5344 prototype and callers.
5345 * pt.c (register_specialization): Add is_friend parameter. Change
5346 all callers.
5347 (push_template_decl_real): Change is_friend parameter to bool.
5348 Change prototype and all callers.
5349 (tsubst_friend_class): Call pushdecl_top_level_maybe_friend
5350 instead of pushdecl_top_level.
5351
5352 2005-09-11 Richard Henderson <rth@redhat.com>
5353
5354 * decl2.c (build_anon_union_vars): Copy attributes from the base addr.
5355 * pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR.
5356
5357 2005-09-09 Gabriel Dos Reis <gdr@integrable-solutions.net>
5358
5359 * parser.c (cp_parser_translation_unit): Simplify. The while-block
5360 was actually executed at most once.
5361
5362 2005-09-09 Richard Henderson <rth@redhat.com>
5363
5364 PR debug/20998
5365 * cp-tree.def (ALIAS_DECL): Remove.
5366 * cp-lang.c (cp_init_ts): Remove support for it.
5367 * error.c (dump_decl): Likewise.
5368 * name-lookup.c (pushdecl): Likewise.
5369 * semantics.c (finish_id_expression): Likewise.
5370 * decl2.c (build_anon_union_vars): Use a VAR_DECL with
5371 DECL_VALUE_EXPR instead.
5372
5373 2005-09-09 Mark Mitchell <mark@codesourcery.com>
5374
5375 PR c++/22252
5376 * decl.c (start_preparsed_function): Do not pay attention to
5377 #pragma interface for implicitly-defined methods.
5378 * decl2.c (cp_finish_file): Do not complain about uses of inline
5379 functions that have bodies, even if we decided not to emit the
5380 body in this translation unit.
5381 * semantics.c (note_decl_for_pch): Do not mess with linkage.
5382 (expand_or_defer_fn): Make inline, non-template functions COMDAT
5383 at this point.
5384
5385 2005-09-08 Richard Henderson <rth@redhat.com>
5386
5387 PR debug/23190
5388 * decl.c (wrapup_globals_for_namespace): Call
5389 emit_debug_global_declarations.
5390 * decl2.c (cp_finish_file): Likewise.
5391
5392 2005-09-08 Mark Mitchell <mark@codesourcery.com>
5393
5394 PR c++/23691
5395 * decl2.c (mark_used): Instantiate static data members initialized
5396 by constants, even in a template.
5397
5398 2005-09-08 Andrew Pinski <pinskia@physics.uc.edu>
5399
5400 PR obj-c++/16816
5401 * parser.c (cp_parser_objc_selector_expression): Treat CPP_SCOPE as
5402 two CPP_COLON.
5403
5404 2005-09-07 Richard Guenther <rguenther@suse.de>
5405
5406 * cp-gimplify.c (cp_gimplify_expr): Create empty CONSTRUCTOR
5407 for EMPTY_CLASS_EXPR.
5408
5409 2005-09-06 Jakub Jelinek <jakub@redhat.com>
5410
5411 PR c/23075
5412 * typeck.c (check_return_expr): Add no_warning argument. Set
5413 *no_warning to true if "return-statement with no value, in function
5414 returning" warning has been issued.
5415 * cp-tree.h (check_return_expr): Adjust prototype.
5416 * semantics.c (finish_return_stmt): Set TREE_NO_WARNING if
5417 check_return_expr set *no_warning to true.
5418
5419 2005-09-06 Mark Mitchell <mark@codesourcery.com>
5420
5421 * cp-tree.h (rvalue): New function.
5422 * call.c (build_conditional_expr): Use it.
5423 * init.c (build_new_1): Likewise.
5424 * rtti.c (build_dynamic_cast_1): Likewise.
5425 * tree.c (rvalue): New function.
5426 * typeck.c (build_unary_op): Use it.
5427 (build_static_cast_1): Likewise.
5428
5429 PR c++/9782
5430 * init.c (build_new_1): Make sure the entire array type is
5431 complete, not just its element types.
5432
5433 2005-09-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5434
5435 * decl.c (check_elaborated_type_specifier): Remove redundant check.
5436
5437 2005-09-06 Jakub Jelinek <jakub@redhat.com>
5438
5439 PR c++/23056
5440 * typeck.c (ignore_overflows): New helper function.
5441 (build_static_cast_1): Use it.
5442
5443 2005-09-06 Kazu Hirata <kazu@codesourcery.com>
5444
5445 * cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos.
5446 Follow spelling conventions.
5447
5448 2005-09-05 Mark Mitchell <mark@codesourcery.com>
5449
5450 PR c++/23667
5451 * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INSTANTIATED when
5452 copying a VAR_DECL.
5453
5454 2005-09-05 Mark Mitchell <mark@codesourcery.com>
5455
5456 PR c++/21440
5457 * semantics.c (finish_stmt_expr_expr): Add an explicit
5458 initialization to the last statement in the statement-expression.
5459 * (finish_stmt_expr): Adjust accordingly.
5460
5461 2005-09-03 Mark Mitchell <mark@codesourcery.com>
5462
5463 PR c++/23699
5464 * decl2.c (mark_used): Always instantiate static data members
5465 initialized by constant expressions.
5466 * pt.c (instantiate_decl): Instantiate the initializers for static
5467 data members initialized by constant expressions.
5468
5469 PR c++/21687
5470 * semantics.c (expand_or_defer_fn): Do not call ggc_collect when
5471 finishing processing for a template function in a local class.
5472 Revert:
5473 2005-09-02 Mark Mitchell <mark@codesourcery.com>
5474 * parser.c (cp_parser_class_specifier): Push/pop GC contexts
5475 around functions in local classes.
5476
5477 2005-09-02 Mark Mitchell <mark@codesourcery.com>
5478
5479 PR c++/21687
5480 * parser.c (cp_parser_class_specifier): Push/pop GC contexts
5481 around functions in local classes.
5482
5483 2005-08-31 Andrew Pinski <pinskia@physics.uc.edu>
5484
5485 PR obj-c++/23640
5486 * decl2.c (cp_finish_file): If this is obj-c++ and we need a static
5487 init, call generate_ctor_or_dtor_function.
5488
5489 2005-08-31 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5490
5491 PR c++/13377
5492 * parser.c (cp_parser_lookup_name): Pass LOOKUP_COMPLAIN to
5493 lookup_name_real on final parse.
5494
5495 2005-08-31 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5496
5497 PR c++/23639
5498 * semantics.c (qualified_name_lookup_error): Do not complain again
5499 on invalid scope.
5500
5501 2005-08-30 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5502
5503 PR c++/23586
5504 * parser.c (cp_parser_namespace_name): Move diagnostic for
5505 invalid namespace-name to here from ...
5506 * name-lookup.c (do_namespace_alias): ... here and ...
5507 (do_using_directive): ... here. Remove dead code.
5508
5509 2005-08-28 Mark Mitchell <mark@codesourcery.com>
5510
5511 PR c++/23099
5512 * cp-tree.h (saved_scope): Add skip_evaluation.
5513 * decl.c (start_decl): Use DECL_INITIALIZED_IN_CLASS_P, not
5514 DECL_INITIAL, to determine whether or not a static data member was
5515 initialized in the class-specifier.
5516 (cp_finish_decl): Add comment.
5517 * init.c (integral_constant_value): Subtitute into the
5518 initializers for static data members in templates.
5519 * name-lookup.c (push_to_top_level): Save skip_evaluation.
5520 (pop_from_top_level): Restore it.
5521 * pt.c (instantiate_class_template): Do not substitute into the
5522 intializers of static data members when instantiating a class.
5523 (regenerate_decl_from_template): Simplify.
5524 (instantiate_decl): Tidy. Substitute into the initializer for a
5525 static data member even when the definition of the data member is
5526 not available.
5527
5528 2005-08-26 Mark Mitchell <mark@codesourcery.com>
5529
5530 PR c++/19004
5531 * pt.c (uses_template_parms): Handle IDENTIFIER_NODE.
5532 (type_dependent_expression_p): Allow BASELINKs whose associated
5533 functions are simply a FUNCTION_DECL.
5534
5535 PR c++/23491
5536 * cp-tree.h (build_vec_init): Adjust prototype.
5537 * init.c (perform_member_init): Adjust call to build_vec_init.
5538 (build_aggr_init): Likewise.
5539 (build_new_1): Do not call build_default_init for array types.
5540 (build_vec_init): Add explicit_default_init_p parameter. Perform
5541 default initialization of vector elements when set.
5542 * typeck.c (build_modify_expr): Adjust call to build_vec_init.
5543
5544 2005-08-25 Nathan Sidwell <nathan@codesourcery.com>
5545
5546 PR c++/20817
5547 * typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a
5548 ->*.
5549
5550 2005-08-24 Nathan Sidwell <nathan@codesourcery.com>
5551
5552 PR c++/22454
5553 * parser.c (cp_lexer_peek_nth_token): Relax assert.
5554
5555 2005-08-23 Nathan Sidwell <nathan@codesourcery.com>
5556
5557 PR c++/23044
5558 * pt.c (tsubst_qualified_id): A SCOPE_REF can still remain.
5559
5560 2005-08-22 James E Wilson <wilson@specifix.com>
5561
5562 PR tree-optimization/23426
5563 * decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE for
5564 array size check.
5565
5566 2005-08-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5567
5568 PR c++/22233
5569 * pt.c (push_template_decl_real): Return error_mark_node if the
5570 number of template parameters does not match previous definition.
5571
5572 2005-08-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5573
5574 PR c++/23089
5575 * decl.c (require_complete_types_for_parms): Mark incomplete types
5576 as invalid.
5577
5578 2005-08-19 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5579
5580 * parser.c (cp_parser_nth_token_starts_template_argument_list_p):
5581 Fix typo in leading comment.
5582
5583 2005-08-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5584
5585 * name-lookup.c, ptree.c: Delete HOST_PTR_PRINTF.
5586
5587 2005-08-15 Fariborz Jahanian <fjahanian@apple.com>
5588
5589 * cp-tree.h (can_convert_arg, fn_type_unification): New argument.
5590 * call.c (add_template_candidate_real): Pass down 'flags' to
5591 fn_type_unification.
5592 (can_convert_arg): New 'flags' argument. Pass it to call to
5593 implicit_conversion instead of LOOKUP_NORMAL.
5594 (can_convert): Add LOOKUP_NORMAL to call to can_convert_arg.
5595 * class.c (resolve_address_of_overloaded_function): Ditto.
5596 (resolve_address_of_overloaded_function): Ditto.
5597 * decl.c (reshape_init, check_default_argument): Ditto.
5598 * typeck.c (build_ptrmemfunc): Ditto.
5599 * pt.c (type_unification_real): Add 'flags' argument.
5600 (fn_type_unification): Pass 'flags' to type_unification_real.
5601 (type_unification_real): Pass new 'flags' argument to call to
5602 can_convert_arg.
5603
5604 2005-08-12 Giovanni Bajo <giovannibajo@libero.it>
5605 Nathan Sidwell <nathan@codesourcery.com>
5606
5607 PR c++/21799
5608 PR c++/8271
5609 * pt.c (unify) <METHOD_TYPE>: Check this-pointer cv-qualifiers
5610 explicitly.
5611
5612 2005-08-12 Nathan Sidwell <nathan@codesourcery.com>
5613
5614 PR c++/21799
5615 Revert my 2005-07-08 patch
5616 * pt.c (type_unification_real): Remove is_method_argument and
5617 assoicated checks.
5618 (fn_type_unification, unify): Adjust type_unification_real calls.
5619
5620 2005-08-11 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5621
5622 PR c++/23266
5623 * decl2.c (grokfield): Check that method is not static before
5624 marking it as pure.
5625
5626 2005-08-11 Nathan Sidwell <nathan@codesourcery.com>
5627
5628 PR c++/23219
5629 * name-lookup.c (pushtag): Process the template type before
5630 altering the identifier lookup fields. Remove unreachable code
5631 creating an empty stub decl.
5632
5633 2005-08-10 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5634
5635 PR c++/20646
5636 * decl.c (grokdeclarator): Reset storage_class after error.
5637
5638 2005-08-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5639
5640 PR c++/22508
5641 * init.c (build_new_1): Check for empty candidate list.
5642
5643 2005-08-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5644
5645 PR c++/23191
5646 * pt.c (tsubst) <case METHOD_TYPE>: Check for error_mark_node
5647 before calling build_exception_variant.
5648
5649 2005-08-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5650
5651 PR c++/19498
5652 * pt.c (tsubst_decl) <case TEMPLATE_DECL>: Return ERROR_MARK_NODE
5653 if substitution of template args did not succeed.
5654
5655 2005-08-06 Michael Matz <matz@suse.de>
5656
5657 * method.c (use_thunk): Call init_insn_lengths.
5658
5659 2005-08-05 James A. Morrison <phython@gcc.gnu.org>
5660
5661 PR c++/22514
5662 * name-lookup.c (cp_emit_debug_info_for_using): Do nothing if
5663 sorrycount or errorcount are nonzero.
5664
5665 2005-08-05 Mark Mitchell <mark@codesourcery.com>
5666
5667 * name-lookup.c (pushtag): Remove accidental commit from:
5668 2004-12-21 Mark Mitchell <mark@codesourcery.com>
5669 PR c++/19063
5670 * decl.c (grokdeclarator): Return error_mark_node, not
5671 void_type_node, to indicate errors.
5672 * parser.c (cp_parser_template_parameter_list): Robustify.
5673 (cp_parser_template_parameter): Likewise.
5674
5675 2005-08-01 Kazu Hirata <kazu@codesourcery.com>
5676
5677 * class.c, decl.c, name-lookup.c, pt.c, typeck.c, typeck2.c:
5678 Fix comment typos.
5679
5680 2005-07-29 Kazu Hirata <kazu@codesourcery.com>
5681
5682 * method.c: Fix a comment typo.
5683
5684 2005-07-28 Mark Mitchell <mark@codesourcery.com>
5685
5686 PR c++/22545
5687 * call.c (add_builtin_candidate): Adjust for changes in
5688 representation of pointer-to-member types.
5689
5690 2005-07-28 Mike Stump <mrs@apple.com>
5691
5692 * pt.c (check_explicit_specialization): Add visibility logic.
5693 (lookup_template_class): Likewise.
5694 (instantiate_class_template): Likewise.
5695
5696 2005-07-27 Devang Patel <dpatel@apple.com>
5697
5698 * name-lookup.c (pushtag): Do no set DECL_IGNORED_P bit.
5699
5700 2005-07-25 Ian Lance Taylor <ian@airs.com>
5701
5702 * ptree.c (cxx_print_identifier): Print a leading space if the
5703 indent level is 0.
5704
5705 2005-07-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5706
5707 * call.c (convert_for_arg_passing): Check function pointers when
5708 -Wmissing-format-attribute is activated.
5709 * typeck.c (convert_for_assignment): Likewise.
5710
5711 2005-07-22 Manfred Hollstein <mh@suse.com>
5712
5713 * parser.c (cp_parser_declaration): Fix unitialised warnings.
5714
5715 2005-07-21 Andrew Pinski <pinskia@physics.uc.edu>
5716
5717 * class.c (build_base_path): Fix typo.
5718
5719 2005-07-21 Andrew Pinski <pinskia@physics.uc.edu>
5720
5721 PR C++/22358
5722 * class.c (build_base_path): Convert BINFO_OFFSET to the correct type.
5723
5724 2005-07-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5725
5726 * call.c: Fix comment typo(s).
5727 * cxx-pretty-print.h: Likewise.
5728 * name-lookup.c: Likewise.
5729 * parser.c: Likewise.
5730
5731 2005-07-20 Douglas Gregor <doug.gregor@gmail.com>
5732
5733 PR c++/2922
5734 * semantics.c (perform_koenig_lookup): For dependent calls, just
5735 return the set of functions we've found so far. Later, it will be
5736 augmented by those found through argument-dependent lookup.
5737 * name-lookup.c (lookup_arg_dependent): Implement DR 164 by removing
5738 the optimization that skips namespaces where the functions were
5739 originally found.
5740
5741 2005-07-20 Giovanni Bajo <giovannibajo@libero.it>
5742
5743 Make CONSTRUCTOR use VEC to store initializers.
5744 * call.c (convert_default_arg): Update call to digest_init.
5745 * class.c (dump_class_hierarchy, dump_array): Update to cope with
5746 VEC in CONSTRUCTOR_ELTS.
5747 * cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise.
5748 (finish_compound_literal, digest_init): Update declaration.
5749 * decl.c (struct reshape_iter): New data type.
5750 (reshape_init_array): Rename to...
5751 (reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS.
5752 (reshape_init): Rewrite from scratch. Split parts into...
5753 (reshape_init_array, reshape_init_vector, reshape_init_class,
5754 reshape_init_r): New functions.
5755 (check_initializer): Update call to reshape_init. Remove obsolete
5756 code.
5757 (initialize_artificial_var, cp_complete_array_type): Update to cope
5758 with VEC in CONSTRUCTOR_ELTS.
5759 * decl2.c (grokfield): Update calls to digest_init.
5760 (mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS.
5761 * error.c (dump_expr_init_vec): New function.
5762 (dump_expr): Use dump_expr_init_vec.
5763 * init.c (build_zero_init, build_vec_init): Update to cope with VEC
5764 in CONSTRUCTOR_ELTS.
5765 (expand_default_init): Update call to digest_init.
5766 * parser.c (cp_parser_postfix_expression): Use a VEC for the
5767 initializers.
5768 (cp_parser_initializer_list): Build a VEC of initializers.
5769 * pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
5770 in CONSTRUCTOR_ELTS.
5771 * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer,
5772 ptm_initializer, class_initializer, get_pseudo_ti_init): Use
5773 build_constructor_from_list instead of build_constructor.
5774 * semantics.c (finish_compound_literal): Update call to digest_init.
5775 * tree.c (stabilize_init): Update to cope with VEC in
5776 CONSTRUCTOR_ELTS.
5777 * typeck.c (build_ptrmemfunc1): Likewise.
5778 * typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
5779 Likewise.
5780 (store_init_value): Use build_constructor_from_list and update call
5781 to digest_init.
5782 (digest_init): Rewrite.
5783 (process_init_constructor): Rewrite from scratch. Split into...
5784 (process_init_constructor_array, picflag_from_initializer,
5785 process_init_constructor_record, process_init_constructor_union):
5786 New functions.
5787 (PICFLAG_ERRONEOUS, PICFLAG_NOT_ALL_CONSTANT, PICFLAG_NOT_ALL_SIMPLE):
5788 New macros.
5789 (build_functional_cast): Use build_constructor_from_list instead of
5790 build_constructor.
5791
5792 2005-07-18 Mark Mitchell <mark@codesourcery.com>
5793
5794 PR c++/22263
5795 * cp-tree.h (instantiate_decl): Change prototype.
5796 * decl2.c (mark_used): Adjust accordingly.
5797 * pt.c (do_decl_instantiation): Likewise.
5798 (instantiate_class_member): Likewise.
5799 (instantiate_decl): Rename undefined_ok as expl_inst_class_mem_p.
5800 Clear DECL_INTERFACE_KNOWN for an explicitly instantiated template
5801 that has no definition available.
5802 (instantiate_pending_templates): Adjust call to instantiate_decl.
5803
5804 2005-07-17 Mark Mitchell <mark@codesourcery.com>
5805
5806 PR c++/22139
5807 * cp-tree.h (DECL_TEMPLATE_INFO): Improve documentation.
5808 * decl.c (duplicate_decls): Re-register template specializations
5809 for functions that have DECL_TEMLPLATE_INFO, even if they do not
5810 have DECL_TEMPLATE_INSTANTIATION set.
5811
5812 2005-07-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5813
5814 * call.c (diagnostic_fn_t): New.
5815 (build_temp, convert_like_real): Use diagnostic_fn_t.
5816
5817 2005-07-15 Mark Mitchell <mark@codesourcery.com>
5818
5819 PR c++/22204
5820 * repo.c (repo_emit_p): Robustify.
5821
5822 2005-07-14 Daniel Berlin <dberlin@dberlin.org>
5823
5824 Fix PR c++/22452
5825 * tree.c (decl_linkage): Don't check DECL_COMDAT on CONST_DECL.
5826
5827 2005-07-15 Mark Mitchell <mark@codesourcery.com>
5828
5829 PR c++/22132
5830 * call.c (implicit_conversion): Add c_cast_p parameter.
5831 (standard_conversion): Likewise. Allow conversions between
5832 differently-qualified pointer types when performing a C-style
5833 cast.
5834 (add_function_candidate): Adjust callee.
5835 (build_builtin_candidate): Likewise.
5836 (build_user_type_conversion_1): Likewise.
5837 (conditional_conversion): Likewise.
5838 (can_convert_arg): Likewise.
5839 (can_convert_arg_bad): Likewise.
5840 (perform_implicit_conversion): Likewise.
5841 * cp-tree.h (comp_ptr_ttypes_const): Declare.
5842 * typeck.c (comp_ptr_ttypes_const): Give it external linkage.
5843 Return bool.
5844
5845 2005-07-12 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
5846 Nathan Sidwell <nathan@codesourcery.com>
5847
5848 PR c++/20172
5849 * pt.c (tsubst_template_parms): Check for invalid non-type
5850 parameters.
5851
5852 2005-07-09 Andrew Pinski <pinskia@physics.uc.edu>
5853
5854 * cp-lang.c (shadowed_var_for_decl, decl_shadowed_for_var_lookup,
5855 decl_shadowed_for_var_insert): Move over to cp-objcp-common.c.
5856 (cp_init_ts): Call init_shadowed_var_for_decl.
5857 Remove include of gt-cp-cp-lang.h.
5858 * cp-objcp-common.c (shadowed_var_for_decl,
5859 decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Moved from
5860 cp-lang.c.
5861 (init_shadowed_var_for_decl): New function to initialize
5862 shadowed_var_for_decl.
5863 Include gt-cp-cp-objcp-common.h.
5864 * Make-lang.in (gt-cp-lang.h): Remove.
5865 (gt-cp-cp-objcp-common.h): Add.
5866 (cp/cp-lang.o): Remove dependancy on gt-cp-lang.h.
5867 (cp/cp-objcp-common.o): Add dependancy on gt-cp-cp-objcp-common.h.
5868 * config-lang.in (gtfiles): Remove cp-lang.c and Add cp-objcp-common.c.
5869 * cp-tree (init_shadowed_var_for_decl): Add prototype.
5870
5871 2005-07-08 Daniel Berlin <dberlin@dberlin.org>
5872
5873 * Make-lang.in: Add gt-cp-lang.h.
5874 (cp-lang.o): Ditto.
5875 * class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on
5876 the field.
5877 * config-lang.in: Add cp-lang.c to gtfiles.
5878 * cp-lang.c: Include hashtab.h.
5879 (cp_init_ts): New function.
5880 (LANG_HOOK_INIT_TS): Use macro.
5881 (decl_shadowed_for_var_lookup): New function.
5882 (decl_shadowed_for_var_insert): Ditto.
5883 * cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common.
5884 (NON_THUNK_FUNCTION_CHECK): Ditto.
5885 (DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common.
5886 (DECL_INIT_PRIORITY): Ditto.
5887 (DECL_HAS_SHADOWED_FOR_VAR_P): Ditto.
5888 (DECL_SHADOWED_FOR_VAR): Use hashtable.
5889 (SET_DECL_SHADOWED_FOR_VAR): Ditto.
5890 * decl.c (duplicate_decls): Update for new/updated structures.
5891 (poplevel): Use SET_DECL_SHADOWED_FOR_VAR.
5892 * decl2.c (start_static_initialization_or_destruction): Deal with
5893 priority.
5894 * pt.c (tsubst_decl): Check TS_DECL_WRTL before doing
5895 SET_DECL_RTL.
5896 * tree.c (handle_init_priority_attribute): Handle priority.
5897
5898 2005-07-08 Nathan Sidwell <nathan@codesourcery.com>
5899
5900 PR c++/21799
5901 * pt.c (type_unification_real): Add is_method argument. Use it
5902 for this pointer unification.
5903 (fn_type_unification): Adjust type_unification_real call.
5904 (unify): Likewise.
5905
5906 2005-07-07 Nathan Sidwell <nathan@codesourcery.com>
5907
5908 * pt.c (type_unification_real): Remove allow_incomplete argument.
5909 Remove unreachable code.
5910 (fn_type_unification): Adjust call to type_unification_real.
5911 (unify): Likewise.
5912
5913 2005-07-05 Paolo Bonzini <bonzini@gnu.org>
5914
5915 * Makefile.in (class.o, decl2.o): Adjust dependencies.
5916 * class.c: Include tree-dump.h.
5917 * decl2.c: Include tree-dump.h.
5918
5919 2005-07-02 Gabriel Dos Reis <gdr@integrable-solutions.net>
5920
5921 * dump.c: Use dump_string_field.
5922
5923 2005-07-03 Joseph S. Myers <joseph@codesourcery.com>
5924
5925 * cp-tree.h (GCC_DIAG_STYLE): #undef before defining. Change
5926 minimum GCC version for format checking to 4.1.
5927
5928 2005-07-02 Kazu Hirata <kazu@codesourcery.com>
5929
5930 * Make-lang.in (cc1plus-checksum.c): Use
5931 build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
5932
5933 2005-07-02 Joseph S. Myers <joseph@codesourcery.com>
5934
5935 * name-lookup.c, parser.c: Use %q, %< and %> to quote in
5936 diagnostics.
5937
5938 2005-07-02 Zack Weinberg <zack@codesourcery.com>
5939 Joseph S. Myers <joseph@codesourcery.com>
5940
5941 * error.c (location_of): Add comment.
5942 (locate_error, cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
5943 * cp-tree.h (cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
5944 * call.c, class.c, decl.c, decl2.c, friend.c, init.c,
5945 name-lookup.c, parser.c, pt.c, search.c, semantics.c, typeck.c,
5946 typeck2.c: Use '+' flag instead of %J, cp_error_at, cp_warning_at
5947 or cp_pedwarn_at. Mark up some diagnostic strings with N_.
5948
5949 2005-06-30 Daniel Berlin <dberlin@dberlin.org>
5950
5951 * decl.c (require_complete_types_for_parms): Call relayout_decl
5952 instead of layout_decl.
5953
5954 2005-06-30 Zack Weinberg <zack@codesourcery.com>
5955 Jakub Jelinek <jakub@redhat.com>
5956
5957 * cp-lang.c: No need to include cxx-pretty-print.h.
5958 * error.c (cp_printer): Update signature. No need to process
5959 flags.
5960 (print_instantiation_partial_context): Output last newline
5961 with pp_base_newline.
5962 * Make-lang.in: Update dependencies.
5963
5964 2005-06-30 Steven Bosscher <stevenb@suse.de>
5965
5966 * decl.c (start_decl): Replace DECL_THREAD_LOCAL with
5967 DECL_THREAD_LOCAL_P.
5968 (cp_finish_decl): Likewise.
5969 (grokvardecl): Set the default DECL_TLS_MODEL here.
5970
5971 2005-06-28 Joseph S. Myers <joseph@codesourcery.com>
5972
5973 * cvt.c (ocp_convert): Use invalid_conversion hook.
5974 * typeck.c (build_binary_op): Use invalid_binary_op hook.
5975 (build_unary_op): Use invalid_unary_op hook.
5976
5977 2005-06-28 Paul Brook <paul@codesourcery.com>
5978
5979 * Make-lang.in (cp/except.o): Depend on $(TARGET_H)
5980 * except.c: Include target.h.
5981 (init_exception_processing): Initialize unwind_resume_libfunc.
5982 * doc/tm.texi: Document TARGET_ASM_TTYPE
5983
5984 2005-06-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5985
5986 * call.c (build_over_call): Pass in named argument list to
5987 `check_function_arguments'.
5988 * typeck.c (build_function_call): Likewise.
5989
5990 2005-06-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5991
5992 * cp-tree.h (lang_check_failed): Add noreturn attribute.
5993
5994 2005-06-25 Kelley Cook <kcook@gcc.gnu.org>
5995
5996 * all files: Update FSF address in copyright headers.
5997
5998 2005-06-23 Jason Merrill <jason@redhat.com>
5999
6000 PR c++/19317
6001 * semantics.c (simplify_aggr_init_expr): Use
6002 CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR.
6003
6004 2005-06-23 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
6005
6006 * pt.c (register_specialization): Remove superfluous assertion.
6007
6008 2005-06-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
6009
6010 * call.c (convert_like_real): Add format attribute.
6011 * typeck.c (check_for_casting_away_constness,
6012 build_static_cast_1): Likewise.
6013 * typeck2.c (readonly_error, cxx_incomplete_type_diagnostic):
6014 Likewise.
6015
6016 2005-06-17 Geoffrey Keating <geoffk@apple.com>
6017
6018 PR c++/17413
6019 * pt.c (type_unification_real): Apply template type deduction even
6020 to procedure parameters that are not dependent on a template
6021 parameter.
6022
6023 2005-06-16 Nathan Sidwell <nathan@codesourcery.com>
6024
6025 * rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might
6026 change.
6027 (create_pseudo_type_info): First parameter is an int.
6028
6029 2005-06-15 Nathan Sidwell <nathan@codesourcery.com>
6030
6031 PR c++/20678
6032 * error.c (dump_expr) <COMPONENT_REF case>: Check DECL_NAME is not
6033 null.
6034
6035 * Make-lang.in: Reformat some long lines.
6036 (gt-cp-rtti.h): New target.
6037 (cp/rtti.o): Add dependency.
6038 * config-lang.in (gtfiles): Add cp/rtti.c.
6039 * cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
6040 CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
6041 CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
6042 CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
6043 CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
6044 (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
6045 ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
6046 class_desc_type_node, si_class_desc_type_node,
6047 vmi_class_desc_type_node, ptm_desc_type_node,
6048 base_desc_type_node): Remove.
6049 * decl.c: Adjust documentation of global trees.
6050 * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
6051 TINFO_REAL_NAME): Remove.
6052 (struct tinfo_s): New.
6053 (enum tinfo_kind): New.
6054 (tinfo_descs): New.
6055 (get_tinfo_decl): Adjust use of tinfo descriptor.
6056 (tinfo_base_init, generic_initializer, ptr_initializer,
6057 ptm_initializer, class_initializer): Likewise.
6058 (get_pseudo_ti_init): Take descriptor index. Adjust.
6059 (create_pseudo_type_info): Likewise.
6060 (get_pseudo_ti_desc): Return descriptor index. Adjust.
6061 (create_tinfo_types): Adjust use of create_pseudo_type_info.
6062 (emit_tinfo_decl): Adjust use of tinfo descriptor.
6063
6064 2005-06-14 Roger Sayle <roger@eyesopen.com>
6065
6066 * decl.c (grokdeclarator): Only check TREE_OVERFLOW on INTEGER_CST.
6067
6068 2005-06-13 Geoffrey Keating <geoffk@apple.com>
6069
6070 * Make-lang.in (c++.install-man): Doesn't really depend on installdirs.
6071 (rule for installing g++.1 manpage): Does depend on installdirs.
6072
6073 2005-06-13 Nathan Sidwell <nathan@codesourcery.com>
6074
6075 PR c++/20789
6076 * decl.c (cp_finish_decl): Clear runtime runtime initialization if
6077 in-class decl's initializer is bad.
6078
6079 PR c++/21929
6080 * parser.c (struct cp_parser): Document that scope could be
6081 error_mark.
6082 (cp_parser_diagnose_invalid_type_name): Cope with error_mark for
6083 scope.
6084 (cp_parser_nested_name_specifier): Return NULL_TREE on error.
6085 (cp_parser_postfix_expression): Deal with null or error_mark
6086 scope.
6087 (cp_parser_elaborated_type_specifier): Adjust
6088 cp_parser_nested_name_specifier call.
6089
6090 * parser (cp_parser_skip_to_end_of_block_or_statement): Cleanup.
6091
6092 2005-06-12 Roger Sayle <roger@eyesopen.com>
6093
6094 PR c++/21930
6095 * error.c (dump_expr): UNARY_PLUS_EXPR need not handle void types.
6096 Treat CONVERT_EXPR identically to NOP_EXPR.
6097
6098 2005-06-10 Aldy Hernandez <aldyh@redhat.com>
6099
6100 PR c++/10611
6101 * cvt.c (build_expr_type_conversion): Same.
6102 * typeck.c (build_binary_op): Handle vectors.
6103 (common_type): Same.
6104 (type_after_usual_arithmetic_conversions): Same.
6105
6106 2005-06-08 Nathan Sidwell <nathan@codesourcery.com>
6107
6108 PR c++/19497
6109 * cp-tree.def (USING_DECL): Update documentation.
6110 * cp-tree.h (DECL_DEPENDENT_P): New.
6111 (USING_DECL_DECLS, USING_DECL_SCOPE): New.
6112 * class.c (handle_using_decl): Move most of the processing to ...
6113 * name-lookup.c (do_class_using_decl): ... here. Make stricter.
6114 (push_using_decl): Use USING_DECL_SCOPE.
6115 (cp_emit_debug_info_for_using): Make extern.
6116 * cxx-pretty-print.c (pp_cxx_statement) <USING_DECL case>: Adjust.
6117 * name-lookup.h (cp_emit_debug_info_for_using): Declare.
6118 * pt.c (tsubst_decl) <USING_DECL case>: Use do_class_using_decl
6119 when tsubsting.
6120 (tsubst_expr): Use USING_DECL_SCOPE.
6121 * search.c (lookup_field_1): Use DECL_DEPENDENT_P.
6122 * semantics.c (finish_member_declaration): Likewise.
6123
6124 2005-06-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
6125
6126 PR c++/19894
6127 * pt.c (tsubst): Reject pointer-to-member of type void.
6128
6129 PR c++/20563
6130 * parser.c (cp_parser_label_declaration): Deal with invalid/missing
6131 identifiers.
6132
6133 2005-06-07 Nathan Sidwell <nathan@codesourcery.com>
6134
6135 * cp-tree.def (DEFAULT_ARG): Adjust documentation.
6136 * cp-tree.h (DEFARG_INSTANTIATIONS): New.
6137 (struct tree_default_arg): Add instantiations member.
6138 * parser.c (cp_parser_late_parsing_default_args): Adjust to use a
6139 VEC.
6140 * pt.c (tsubst_arg_types): Likewise.
6141
6142 * parser.c (cp_parser_late_parsing_default_args): Fix overeager
6143 assert in previous patch.
6144
6145 2005-06-06 Jakub Jelinek <jakub@redhat.com>
6146
6147 * error.c (locate_error): Use gmsgid instead of msgid for argument
6148 name.
6149 (cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise.
6150
6151 2005-06-06 Nathan Sidwell <nathan@codesourcery.com>
6152
6153 PR 21903
6154 * cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use.
6155 * parser.c (cp_parser_late_parsing_default_args): Propagate parsed
6156 argument to any early instantiations.
6157 * pt.c (tsubst_arg_types): Chain early instantiation of default arg.
6158
6159 PR c++/20637
6160 * cp-tree.h (add_method): Add using_decl parameter.
6161 * class.c (add_method): Add using_decl parameter. Adjust error
6162 messages.
6163 (handle_using_decl): Pass the using decl to add_method.
6164 (clone_function_decl): Adjust add_member calls.
6165 * decl2.c (check_classfn): Likewise.
6166 * method.c (lazily_declare_fn): Likewise.
6167 * semantics.c (finish_member_declaration): Likewise.
6168
6169 * method.c (synthesize_method): Use inform, not warning.
6170
6171 2005-06-06 Hans-Peter Nilsson <hp@axis.se>
6172
6173 * config-lang.in (target_libs): Remove target-gperf.
6174
6175 2005-06-05 Mark Mitchell <mark@codesourcery.com>
6176
6177 PR c++/21619
6178 * cp-tree.h (DECL_IS_BUILTIN_CONSTANT_P): New macro.
6179 * parser.c (cp_parser_postfix_expression): Allow non-constant
6180 expressions as arguments to __builtin_constant_p.
6181 * tree.c (builtin_valid_in_constant_expr_p): Use
6182 DECL_IS_BUILTIN_CONSTANT_P.
6183
6184 2005-06-03 Mark Mitchell <mark@codesourcery.com>
6185
6186 PR c++/21853
6187 * typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on
6188 the pointed-to type for a pointer-to-member.
6189
6190 PR c++/21336
6191 * cp-tree.h (grok_op_properties): Remove friendp parameter.
6192 * decl.c (grokfndecl): Adjust call.
6193 (grok_op_properties): Determine the class of which the function is
6194 a member by looking at its DECL_CONTEXT, not current_class_type.
6195 * pt.c (tsubst_decl): Adjust call to grok_op_properties.
6196
6197 2005-06-02 Nathan Sidwell <nathan@codesourcery.com>
6198
6199 * method.c (synthesize_method): Add addtional arg to warning call.
6200
6201 PR c++/21280
6202 * Make-lang.in (method.o): Add diagnostic.h
6203 * decl.c (start_preparsed_function): Use decl's location for file
6204 info.
6205 * decl2.c (cp_finish_file): Set input_location before synthesizing
6206 a function.
6207 (mark_used): When deferring a synthesized function, save current
6208 location. Do not set function's location when actually
6209 synthesizing it.
6210 * method.c: #include diagnostic.h.
6211 (synthesize_method): Set the functions source location. Show
6212 needed location if errors are emitted.
6213
6214 * decl.c (start_decl): Simplify specialization handling. Remove
6215 unneeded CLASSTYPE_TEMPLATE_INSTANTIATION check.
6216 * mangle.c (discriminator_for_local_entity): Use VEC_index.
6217
6218 PR c++/20350
6219 * decl.c (duplicate_decls): Copy all of DECL_USE_TEMPLATE.
6220
6221 PR c++/21151
6222 * name-lookup.c (pushtag): Push local class even in a template.
6223
6224 2005-05-31 Nathan Sidwell <nathan@codesourcery.com>
6225
6226 PR c++/21165
6227 * init.c (integral_constant_value): Check the type of the
6228 initializer, not the decl.
6229
6230 2005-05-30 Mark Mitchell <mark@codesourcery.com>
6231
6232 PR c++/21784
6233 * name-lookup.c (do_nonmember_using_decl): Ignore builtin
6234 functions, even when the used name is not a function.
6235
6236 2005-05-30 Kazu Hirata <kazu@cs.umass.edu>
6237
6238 * operators.def, optimize.c: Update copyright.
6239
6240 2005-05-28 Mark Mitchell <mark@codesourcery.com>
6241
6242 PR c++/21210
6243 * call.c (standard_conversion): Permit conversions to complex
6244 types if conversion to the corresponding scalar type would be
6245 permitted.
6246
6247 PR c++/21340
6248 * method.c (implicitly_declare_fn): Clear processing_template_decl
6249 when generating implicit declaration.
6250
6251 2005-05-27 Mark Mitchell <mark@codesourcery.com>
6252
6253 PR c++/21614
6254 * typeck.c (get_member_function_from_ptrfunc): Do not attempt
6255 conversions to base classes of incomplete types.
6256
6257 2005-05-27 Ian Lance Taylor <ian@airs.com>
6258
6259 * semantics.c (add_stmt): Add C++ frontend specific version.
6260 * cp-tree.h (STMT_IS_FULL_EXPR_P): Define.
6261 (stmts_are_full_exprs_p): Declare.
6262
6263 2005-05-27 Roger Sayle <roger@eyesopen.com>
6264 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6265
6266 * cp-tree.def (UNARY_PLUS_EXPR): New C++ unary tree code.
6267 * parser.c (cp_parser_unary_expression): Use UNARY_PLUS_EXPR instead
6268 of CONVERT_EXPR.
6269 (cp_parser_unary_expression): Likewise.
6270 * typeck.c (build_unary_op): Likewise.
6271 * call.c (add_builtin_candidate, build_new_op): Likewise.
6272 * error.c (dump_expr): Likewise.
6273 * pt.c (tsubst_copy, tsubst_copy_and_build): Likewise.
6274 * decl.c (ambi_op_p, grok_op_properties): Likewise.
6275 * dump.c (dump_op): Likewise.
6276 * lex.c (init_operators): Likewise.
6277 * operators.def ("+"): Likewise.
6278 * cp-gimplify.c (cp_gimplify_expr): Handle UNARY_PLUS_EXPR like a
6279 conversion, if the result and argument types differ.
6280 * tree.c (fold_if_not_in_template): Fold UNARY_PLUS_EXPR much
6281 like a NOP_EXPR when !processing_template_decl.
6282
6283 * cxx-pretty-print.c (pp_cxx_cast_expression): Prototype.
6284 (pp_cxx_unary_expression): Handle new UNARY_PLUS_EXPR tree code.
6285
6286 2005-05-27 Nathan Sidwell <nathan@codesourcery.com>
6287
6288 PR c++/21455
6289 * typeck.c (get_delta_difference): Cope with incomplete but equal
6290 classes. Reorder if.
6291
6292 PR c++/21681
6293 * parser.c (cp_parser_late_parsing_for_member): Disable access
6294 checking for template functions.
6295
6296 2005-05-26 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
6297
6298 PR c++/21768
6299 * pt.c (redeclare_class_template): Change error message according
6300 to coding conventions.
6301
6302 2005-05-26 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
6303
6304 * call.c (build_op_delete_call): Fix quoting in error message.
6305
6306 2005-05-25 Richard Henderson <rth@redhat.com>
6307
6308 PR libgcj/21692
6309 * cp-tree.h (make_alias_for): Declare.
6310 * decl2.c (build_java_method_aliases): New.
6311 (cp_finish_file): Call it.
6312 * method.c (make_alias_for): Split out from ...
6313 (make_alias_for_thunk): ... here.
6314
6315 2005-05-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
6316
6317 PR c++/21686
6318 * semantics.c (finish_id_expression): Fix quoting in error message.
6319
6320 2005-05-25 DJ Delorie <dj@redhat.com>
6321
6322 * decl.c (duplicate_decls): Move warning control from if() to
6323 warning(OPT_*).
6324 * name-lookup.c (parse_using_directive): Likewise.
6325 * parser.c (cp_parser_elaborated_type_specifier): Likewise.
6326 (cp_parser_init_declarator): Likewise.
6327 * tree.c (handle_com_interface_attribute): Likewise.
6328
6329 2005-05-24 Ziemowit Laski <zlaski@apple.com>
6330
6331 * class.c (layout_class_type): Do not issue C++ ABI warnings
6332 for ObjC structs.
6333 * decl.c (objc_mark_locals_volatile): Streamline by calling
6334 objc_volatilize_decl().
6335 * parser.c (cp_parser_objc_message_expression): Allow simple
6336 type specifiers (instead of merely type names) as message
6337 receivers.
6338 * pt.c (template_args_equal): Do not call objc_comptypes().
6339 * typeck.c (composite_pointer_type): If both pointers are
6340 ObjC-esque, arbitrarily choose the first; do not call
6341 objc_comptypes().
6342 (comptypes): Do not call objc_comptypes().
6343 (convert_for_assignment): Call objc_compare_types().
6344 (comp_ptr_ttypes_real): Call objc_type_quals_match() before
6345 concluding that types do not match.
6346
6347 2005-05-24 Andrew Pinski <pinskia@physics.uc.edu>
6348
6349 PR C++/21645
6350 * optimize.c (update_cloned_parm): Copy the TYPE also from the
6351 original one.
6352
6353 2005-05-19 Jakub Jelinek <jakub@redhat.com>
6354
6355 PR c++/21495
6356 * decl.c (grokdeclarator): Fix "storage class specified for"
6357 error reporting.
6358
6359 2005-05-19 Kazu Hirata <kazu@cs.umass.edu>
6360
6361 * parser.c: Fix comment typos.
6362
6363 2005-05-18 Geoffrey Keating <geoffk@apple.com>
6364
6365 * Make-lang.in (cc1plus-dummy): New.
6366 (cc1plus-checksum.c): New.
6367 (cc1plus-checksum.o): New.
6368 (cc1plus): Add cc1plus-checksum.o.
6369
6370 2005-05-17 H.J. Lu <hongjiu.lu@intel.com>
6371
6372 PR C++/19664
6373 * decl2.c (determine_visibility): Don't set visibility to
6374 hidden if it has been set explicitly by user.
6375
6376 2005-05-17 Ziemowit Laski <zlaski@apple.com>
6377 Mike Stump <mrs@apple.com>
6378
6379 Yet more Objective-C++...
6380
6381 * cp-objcp-common.h (cxx_get_alias_set): Move from
6382 here...
6383 (cxx_warn_unused_global_decl): Likewise.
6384 (cp_expr_size): Likewise.
6385 (cp_tree_size): Likewise.
6386 (cp_var_mod_type_p): Likewise.
6387 (cxx_initialize_diagnostics): Likewise.
6388 (cxx_types_compatible_p): Likewise.
6389 * cp-tree.h: to here.
6390 (do_poplevel): Add.
6391 * lex.c (D_OBJC): Add.
6392 (init_reswords): Add.
6393 * Make-lang.in (cp/pt.o): Add cp/cp-objcp-common.h.
6394 * parser.c: Add c-common.h include.
6395 * pt.c: Add c-common.h and cp-objcp-common.h includes.
6396 (template_args_equal): Use objc_comptypes as well.
6397 (tsubst_copy_and_build): Use objcp_tsubst_copy_and_build as well.
6398 * semantics.c (do_poplevel): Remove static.
6399
6400 * decl.c (objc_mark_locals_volatile): Don't change decls that are
6401 already ok.
6402 * decl2.c (generate_ctor_or_dtor_function): Add code to initialize
6403 Objective C++ early enough.
6404 * lex.c (struct resword reswords): Add Objective-C++ support.
6405 * parser.c (cp_lexer_get_preprocessor_token): Add Objective-C++.
6406 (cp_parser_objc_message_receiver): Add.
6407 (cp_parser_objc_message_args): Likewise.
6408 (cp_parser_objc_message_expression): Likewise.
6409 (cp_parser_objc_encode_expression): Likewise.
6410 (cp_parser_objc_defs_expression): Likewise.
6411 (cp_parser_objc_protocol_expression): Likewise.
6412 (cp_parser_objc_selector_expression): Likewise.
6413 (cp_parser_objc_expression): Likewise.
6414 (cp_parser_objc_visibility_spec): Likewise.
6415 (cp_parser_objc_method_type): Likewise.
6416 (cp_parser_objc_protocol_qualifiers): Likewise.
6417 (cp_parser_objc_typename): Likewise.
6418 (cp_parser_objc_selector_p): Likewise.
6419 (cp_parser_objc_selector): Likewise.
6420 (cp_parser_objc_method_keyword_params): Likewise.
6421 (cp_parser_objc_method_tail_params_opt): Likewise.
6422 (cp_parser_objc_interstitial_code): Likewise.
6423 (cp_parser_objc_method_signature): Likewise.
6424 (cp_parser_objc_method_prototype_list): Likewise.
6425 (cp_parser_objc_method_definition_list): Likewise.
6426 (cp_parser_objc_class_ivars): Likewise.
6427 (cp_parser_objc_identifier_list): Likewise.
6428 (cp_parser_objc_alias_declaration): Likewise.
6429 (cp_parser_objc_class_declaration): Likewise.
6430 (cp_parser_objc_protocol_declaration): Likewise.
6431 (cp_parser_objc_protocol_refs_opt): Likewise.
6432 (cp_parser_objc_superclass_or_category): Likewise.
6433 (cp_parser_objc_class_interface): Likewise.
6434 (cp_parser_objc_class_implementation): Likewise.
6435 (cp_parser_objc_end_implementation): Likewise.
6436 (cp_parser_objc_declaration): Likewise.
6437 (cp_parser_objc_try_catch_finally_statement): Likewise.
6438 (cp_parser_objc_synchronized_statement): Likewise.
6439 (cp_parser_objc_throw_statement): Likewise.
6440 (cp_parser_objc_statement): Likewise.
6441 (cp_parser_primary_expression): Add Objective-C++.
6442 (cp_parser_statement): Likewise.
6443 (cp_parser_declaration): Likewise.
6444 (cp_parser_simple_type_specifier): Likewise.
6445 (cp_parser_type_name): Likewise.
6446 (cp_parser_parameter_declaration_list): Likewise.
6447 (cp_parser_member_declaration) Likewise.
6448 * tree.c: Include debug.h.
6449 * typeck.c (composite_pointer_type): Add Objective-C++ support.
6450 (finish_class_member_access_expr): Likewise.
6451 (build_function_call): Allow objc to rewrite FUNCTION_DECLs.
6452 (build_modify_expr): Allow objc to generate write barriers.
6453
6454 * Make-lang.in (cp/tree.o): Add debug.h.
6455 * tree.c (lvalue_p_1, case CONST_DECL): Add.
6456
6457 2005-05-18 Jan Hubicka <jh@suse.cz>
6458
6459 * method.c: Include tree-pass.h
6460 (use_thunk): Lower body before expanding.
6461
6462 2005-05-17 Jakub Jelinek <jakub@redhat.com>
6463
6464 PR c++/21454
6465 * decl.c (maybe_deduce_size_from_array_init): Call
6466 cp_apply_type_quals_to_decl after completing array type.
6467
6468 2005-05-16 Richard Henderson <rth@redhat.com>
6469
6470 * decl.c (build_library_fn_1): Move setting TREE_NOTHROW ...
6471 (build_library_fn): ... here.
6472
6473 2005-05-12 Ian Lance Taylor <ian@airs.com>
6474
6475 * cp-tree.h (cp_stmt_codes): Don't define.
6476 (statement_code_p): Declare.
6477 (STATEMENT_CODE_P): Define.
6478 * lex.c (statement_code_p): Define.
6479 (cxx_init): Use actual codes in stmt_codes initializer, not
6480 cp_stmt_codes macro. Initialize statement_code_p directly, rather
6481 than using INIT_STATEMENT_CODES.
6482
6483 2005-05-09 Mark Mitchell <mark@codesourcery.com>
6484
6485 * typeck.c (build_unary_op): Do not resort to address arithmetic
6486 when taking the address of a COMPONENT_REF.
6487
6488 2005-05-08 Kazu Hirata <kazu@cs.umass.edu>
6489
6490 * class.c (vtbl_init_data_s): Change the type of fns to
6491 VEC(tree,gc)*.
6492 (build_vtbl_initializer, add_vcall_offset, add_vcall_offset):
6493 Use VEC instead of VARRAY.
6494
6495 2005-05-07 Richard Sandiford <rsandifo@redhat.com>
6496
6497 * mangle.c: Remove a reference to the MIPS -mint64 option.
6498
6499 2005-05-07 Kazu Hirata <kazu@cs.umass.edu>
6500
6501 * decl.c (wrapup_globals_for_namespace): Use VEC instead of
6502 VARRAY.
6503 * name-lookup.c (add_decl_to_level, begin_scope): Likewise.
6504 * name-lookup.h (cp_binding_level): Change the type of
6505 static_decls to VEC(tree,gc)*.
6506
6507 * mangle.c (globals): Change the type of substitutions to
6508 VEC(tree,gc)*.
6509 (dump_substitution_candidates, add_substitution,
6510 find_substitution, finish_mangling, init_mangle): Use VEC
6511 instead of VARRAY.
6512
6513 2005-05-06 Kazu Hirata <kazu@cs.umass.edu>
6514
6515 * decl2.c (spew_debug): Remove.
6516
6517 * decl2.c (ssdf_decls, start_static_storage_duration_function,
6518 generate_ctor_or_dtor_function): Use VEC instead of VARRAY.
6519
6520 * decl2.c (pending_statics, note_vague_linkage_var,
6521 cp_finish_file): Use VEC instead of VARRAY.
6522 (pending_statics_used): Remove.
6523
6524 2005-05-05 Kazu Hirata <kazu@cs.umass.edu>
6525
6526 * decl2.c (deferred_fns, note_vague_linkage_fn,
6527 cp_finish_file): Use VEC instead of VARRAY.
6528
6529 2005-05-05 Mark Mitchell <mark@codesourcery.com>
6530
6531 PR c++/21352
6532 * pt.c (build_non_dependent_expr): Use is_overloaded_fn.
6533
6534 2005-05-05 Kazu Hirata <kazu@cs.umass.edu>
6535
6536 * pt.c: Fix a comment typo.
6537
6538 2005-05-04 Kazu Hirata <kazu@cs.umass.edu>
6539
6540 * cp-tree.h (language_function): Change the type of
6541 x_local_names to VEC.
6542 * decl.c (push_local_name): Adjust uses of local_names.
6543
6544 2005-05-03 Kazu Hirata <kazu@cs.umass.edu>
6545
6546 * friend.c, lex.c, mangle.c, repo.c: Update copyright.
6547
6548 2005-05-02 Kazu Hirata <kazu@cs.umass.edu>
6549
6550 * class.c (local_classes, init_class_processing): Use VEC
6551 instead of VARRAY.
6552 * cp-tree.h (local_classes): Likewise.
6553 * mangle.c (discriminator_for_local_entity): Likewise.
6554 * name-lookup.c (pushtag): Likewise.
6555
6556 * class.c (current_lang_depth, push_lang_context,
6557 pop_lang_context): Use VEC instead of VARRAY.
6558 * cp-tree.h (saved_scope): Use VEC for lang_base instead of
6559 VARRAY.
6560 * name-lookup.c (push_to_top_level): Use VEC instead of
6561 VARRAY.
6562
6563 2005-05-02 Paolo Bonzini <bonzini@gnu.org>
6564
6565 * semantics.c (finish_call_expr): Call resolve_overloaded_builtin
6566 for BUILT_IN_MD built-ins.
6567
6568 2005-05-02 Michael Matz <matz@suse.de>
6569
6570 PR c++/19542
6571 * cp-tree.h (cp_tree_index): Remove CPTI_NULL, to be defined in C
6572 common frontend.
6573 (null_node): Remove.
6574 * lex.c (cxx_init): Move null_node initialisation to C common frontend.
6575
6576 2005-04-25 Ian Lance Taylor <ian@airs.com>
6577
6578 * cp-tree.def: Add EXPR_STMT.
6579 * cp-tree.h (cp_stmt_codes): Add EXPR_STMT.
6580 (EXPR_STMT_EXPR): Define.
6581 * cp-gimplify.c: Include "flags.h".
6582 (gimplify_expr_stmt): New static function.
6583 (cp_gimplify_expr): Handle EXPR_STMT.
6584 * cxx-pretty-print.c (pp_cxx_statement): Use pp_cxx_expression
6585 rather than pp_expression.
6586 (pp_cxx_statement): Handle EXPR_STMT.
6587 * dump.c (cp_dump_tree): Handle EXPR_STMT.
6588 * lex.c (cxx_init): Don't use c_common_stmt_codes in stmt_codes
6589 initializer.
6590
6591 2005-04-25 Andrew Pinski <pinskia@physics.uc.edu>
6592
6593 PR C++/21188
6594 * rtti.c (ifnonnull): Cast the zero comparison operand
6595 to the correct type.
6596
6597 2005-04-24 Jakub Jelinek <jakub@redhat.com>
6598
6599 PR middle-end/20991
6600 * class.c: Include cgraph.h.
6601 (cp_fold_obj_type_ref): Set node->local.vtable_method.
6602 * Make-lang.in (cgraph.o): Depend on $(CGRAPH_H).
6603
6604 2005-04-12 Markus F.X.J. Oberhumer <markus@oberhumer.com>
6605
6606 * mangle.c (write_builtin_type): Handle integer types which are
6607 not one of the shared integer type nodes and emit a "vendor
6608 extended builtin type" with an encoding in the form of "u5int96".
6609
6610 2005-04-24 Ian Lance Taylor <ian@airs.com>
6611
6612 * cp-tree.def (USING_STMT): Change class to tcc_statement.
6613 (TRY_BLOCK, EH_SPEC_BLOCK, HANDLER, CLEANUP_STMT): Likewise.
6614 (IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT): Likewise.
6615 (BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.
6616
6617 2005-04-23 DJ Delorie <dj@redhat.com>
6618
6619 * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, friend.c,
6620 init.c, lex.c, mangle.c, method.c, name-lookup.c, parser.c,
6621 repo.c, rtti.c, tree.c, typeck.c, typeck2.c: Adjust warning()
6622 callers.
6623
6624 2005-04-22 Per Bothner <per@bothner.com>
6625
6626 * decl.c (make_rtl_for_nonlocal_decl): Don't try get_fileinfo if
6627 input_filename is NULL, as it is for (say) __PRETTY_FUNCTION__.
6628
6629 2005-04-22 Alexandre Oliva <aoliva@redhat.com>
6630
6631 PR c++/21087
6632 * name-lookup.c (push_overloaded_decl): Do not overload with
6633 non-duplicate anticipated built-in.
6634
6635 2005-04-21 Kazu Hirata <kazu@cs.umass.edu>
6636
6637 * cp-tree.h (THROW_NAME, AUTO_VTABLE_NAME, AUTO_TEMP_FORMAT,
6638 VTABLE_BASE, VTABLE_NAME_PREFIX, STATIC_NAME_FORMAT): Remove.
6639
6640 2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
6641
6642 * cp-tree.h: Adjust for new VEC API.
6643 Define VEC(tree_pair_s,gc).
6644 (struct save_scope): Adjust.
6645 (struct lang_type_class): Adjust.
6646 (unemitted_tinfo_decls): Adjust.
6647 * class.c (add_method, resort_type_method_vec,
6648 finish_struct_methods, struct find_final_overrider_data,
6649 dfs_find_final_overrider_pre, find_final_overrider,
6650 get_vcall_index, warn_hidden, walk_subobject_offsets,
6651 check_methods, fixup_inline_methods, end_of_class,
6652 warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
6653 add_vcall_offset): Adjust.
6654 * decl.c (xref_basetypes, finish_method): Adjust.
6655 * decl2.c (check_classfn): Adjust.
6656 * init.c (sort_mem_initializers, push_base_cleanups): Adjust.
6657 * method.c (do_build_copy_constructor): Adjust.
6658 * name-lookup.c (new_class_binding, store_binding,
6659 store_bindings, store_class_bindings): Adjust.
6660 * name-lookup.h: Define VEC(cxx_saved_binding,gc),
6661 VEC(cp_class_binding,gc).
6662 (struct cp_binding_level): Adjust.
6663 * parser.c: Define VEC(cp_token_position,heap).
6664 (struct cp_lexer): Adjust.
6665 (cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
6666 cp_lexer_save_tokens): Adjust.
6667 * pt.c (retrieve_specialization,
6668 check_explicit_specialization): Adjust.
6669 * rtti.c (unemitted_tinfo_decls): Adjust.
6670 (init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
6671 get_pseudo_ti_desc): Adjust.
6672 * search.c (dfs_access_in_type, lookup_conversion_operator,
6673 lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
6674 dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
6675 * semantics.c: Define VEC(deferred_access,gc).
6676 (push_deferring_access_checks): Adjust.
6677 * typeck2.c (abstract_virtuals_error): Adjust.
6678
6679 2005-04-20 Ian Lance Taylor <ian@airs.com>
6680
6681 * cp-tree.def: Add STMT_EXPR.
6682 * cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
6683 (STMT_EXPR_STMT): Define.
6684 * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
6685 STMT_EXPR.
6686 (pp_cxx_expression): Likewise.
6687 (pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
6688 * dump.c (cp_dump_tree): Handle STMT_EXPR.
6689
6690 2005-04-18 Kazu Hirata <kazu@cs.umass.edu>
6691
6692 * decl.c (expand_static_init): Call build2 and build3 instead
6693 of build.
6694
6695 * cp-tree.h (VPTR_NAME, VPTR_NAME_P): Remove.
6696
6697 2005-04-17 Ian Lance Taylor <ian@airs.com>
6698
6699 * cp-tree.def: Add SIZEOF_EXPR, ARROW_EXPR and ALIGNOF_EXPR.
6700 * cxx-pretty-print.c (pp_cxx_postfix_expression): Handle
6701 ARROW_EXPR.
6702 (pp_cxx_unary_expression): Handle SIZEOF_EXPR and ALIGNOF_EXPR.
6703 (pp_cxx_expression): Handle ARROW_EXPR, SIZEOF_EXPR, and
6704 ALIGNOF_EXPR.
6705 * typeck.c (cxx_sizeof_or_alignof_type): Update call to
6706 c_sizeof_or_alignof_type for change in parameter type.
6707
6708 2005-04-16 Mark Mitchell <mark@codesourcery.com>
6709
6710 PR c++/21025
6711 * typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to
6712 which sizeof/alignof is dependent, rather than just whether we are
6713 processing_template_decl.
6714
6715 2005-04-17 Kazu Hirata <kazu@cs.umass.edu>
6716
6717 * cp-tree.h (LOOKUP_GLOBAL): Remove.
6718 (LOOKUP_ONLYCONVERTING, DIRECT_BIND, LOOKUP_NO_CONVERSION,
6719 LOOKUP_DESTRUCTOR, LOOKUP_NO_TEMP_BIND, LOOKUP_PREFER_TYPES,
6720 LOOKUP_PREFER_NAMESPACES, LOOKUP_CONSTRUCTOR_CALLABLE): Adjust
6721 their values.
6722
6723 2005-04-15 Richard Henderson <rth@redhat.com>
6724
6725 PR middle-end/14311
6726 * semantics.c (finish_call_expr): Call resolve_overloaded_builtin.
6727
6728 2005-04-15 Kazu Hirata <kazu@cs.umass.edu>
6729
6730 * cp-tree.h (lang_type_class): Remove redefined. Move
6731 java_interface into where redefined was. Increment the width
6732 of dummy.
6733 (TYPE_REDEFINED): Remove.
6734
6735 2005-04-14 Kazu Hirata <kazu@cs.umass.edu>
6736
6737 * cp-tree.h (SET_TMPL_ARG, ENUM_TI_TEMPLATE, ENUM_TI_ARGS,
6738 CLASSTYPE_TEMPLATE_LEVEL): Remove.
6739
6740 2005-04-11 Mark Mitchell <mark@codesourcery.com>
6741
6742 * decl2.c (determine_visibility): Don't use export_class_data.
6743 (import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and
6744 TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY.
6745
6746 2005-04-09 Kazu Hirata <kazu@cs.umass.edu>
6747
6748 * cp-tree.h (cxx_alignof): Remove.
6749
6750 * cp-tree.h (DECL_ARRAY_DELETE_OPERATOR_P): Remove.
6751
6752 * cp-tree.h (EXCEPTION_CLEANUP_NAME, B_SET, B_CLR, B_TST,
6753 CONV_STATIC_CAST): Remove.
6754
6755 * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Remove.
6756
6757 * cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove.
6758
6759 * cp-tree.h (cp_deprecated): Remove.
6760
6761 2005-04-08 Ian Lance Taylor <ian@airs.com>
6762
6763 * cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
6764 CONTINUE_STMT, SWITCH_STMT.
6765 * cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT,
6766 BREAK_STMT, CONTINUE_STMT, SWITCH_STMT.
6767 (WHILE_COND, WHILE_BODY): Define.
6768 (DO_COND, DO_BODY): Define.
6769 (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Define.
6770 (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Define.
6771 * cp-gimplify.c (enum bc_t): Define.
6772 (struct cp_gimplify_ctx, ctxp): Define.
6773 (push_context, pop_context): New static functions.
6774 (begin_bc_block, finish_bc_block): New static functions.
6775 (build_bc_goto): New static function.
6776 (gimplify_cp_loop, gimplify_for_stmt): New static functions.
6777 (gimplify_while_stmt, gimplify_do_stmt): Likewise.
6778 (gimplify_switch_stmt): Likewise.
6779 (cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT,
6780 SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
6781 (cp_genericize): Call push_context and pop_context.
6782 * semantics.c (finish_break_stmt): Just call build_stmt
6783 (BREAK_STMT) rather than build_break_stmt.
6784 (finish_continue_stmt): Corresponding change.
6785 * decl.c (pop_switch): Update call to c_do_switch_warnings for new
6786 parameters.
6787 * cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT,
6788 WHILE_STMT, DO_STMT, FOR_STMT, BREAK_STMT, CONTINUE_STMT.
6789 * dump.c (cp_dump_tree): Likewise.
6790
6791 2005-04-08 Mark Mitchell <mark@codesourcery.com>
6792
6793 PR c++/20905
6794 * parser.c (cp_parser_type_specifier_seq): Add is_condition
6795 parameter.
6796 (cp_parser_new_type_id): Pass it.
6797 (cp_parser_condition): Likewise.
6798 (cp_parser_conversion_type_id): Likewise.
6799 (cp_parser_type_id): Likewise.
6800 (cp_parser_type_specifier_seq): In a condition, do not allow
6801 invalid type-specifier combinations.
6802 (cp_parser_exception_declaration): Adjust call to
6803 cp_parser_type_specifier_seq.
6804
6805 * cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P.
6806 * cp-tree.h (struct tinst_level): Add in_system_header_p.
6807 (TINST_IN_SYSTEM_HEADER_P): New macro.
6808 (make_tinst_level): Remove.
6809 * pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on
6810 the instantiated class.
6811 (push_tinst_level): Do not use make_tinst_level. Set
6812 TINST_IN_SYSTEM_HEADER_P.
6813 (pop_tinst_level): Likewise.
6814 (instantiate_class_template): Set in_system_header.
6815 (instantiate_pending_templates): Likewise.
6816 * tree.c (make_tinst_level): Remove.
6817
6818 2005-04-06 Joseph S. Myers <joseph@codesourcery.com>
6819
6820 * decl.c (start_decl): Apply pending #pragma weak regardless of
6821 scope.
6822
6823 2005-04-06 Mark Mitchell <mark@codesourcery.com>
6824
6825 PR c++/20212
6826 * pt.c (regenerate_decl_from_template): Copy attributes for
6827 parameters from the pattern to the instantiation.
6828
6829 2005-04-05 Mark Mitchell <mark@codesourcery.com>
6830
6831 PR c++/20734
6832 * cp-tree.def (OFFSET_REF): Correct comments.
6833 * init.c (build_offset_ref): Remove misleading comment.
6834 * typeck.c (build_unary_op): Handle pointer-to-member creation
6835 here, rather than ...
6836 (unary_complex_lvalue): ... here.
6837
6838 2005-04-06 Jason Merrill <jason@redhat.com>
6839
6840 PR c++/19312
6841 * tree.c (stabilize_init): Don't bother trying to stabilize
6842 something with no side-effects.
6843
6844 2005-04-05 Mark Mitchell <mark@codesourcery.com>
6845
6846 PR c++/20763
6847 * decl.c (grokdeclarator): Correct attribute handling.
6848
6849 2005-04-05 Mark Mitchell <mark@codesourcery.com>
6850
6851 PR c++/19159
6852 * decl2.c (import_export_decl): Use non-COMDAT external linkage
6853 for virtual tables, typeinfo, etc. that will be emitted in only
6854 one translation unit on systems without weak symbols.
6855
6856 2005-04-04 Mark Mitchell <mark@codesourcery.com>
6857
6858 PR c++/20679
6859 * parser.c (cp_parser_template_name): Fix thinko.
6860
6861 2005-04-04 Nathan Sidwell <nathan@codesourcery.com>
6862
6863 PR c++/20746
6864 * method.c (use_thunk): Protect covariant pointer return
6865 adjustments from NULL pointers.
6866
6867 2005-04-04 Jan Hubicka <jh@suse.cz>
6868
6869 * decl2.c (finish_objects): Revert my previous patch.
6870 (cp_finish_file): Likewise.
6871
6872 2005-04-03 Kazu Hirata <kazu@cs.umass.edu>
6873
6874 * pt.c: Fix comment typos.
6875
6876 2005-04-03 Nathan Sidwell <nathan@codesourcery.com>
6877
6878 PR c++/20723
6879 * pt.c (more_specialized_fn): Member functions are unordered wrt
6880 non-members. Conversion operators are unordered wrt other
6881 functions.
6882
6883 2005-04-01 Nathan Sidwell <nathan@codesourcery.com>
6884
6885 * call.c (add_template_candidates_real): Remove length parameter
6886 from fn_type_unification call.
6887 * class.c (resolve_address_of_overloaded_function): Likewise
6888 * cp-tree.h (fn_type_unification): Remove length parameter.
6889 * pt.c (get_bindings_overload): Remove.
6890 (get_bindings_real): Rename to ...
6891 (get_bindings): ... here. Remove length and strict
6892 parameters. Change return type flag to boolean. Remove original
6893 forwarding function.
6894 (determine_specialization): Adjust get_bindings call.
6895 (fn_type_unification): Remove length parameter. Adjust.
6896 (type_unification_real): Remove length parameter. Adjust.
6897 (resolve_overloaded_unification): Adjust get_bindings call.
6898 (try_one_overload): Simplify confusing cascaded if control flow.
6899 (unify): Remove length paramter from type_unification_real call.
6900 (most_specialized_instantiation): Adjust get_bindings calls.
6901 (most_specialized): Likewise.
6902
6903 2005-03-31 Nathan Sidwell <nathan@codesourcery.com>
6904
6905 PR c++/19203, implement DR 214
6906 * call.c (joust): Use more_specialized_fn.
6907 * cp-tree.h (DEDUCE_ORDER): Remove.
6908 (more_specialized): Replace with ...
6909 (more_specialized_fn): ... this.
6910 * pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER
6911 case.
6912 (type_unification_real): Remove DEDUCE_ORDER case.
6913 (more_specialized): Replace with ...
6914 (more_specialized_fn): ... this. Implement DR 214.
6915 (most_specialized_instantiation): Use get_bindings_real directly.
6916
6917 2005-03-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
6918
6919 PR c++/18644
6920 * call.c (build_new_op): Remove check for -Wsynth.
6921
6922 2005-03-31 Jan Hubicka <jh@suse.cz>
6923
6924 * decl2.c (finish_objects): Mark ctor as needed.
6925 (cp_finish_file): Output variables only in nonunit-at-a-time.
6926
6927 2005-03-29 Richard Henderson <rth@redhat.com>
6928
6929 PR c/20519
6930 * decl.c (cp_complete_array_type): Rename from complete_array_type.
6931 Use the new complete_array_type in c-common.c. Update all callers.
6932 * cp-tree.h (cp_complete_array_type): Update to match.
6933
6934 2005-03-24 Geoffrey Keating <geoffk@apple.com>
6935
6936 * typeck.c (build_static_cast_1): Allow scalar_cast between
6937 any integral, floating, or enumeration type.
6938
6939 2005-03-24 Steven Bosscher <stevenb@suse.de>
6940
6941 * typeck.c (comptypes): First determine if the types are compatible
6942 from a target-independent point of view. Check target attributes
6943 last.
6944
6945 * class.c (build_base_path):
6946 (build_vbase_offset_vtbl_entries):
6947 (add_vcall_offset): Replace fold (buildN (...)) with fold_buildN.
6948 * error.c (dump_expr): Likewise.
6949 * init.c (build_zero_init, expand_cleanup_for_base,
6950 build_vec_delete_1): Likewise.
6951 * mangle.c (write_integer_cst): Likewise.
6952 * method.c (thunk_adjust): Likewise.
6953 * pt.c (convert_nontype_argument, tsubst, unify): Likewise.
6954 * tree.c (cxx_print_statistics, array_type_nelts_total): Likewise.
6955 * typeck.c (build_ptrmemfunc_access_expr,
6956 (get_member_function_from_ptrfunc): Likewise.
6957
6958 2005-03-23 Joseph S. Myers <joseph@codesourcery.com>
6959
6960 * cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
6961
6962 2005-03-23 Joseph S. Myers <joseph@codesourcery.com>
6963
6964 * cp-tree.h (perform_integral_promotions): Remove.
6965 (default_conversion): Add.
6966
6967 2005-03-22 Mark Mitchell <mark@codesourcery.com>
6968
6969 * parser.c (cp_parser_warn_min_max): New function.
6970 (cp_parser_binary_expression): Use it.
6971 (cp_parser_assignment_operator_opt): Likewise.
6972 (cp_parser_operator): Likewise.
6973
6974 2005-03-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
6975
6976 PR c++/19980
6977 * decl.c (start_preparsed_function): Robustify.
6978
6979 2005-03-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
6980
6981 PR c++/20499
6982 * parser.c (cp_parser_class_head): Return NULL_TREE when
6983 encountering a redefinition.
6984
6985 2005-03-22 Nathan Sidwell <nathan@codesourcery.com>
6986
6987 PR c++/20465
6988 PR c++/20381
6989 * typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a
6990 template.
6991
6992 2005-03-21 Paolo Carlini <pcarlini@suse.de>
6993
6994 PR c++/20461
6995 PR c++/20536
6996 * init.c (emit_mem_initializers): Don't crash on undefined
6997 types.
6998
6999 2005-03-21 Paolo Carlini <pcarlini@suse.de>
7000
7001 PR c++/20147
7002 * semantics.c (finish_stmt_expr_expr): Return immediately
7003 if error_operand_p (expr).
7004
7005 2005-03-21 Joseph S. Myers <joseph@codesourcery.com>
7006
7007 * cp-tree.h (lvalue_or_else, lvalue_p): New.
7008 * typeck.c (lvalue_or_else): New. Call lvalue_error.
7009
7010 2005-03-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7011
7012 PR c++/20240
7013 * decl.c (decls_match): Compare context of VAR_DECL.
7014
7015 2005-03-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7016
7017 PR c++/20333
7018 * parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
7019 Check the return value of cp_parser_nested_name_specifier.
7020
7021 2005-03-18 Dale Johannesen <dalej@apple.com>
7022
7023 * cp/tree.c (cp_tree_equal): Handle SSA_NAME.
7024
7025 2005-03-18 Paolo Carlini <pcarlini@suse.de>
7026
7027 PR c++/20463
7028 * parser.c (cp_parser_diagnose_invalid_type_name):
7029 Check TYPE_BINFO (current_class_type) before attempting
7030 to emit inform messages.
7031
7032 2005-03-17 Paolo Carlini <pcarlini@suse.de>
7033
7034 PR c++/19966
7035 * cp-tree.h (grok_op_properties): Change return type to void.
7036 * decl.c (grok_op_properties): Return early - don't check the
7037 arity - in case of a static member or an operator that cannot
7038 be non-member; tidy a bit.
7039
7040 2005-03-17 Nathan Sidwell <nathan@codesourcery.com>
7041
7042 PR c++/20186
7043 * pt.c (contains_dependent_cast_p): Remove.
7044 (fold_non_dependent_expr): Don't use it.
7045 (value_dependent_expression_p): Use a switch statement.
7046 reference_exprs can be dependent.
7047
7048 2005-03-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7049
7050 PR c++/4403
7051 PR c++/9783, DR433
7052 * name-lookup.c (pushtag): Skip template parameter scope when
7053 scope is ts_global. Don't push tag into template parameter
7054 scope.
7055 * pt.c (instantiate_class_template): Reorder friend class
7056 template substitution to handle non-dependent friend class
7057 that hasn't been previously declared.
7058
7059 2005-03-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7060
7061 Friend class name lookup 5/n
7062 PR c++/1016
7063 * cp-tree.h (pushtag): Adjust declaration.
7064 * decl.c (lookup_and_check_tag): Call lookup_type_scope if
7065 lookup_name fails.
7066 (xref_tag): Adjust call to pushtag. Make hidden class visible.
7067 (start_enum): Adjust call to pushtag.
7068 * name-lookup.c (ambiguous_decl): Ignore hidden names.
7069 (qualify_lookup): Change return type to bool.
7070 (hidden_name_p): New function.
7071 (lookup_namespace_name, unqualified_namespace_lookup,
7072 lookup_name_real): Use it.
7073 (lookup_type_scope): Update comments.
7074 (maybe_process_template_type_declaration): Change parameter name
7075 from globalize to is_friend.
7076 (pushtag): Change globalize parameter of type int to tag_scope.
7077 Hide name if introduced by friend declaration.
7078 * name-lookup.h (hidden_name_p): Add declaration.
7079 * parser.c (cp_parser_lookup_name): Don't deal with hidden name
7080 here.
7081 * pt.c (push_template_decl_real): Make hidden class template
7082 visible.
7083 (lookup_template_class, instantiate_class_template): Adjust call
7084 to pushtag.
7085 * semantics.c (begin_class_definition): Likewise.
7086 * rtti.c (init_rtti_processing, build_dynamic_cast_1,
7087 tinfo_base_init, emit_support_tinfos): Use ts_current instead of
7088 ts_global.
7089
7090 2005-03-13 Mark Mitchell <mark@codesourcery.com>
7091
7092 PR c++/20157
7093 * pt.c (determine_specialization): Reject non-specializations.
7094
7095 2005-03-11 Per Bothner <per@bothner.com>
7096
7097 * cp-tree.h (struct cp_declarator): New id_loc field.
7098 * cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's
7099 location using c_lex_with_flags, instead of input_location.
7100 (cp_parser_direct_declarator): Set declarator's id_loc from
7101 cp_token's id_loc.
7102
7103 2005-03-10 Jakub Jelinek <jakub@redhat.com>
7104
7105 PR c++/18384, c++/18327
7106 * decl.c (reshape_init_array): Use UHWI type for max_index_cst
7107 and index. Convert max_index to size_type_node if it isn't
7108 host_integerp (, 1).
7109
7110 2005-03-09 Mark Mitchell <mark@codesourcery.com>
7111
7112 PR c++/20208
7113 * pt.c (tsubst_decl): Apply array-to-pointer and
7114 function-to-pointer conversions to function arguments.
7115 (regenerate_decl_from_template): Likewise.
7116
7117 2005-03-09 Paolo Carlini <pcarlini@suse.de>
7118
7119 PR c++/16859
7120 * decl.c (complete_array_type): In pedantic mode, return
7121 3 for an empty initializer list as the initializer for an
7122 array of unknown bound (8.5.1/4).
7123 (maybe_deduce_size_from_array_init): Fix final test to use
7124 the above.
7125
7126 2005-03-08 Nathan Sidwell <nathan@codesourcery.com>
7127
7128 PR c++/20186
7129 * pt.c (contains_dependent_cast_p): New.
7130 (fold_non_dependent_expr): Call it.
7131
7132 2005-03-08 Mark Mitchell <mark@codesourcery.com>
7133
7134 PR c++/20142
7135 * cp-tree.h (target_type): Remove.
7136 * decl.c (layout_var_decl): Remove #if 0'd code.
7137 (cp_finish_decl): Remove dead code.
7138 * init.c (build_vec_init): When determining whether or not the
7139 element type has an asignment operator, look through all array
7140 dimensions.
7141 * typeck.c (target_type): Remove.
7142
7143 2005-03-07 Mark Mitchell <mark@codesourcery.com>
7144
7145 * class.c (finish_struct_1): Do not warn about non-virtual
7146 destructors in Java classes.
7147
7148 2005-03-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7149
7150 PR c++/19311
7151 * init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
7152 * pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
7153 for OFFSET_TYPE.
7154 * typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
7155 Also set PTRMEM_OK_P for NON_DEPENDENT_EXPR.
7156 (build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside
7157 template.
7158
7159 2005-03-02 Alexandre Oliva <aoliva@redhat.com>
7160
7161 * name-lookup.c (push_overloaded_decl): Don't error if the new
7162 decl matches the old one.
7163 * decl.c (redeclaration_error_message): Likewise.
7164
7165 2005-03-01 Per Bothner <per@bothner.com>
7166
7167 * decl.c (finish_function): Use SET_EXPR_LOCATION instead of
7168 unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.
7169
7170 2005-03-01 Nathan Sidwell <nathan@codesourcery.com>
7171
7172 PR c++/20232
7173 * class.c (update_vtable_entry_for_fn): Don't crash on invalid
7174 covariancy.
7175
7176 * cp-tree.g (THUNK_TARGET): Expand comment.
7177 * method.c (use_thunk): Make sure we also use the target, if that
7178 is a thunk.
7179
7180 2005-02-27 Jakub Jelinek <jakub@redhat.com>
7181
7182 PR c++/20206
7183 * decl.c (cxx_comdat_group): Put thunks for
7184 TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
7185 comdat group as the thunk target.
7186
7187 2005-02-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
7188
7189 * call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c,
7190 parser.c: Fix comment typo(s).
7191
7192 2005-02-24 Jakub Jelinek <jakub@redhat.com>
7193
7194 PR c++/20175
7195 * decl.c (reshape_init): Don't warn about missing braces if STRING_CST
7196 initializes a char/wchar_t array.
7197
7198 2005-02-23 Mark Mitchell <mark@codesourcery.com>
7199
7200 PR c++/19878
7201 * decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations
7202 with internal linkage.
7203
7204 2005-02-23 Alexandre Oliva <aoliva@redhat.com>
7205
7206 * decl.c (grokvardecl): Don't exempt anonymous types from having
7207 linkage for variables that have linkage other than "C".
7208
7209 2005-02-23 Kazu Hirata <kazu@cs.umass.edu>
7210
7211 * cp-objcp-common.h, error.c: Update copyright.
7212
7213 2005-02-22 Mark Mitchell <mark@codesourcery.com>
7214
7215 PR c++/20073
7216 * decl.c (start_decl_1): Don't clear TREE_READONLY.
7217 (cp_finish_decl): Likewise.
7218 (complete_vars): Call cp_apply_type_quals_to_decl.
7219 * typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in
7220 cases where that's not valid.
7221
7222 PR c++/19991
7223 * init.c (integral_constant_value): Iterate if the value of a decl
7224 is itself a constant.
7225
7226 PR c++/20152
7227 * parser.c (cp_parser_class_head): Check for redefintions here.
7228 * semantics.c (begin_class_definition): Not here.
7229
7230 PR c++/20153
7231 * decl2.c (build_anon_union_vars): Add type parameter.
7232 (finish_anon_union): Pass it.
7233
7234 PR c++/20148
7235 * error.c (dump_expr): Do not print the body of a BIND_EXPR.
7236 Handle STATEMENT_LIST.
7237
7238 PR c++/19883
7239 * parser.c (cp_parser_direct_declarator): Always complain about
7240 non-constant array bounds when in a function scope.
7241 * semantics.c (finish_id_expression): Do not mark dependent names
7242 as non-constant.
7243
7244 2005-02-21 Douglas Gregor <dgregor@cs.indiana.edu>
7245
7246 PR c++/19076
7247 PR c++/6628
7248 * cp-tree.h (cp_apply_type_quals_to_decl): Declared.
7249 * decl.c (grokdeclarator): Pedwarn about qualifying a function
7250 type.
7251 Add qualifiers when declaring a typedef of a function type.
7252 Member function pointers pick up the qualifiers of the typedef
7253 used to declare them.
7254 Don't complain about creating cv-qualified function types.
7255 Complain about qualified function typedefs that are used to
7256 declare non-static member functions or free functions.
7257 Use cp_apply_type_quals_to_decl.
7258 (start_preparsed_function): Use cp_apply_type_quals_to_decl.
7259 (grokclassfn): Use cp_apply_type_quals_to_decl.
7260 * error.c (dump_type_suffix): Print qualifiers for function
7261 types.
7262 * pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl.
7263 (tsubst): When substituting a function type into a member
7264 pointer type, pass along the qualifiers.
7265 (unify): Unify member pointers to member function pointers.
7266 * tree.c (cp_build_qualified_type_real): Function types may be
7267 qualified. This includes restrict qualifiers.
7268 * typeck.c (cp_apply_type_quals_to_decl): New function to replace
7269 use of c_apply_type_quals_to_decl. Drops qualifiers that are being
7270 added to function types.
7271
7272 2005-02-20 Zack Weinberg <zack@codesourcery.com>
7273
7274 PR 18785
7275 * cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to
7276 c_common_to_target_charset. Delete bogus comment.
7277
7278 2005-02-18 Richard Henderson <rth@redhat.com>
7279
7280 PR libstdc++/10606
7281 * except.c (do_get_exception_ptr): New.
7282 (expand_start_catch_block): Use it.
7283
7284 2005-02-19 Jakub Jelinek <jakub@redhat.com>
7285
7286 * decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING
7287 if type is not error_mark_node.
7288
7289 2005-01-20 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7290
7291 PR c++/19508
7292 * decl2.c (grokfield): Do not apply attributes to template parameters
7293 as they are ignored by tsubst anyway.
7294
7295 2005-02-18 Jakub Jelinek <jakub@redhat.com>
7296
7297 PR c++/19813
7298 * decl.c (start_decl_1): Clear TREE_READONLY flag if
7299 its type has TYPE_NEEDS_CONSTRUCTING.
7300 (complete_vars): Likewise.
7301
7302 2005-02-17 Alexandre Oliva <aoliva@redhat.com>
7303
7304 PR c++/20028
7305 * class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
7306 template along with TYPE_SIZE.
7307
7308 PR c++/20022
7309 * semantics.c (perform_deferred_access_checks): Use
7310 get_deferred_access_checks to get the top of the stack.
7311
7312 2005-02-15 Alexandre Oliva <aoliva@redhat.com>
7313
7314 PR c++/17788
7315 * class.c (add_implicitly_declared_members, check_field_decl)
7316 (check_field_decls, check_bases): Remove arguments, tests and
7317 assignments of cant_have_default_ctor-related variables.
7318
7319 2005-02-15 Alexandre Oliva <aoliva@redhat.com>
7320
7321 * decl2.c (mark_used): Set the source location of the used decl to
7322 the current input location here...
7323 * method.c (synthesize_method): ... not here. Set input_location
7324 from the decl instead.
7325
7326 2005-02-14 Nathan Sidwell <nathan@codesourcery.com>
7327
7328 PR c++/19608
7329 * parser.c (cp_parser_late_parsing_for_member): Use
7330 current_function_decl as scope to push to and from.
7331
7332 PR c++/19884
7333 * pt.c (check_explicit_specialization): Make sure namespace
7334 binding lookup found an overloaded function.
7335 (lookup_template_function): Just assert FNS is an overloaded
7336 function.
7337
7338 PR c++/19895
7339 * decl.c (grokdeclarator): Check for error mark node in ptrmem
7340 construction.
7341
7342 2005-02-14 Alexandre Oliva <aoliva@redhat.com>
7343
7344 PR c++/17816
7345 * decl.c (redeclaration_error_message): Report redefinition of
7346 pure virtual function.
7347
7348 2005-02-14 Nathan Sidwell <nathan@codesourcery.com>
7349
7350 PR c++/19891
7351 * class.c (build_simple_base_path): Build the component_ref
7352 directly.
7353 (update_vtable_entry_for_fn): Walk the covariant's binfo chain
7354 rather than using lookup_base.
7355 * search.c (dfs_walk_once): Add non-recursive assert check.
7356 * typeck.c (build_class_member_access_expr): It is possible for
7357 the member type to be both const and volatile.
7358
7359 2005-02-12 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7360
7361 PR c++/14479
7362 PR c++/19487
7363 * pt.c (maybe_check_template_type): Remove.
7364 * cp-tree.h (maybe_check_template_type): Remove prototype.
7365 * name-lookup.c (maybe_process_template_type_declaration): Don't
7366 use maybe_check_template_type.
7367
7368 2005-02-11 Richard Henderson <rth@redhat.com>
7369
7370 PR c++/19632
7371 * pt.c (get_mostly_instantiated_function_type): Save and restore
7372 flag_access_control instead of push/pop_access_scope.
7373
7374 2005-02-10 Mark Mitchell <mark@codesourcery.com>
7375
7376 PR c++/19755
7377 * decl.c (reshape_init): Issue warnings about missing braces.
7378
7379 2005-02-11 Kazu Hirata <kazu@cs.umass.edu>
7380
7381 * cp-tree.def, except.c, ptree.c: Update copyright.
7382
7383 2005-02-09 Mark Mitchell <mark@codesourcery.com>
7384
7385 PR c++/19811
7386 * call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
7387 attempting name lookup.
7388
7389 * parser.c (cp_parser_unqualified_id): Initialize type_decl.
7390
7391 PR c++/19787
7392 * call.c (initialize_reference): Robustify.
7393
7394 PR ++/19732
7395 * decl.c (grokdeclarator): Check for invalid use of destructor
7396 names.
7397
7398 PR c++/19762
7399 * parser.c (cp_parser_unqualified_id): Avoid creating destructor
7400 names with invalid types.
7401
7402 PR c++/19826
7403 * parser.c (cp_parser_direct_declarator): Allow type-dependent
7404 expressions as array bounds.
7405
7406 PR c++/19739
7407 * parser.c (cp_parser_attributes_list): Allow empty lists.
7408
7409 2005-02-08 Mark Mitchell <mark@codesourcery.com>
7410
7411 PR c++/19733
7412 * class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
7413 (check_bases): Give warnings about a base class with a
7414 non-virtual destructor, even if it is implicit.
7415 (finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
7416 (maybe_warn_about_overly_private_class): Don't use
7417 TYPE_HAS_DESTRUCTOR.
7418 (finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
7419 (check_for_override): Give it external linkage.
7420 (add_implicitly_declared_members): Generate destructors lazily.
7421 (check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
7422 TYPE_HAS_DESTRUCTOR.
7423 (check_bases_and_members): Call check_methods before
7424 check_field_decls.
7425 (check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
7426 TYPE_HAS_DESTRUCTOR.
7427 (finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
7428 * cp-tree.def (PSEUDO_DTOR_EXPR): Document.
7429 * cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
7430 (lang_type_class): Add lazy_destructor.
7431 (CLASSTYPE_LAZY_DESTRUCTOR): New macro.
7432 (CLASSTYPE_DESTRUCTORS): Robustify.
7433 (TYPE_HAS_DESTRUCTOR): Remove.
7434 (check_for_override): Declare.
7435 (build_vbase_delete): Remove.
7436 * cvt.c (convert_to_void): Issue errors about pseudo-destructor
7437 expressions.
7438 * decl.c (cxx_maybe_build_cleanup): Remove dead code.
7439 * except.c (dtor_nothrow): Lazily create destructors if necessary.
7440 (build_throw): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
7441 * init.c (build_delete): Lazily create destructors, if necessary.
7442 (build_vbase_delete): Remove.
7443 * method.c (locate_dtor): Simplify.
7444 (implicitly_declare_fn): Add support for destructors.
7445 * parser.c (cp_parser_lookup_name): Lazily create destructors, if
7446 necessary.
7447 * pt.c (check_explicit_specialization): Don't use
7448 TYPE_HAS_DESTRUCTOR.
7449 (instantiate_class_template): Likewise.
7450 * ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
7451 * rtti.c (emit_support_tinfos): Robustify.
7452 * search.c (lookup_fnfields_1): Lazily create destructors.
7453 * typeck.c (build_class_member_access_expr): Remove
7454 PSEUDO_DTOR_EXPR handling.
7455 (lookup_destructor): Likewise.
7456
7457 2005-02-08 Kazu Hirata <kazu@cs.umass.edu>
7458
7459 * cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update
7460 copyright.
7461
7462 2005-02-07 Mark Mitchell <mark@codesourcery.com>
7463
7464 * parser.c (cp_lexer_start_debugging): Avoid arithmetic operations
7465 on boolean variables.
7466 (cp_lexer_stop_debugging): Likewise.
7467
7468 2005-02-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7469
7470 PR c++/17401
7471 * parser.c (cp_parser_pure_specifier): Emit a specific error
7472 message with an invalid pure specifier.
7473 * decl2.c (grok_function_init): Remove.
7474 (grokfield): An initializer for a method is a always a pure
7475 specifier.
7476
7477 2005-02-02 Matt Austern <austern@apple.com>
7478
7479 PR c++/19628
7480 * cp-tree.h (builtin_valid_in_constant_expr_p): Declare.
7481 * parser.c (cp_parser_postfix_expression): Accept function call in
7482 constant expression if builtin_valid_in_constant_expr_p is true
7483 for that function.
7484 * pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly.
7485 * semantics.c (finish_id_expression): Accept function call in constant
7486 expression if builtin_valid_in_constant_expr_p is true for that
7487 function.
7488 * tree.c (builtin_valid_in_constant_expr_p): New.
7489
7490 2005-02-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
7491
7492 PR c++/17413
7493 * pt.c (check_instantiated_args): Improve error message.
7494 Fix logic when to print its second part.
7495
7496 2005-02-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
7497
7498 * cp-tree.h (complete_type_or_else): Remove macro.
7499 (complete_type_or_diagnostic): Rename to complete_type_or_else
7500 and remove last argument.
7501 * typeck.c (complete_type_or_diagnostic): Rename to
7502 complete_type_or_else and remove last argument.
7503
7504 2005-02-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
7505
7506 * cp-tree.h (commonparms): Remove prototype.
7507 (convert_arguments): Likewise.
7508 (PFN_FROM_PTRMEMFUNC): Remove.
7509 * typeck.c (commonparms): Make static.
7510 (convert_arguments): Add prototype. Make static.
7511 (PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc.
7512
7513 2005-01-31 Mark Mitchell <mark@codesourcery.com>
7514
7515 * parser.c (cp_parser_primary_expression): Don't complain about
7516 floating-point literals in integral constant expressions when
7517 !pedantic.
7518
7519 2005-02-01 Alexandre Oliva <aoliva@redhat.com>
7520
7521 * parser.c (cp_parser_template_id): Revert comment patch too.
7522
7523 PR c++/18757
7524 PR c++/19366
7525 PR c++/19499
7526 * parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
7527 Issue an error when creating the template id.
7528 * pt.c (fn_type_unification): Return early if the explicit
7529 template arg list is an error_mark_node.
7530
7531 2005-01-31 Mark Mitchell <mark@codesourcery.com>
7532
7533 * decl.c (build_enumerator): Do not issue duplicate error messages
7534 about invalid enumeration constants.
7535 * parser.c (cp_parser_non_integral_constant_expression): Always
7536 set parser->non_integral_constant_expression_p.
7537 (cp_parser_primary_expression): Add cast_p parameter. Issue
7538 errors about invalid uses of floating-point literals in
7539 cast-expressions.
7540 (cp_parser_postfix_expression): Add cast_p parameter.
7541 (cp_parser_open_square_expression): Pass it.
7542 (cp_parser_parenthesized_expression_list): Add cast_p parameter.
7543 (cp_parser_unary_expression): Likewise.
7544 (cp_parser_new_placement): Pass it.
7545 (cp_parser_direct_new_declarator): Likewise.
7546 (cp_parser_new_initializer): Likewise.
7547 (cp_parser_cast_expression): Add cast_p parameter.
7548 (cp_parser_binary_expression): Likewise.
7549 (cp_parser_question_colon_clause): Likewise.
7550 (cp_parser_assignment_expression): Likewise.
7551 (cp_parser_expression): Likewise.
7552 (cp_parser_constant_expression): If an integral constant
7553 expression is invalid, return error_mark_node.
7554 (cp_parser_expression_statement): Pass cast_p.
7555 (cp_parser_condition): Likewise.
7556 (cp_parser_iteration_statement): Likewise.
7557 (cp_parser_jump_statement): Likewise.
7558 (cp_parser_mem_initializer): Likewise.
7559 (cp_parser_template_argument): Likewise.
7560 (cp_parser_parameter_declaration): Likewise.
7561 (cp_parser_initializer): Likewise.
7562 (cp_parser_throw_expression): Likewise.
7563 (cp_parser_attribute_list): Likewise.
7564 (cp_parser_simple_cast_expression): Likewise.
7565 (cp_parser_functional_cast): Likewise.
7566 (cp_parser_late_parsing_default_args): Likewise.
7567 (cp_parser_sizeof_operand): Save/restore
7568 non_integral_constant_expression_p.
7569
7570 2005-01-31 Mike Stump <mrs@apple.com>
7571
7572 * parser.c (cp_lexer_new_main): Get the first token, first, before
7573 doing anything.
7574
7575 2005-01-31 Mark Mitchell <mark@codesourcery.com>
7576
7577 * decl.c (start_decl): Add missing parentheses.
7578
7579 2005-01-30 Mark Mitchell <mark@codesourcery.com>
7580
7581 PR c++/19555
7582 * cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
7583 * decl.c (duplicate_decls): Do not discard
7584 DECL_IMPLICIT_INSTANTIATION when merging declarations.
7585 (start_decl): Do not SET_DECL_TEMPLATE_SPECIALIZATION for
7586 variables that do not have DECL_USE_TEMPLATE.
7587
7588 PR c++/19395
7589 * decl.c (grokdeclarator): Refactor code so that qualified names
7590 are never allowed as the declarator in a typedef.
7591
7592 PR c++/19367
7593 * name-lookup.c (do_nonmember_using_decl): Avoid overloading
7594 builtin declarations.
7595
7596 PR c++/19457
7597 * call.c (convert_like_real): Inline call to
7598 dubious_conversion_warnings here.
7599 * cp-tree.h (dubious_conversion_warnings): Remove.
7600 * semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before
7601 setting TREE_NEGATED_INT.
7602 * typeck.c (dubious_conversion_warnings): Remove.
7603
7604 PR c++/19349
7605 * name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd
7606 memory.
7607
7608 2005-01-28 Mark Mitchell <mark@codesourcery.com>
7609
7610 PR c++/19253
7611 * parser.c (cp_parser_diagnose_invalid_type_name): Commit to
7612 tentative parses.
7613
7614 PR c++/19667
7615 * pt.c (redeclare_class_template): Robustify.
7616
7617 2005-01-27 Steven Bosscher <stevenb@suse.de>
7618
7619 * decl.c (finish_case_label): Use SWITCH_STMT accessor macros
7620 instead of SWITCH_EXPR ones.
7621 * pt.c (tsubst_expr): Likewise.
7622 * semantics.c (begin_switch_stmt, finish_switch_cond,
7623 finish_switch_stmt): Likewise.
7624
7625 2005-01-26 J"orn Rennecke <joern.rennecke@st.com>
7626
7627 PR c++/18370
7628 * parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.
7629
7630 2005-01-25 Andrew Pinski <pinskia@physics.uc.edu>
7631
7632 * class.c (abort_fndecl_addr): New variable.
7633 (build_vtbl_initializer): If we have a pure virtual function
7634 share the abort function's address.
7635 Include gt-cp-class.h at the end.
7636 * config-lang.in (gtfiles): Add cp/class.c.
7637
7638 2005-01-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
7639
7640 * cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static.
7641 (pp_cxx_function_definition): Make static.
7642 * cxx-pretty-print.h (pp_cxx_statement): Remove prototype.
7643 (pp_cxx_function_definition): Likewise.
7644
7645 2005-01-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
7646
7647 * name-lookup.c (print_binding_level): Make static.
7648 (constructor_name_full): Make static inline.
7649 (current_decl_namespace): Make static.
7650 * name-lookup.h (constructor_name_full): Remove prototype.
7651 (print_binding_level): Likewise.
7652 (current_decl_namespace): Likewise.
7653
7654 2005-01-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
7655
7656 * decl.h (debug_bindings_indentation): Remove.
7657
7658 2005-01-23 Kazu Hirata <kazu@cs.umass.edu>
7659
7660 * typeck.c: Fix a comment typo.
7661
7662 2005-01-21 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7663
7664 PR c++/19208
7665 * pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr
7666 at least once.
7667 (tsubst): Use fold_decl_constant_value in place of a bare call to
7668 integral_constant_value.
7669
7670 2005-01-20 Kazu Hirata <kazu@cs.umass.edu>
7671
7672 * typeck.c (more_qualified_p): Remove.
7673 * cp-tree.h: Remove the corresponding prototype.
7674
7675 2005-01-19 Matt Austern <austern@apple.com>
7676
7677 * typeck.c (comptypes): Handle return code from objc_comptypes
7678 correctly.
7679
7680 2005-01-19 Kazu Hirata <kazu@cs.umass.edu>
7681
7682 * cp-tree.h, name-lookup.h: Remove unused prototypes.
7683
7684 2005-01-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7685
7686 PR c++/19375
7687 * semantics.c (finish_id_expression): Disable access checking for
7688 already lookuped FIELD_DECL.
7689
7690 2005-01-18 Kazu Hirata <kazu@cs.umass.edu>
7691
7692 * decl.c (delete_block): Remove.
7693 * cp-tree.h: Remove the corresponding prototype.
7694
7695 * decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data,
7696 walk_vtables_r, walk_vtables, walk_globals_r, walk_globals):
7697 Remove.
7698 * cp-tree.h: Remove the corresponding prototypes.
7699
7700 * tree.c (count_functions, bound_pmf_p, cp_is_overload_p,
7701 cp_update_decl_after_saving, name_p): Remove.
7702 * cp-tree.h: Remove the corresponding prototypes.
7703
7704 2005-01-18 Andrew Pinski <pinskia@physics.uc.edu>
7705
7706 PR c/19472
7707 * semantics.c (finish_asm_stmt): Strip nops off
7708 input memory operands.
7709
7710 2005-01-18 Kazu Hirata <kazu@cs.umass.edu>
7711
7712 * Make-lang.in, call.c, cvt.c, init.c, rtti.c, tree.c,
7713 typeck2.c: Update copyright.
7714
7715 2005-01-16 Kazu Hirata <kazu@cs.umass.edu>
7716
7717 * class.c (get_enclosing_class): Remove.
7718 * cp-tree.h: Remove the corresponding prototypes.
7719
7720 * cvt.c (convert_lvalue): Remove.
7721 * cp-tree.h: Remove the corresponding prototype.
7722
7723 * pt.c (tinst_for_decl): Remove.
7724 * cp-tree.h: Remove the corresponding prototypes.
7725
7726 * tree.c (hash_chainon): Remove.
7727 * cp-tree.h: Remove the corresponding prototypes.
7728
7729 2005-01-15 Jakub Jelinek <jakub@redhat.com>
7730
7731 PR c++/19263
7732 * typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
7733 of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.
7734
7735 2005-01-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
7736
7737 * Make-lang.in (cp-warn): Don't append $(WERROR).
7738
7739 2005-01-10 Kazu Hirata <kazu@cs.umass.edu>
7740
7741 * cp-tree.h: Fix a comment typo.
7742
7743 2005-01-07 Nathan Sidwell <nathan@codesourcery.com>
7744
7745 PR c++/19298
7746 * pt.c (tsubst_qualified_id): Call convert_from_reference.
7747
7748 2005-01-06 Mark Mitchell <mark@codesourcery.com>
7749
7750 PR c++/19244
7751 * class.c (add_implicitly_declared_members): Remove dead code.
7752 * decl.c (grokfndecl): Add sfk parameter. Use it do set
7753 DECL_CONSTRUCTOR_P.
7754 (grokdeclarator): Adjust calls to grokfndecl.
7755 * method.c (implicitly_declare_fn): Improve documentation.
7756 * parser.c (cp_parser_direct_declarator): Do not consider a
7757 function to be a constructor if the containing class was
7758 originally anonymous.
7759
7760 2005-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7761
7762 PR c++/17154
7763 * search.c (lookup_field_1): Handle using declaration in
7764 class template partial specialization.
7765
7766 2005-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7767
7768 PR c++/19258
7769 * pt.c (push_access_scope): Handle friend defined in class.
7770 (pop_access_scope): Likewise.
7771
7772 2005-01-06 Nathan Sidwell <nathan@codesourcery.com>
7773
7774 PR c++/19270
7775 * pt.c (tsubst_copy) <ARRAY_REF case>: Handle separately.
7776 (tsubst_copy_and_build) <ARRAY_REF case>: Remove obsolete
7777 array-new handling code. Use build_x_binary_op.
7778
7779 2005-01-05 Nathan Sidwell <nathan@codesourcery.com>
7780
7781 PR c++/19030
7782 * cp-tree.h (start_decl): Take pointer to pushed scope, not bool.
7783 * name-lookup.h (push_scope): Return pushed scope, not flag.
7784 * name-lookup.c (push_scope): Return scope that should be popped,
7785 not a flag.
7786 * decl.c (start_decl): Adjust.
7787 (grokfndecl): Adjust scope push and pop.
7788 * decl2.c (check_classfn): Likewise.
7789 * parser.c (cp_parser_condition, cp_parser_conversion_function_id,
7790 cp_parser_init_declarator, cp_parser_direct_declarator,
7791 cp_parser_class_specifier, cp_parser_class_head,
7792 cp_parser_lookup_name,
7793 cp_parser_constructor_declarator_p): Likewise.
7794 * pt.c (instantiate_class_template,
7795 resolve_typename_type): Likewise.
7796
7797 2005-01-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
7798
7799 PR c++/14136
7800 * parser.c (cp_parser_unqualified_id): Do not issue error message
7801 for typedef-name as destructor declarator when performing an
7802 uncommitted tentative parse.
7803
7804 2005-01-01 Steven Bosscher <stevenb@suse.de>
7805
7806 PR middle-end/17544
7807 * decl.c (finish_function): Fix comment. Annotate the compiler
7808 generated return with the current file name and line 0.