OSDN Git Service

PR c++/48594
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2011-04-13  Jason Merrill  <jason@redhat.com>
2
3         PR c++/48594
4         * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
5         or pointer to (non-member) function.
6
7 2011-04-13  Jakub Jelinek  <jakub@redhat.com>
8
9         PR c++/48570
10         * semantics.c (cxx_eval_array_reference): Handle reading from
11         wchar_t, char16_t and char32_t STRING_CST.
12
13 2011-04-13  Dodji Seketeli  <dodji@redhat.com>
14
15         PR c++/48574
16         * class.c (fixed_type_or_null): We cannot determine the dynamic
17         type of a reference variable if its initializer is dependent.
18
19 2011-04-13  Jason Merrill  <jason@redhat.com>
20
21         PR c++/48581
22         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
23         unqualified lookup failing if we're still in a template.
24
25 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
26
27         * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
28         tree_contains_struct initialization to...
29         * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
30         macros.
31         * cp-objcp-common.h (cp_common_init_ts): Declare.
32         * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
33         calling TREE_CHAIN.
34
35 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
36
37         * parser.c (cp_parser_objc_message_expression): Updated call
38         to objc_build_message_expr.
39
40 2011-04-12  Martin Jambor  <mjambor@suse.cz>
41
42         * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
43         cgraph_get_create_node.
44         * decl2.c (cp_write_global_declarations): Call cgraph_get_node
45         instead of cgraph_get_create_node.
46         * method.c (make_alias_for_thunk): Call cgraph_get_node
47         instead of cgraph_get_create_node, assert it returns non-NULL.
48         (use_thunk): Likewise.
49         * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
50         when flag_syntax_only is not set.  Call cgraph_get_node instead of
51         cgraph_get_create_node.
52         (maybe_clone_body): Call cgraph_get_node instead of
53         cgraph_get_create_node.
54
55 2011-04-12  Martin Jambor  <mjambor@suse.cz>
56
57         * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
58         instead of cgraph_node.
59         * decl2.c (cxx_callgraph_analyze_expr): Likewise.
60         (cp_write_global_declarations): Likewise.
61         * optimize.c (maybe_clone_body): Likewise.
62         * semantics.c (maybe_add_lambda_conv_op): Likewise.
63         * mangle.c (mangle_decl): Likewise.
64         * method.c (make_alias_for_thunk): Likewise.
65         (use_thunk): Likewise.
66
67 2011-04-11  Jason Merrill  <jason@redhat.com>
68
69         PR c++/48535
70         * decl.c (cp_complete_array_type_or_error): New.
71         * semantics.c (finish_compound_literal): Use it.
72         * cp-tree.h: Declare it.
73
74         PR c++/48535
75         * semantics.c (finish_compound_literal): Handle references.
76
77         PR c++/48535
78         * semantics.c (finish_compound_literal): Take complain parm.
79         (build_lambda_object): Adjust.
80         * cp-tree.h: Adjust.
81         * call.c (convert_like_real): Adjust.
82         * decl.c (check_initializer): Adjust.
83         * parser.c (cp_parser_postfix_expression): Adjust.
84         (cp_parser_functional_cast): Adjust.
85         * pt.c (tsubst_copy_and_build): Adjust.
86         * typeck2.c (process_init_constructor_record): Adjust.
87
88         PR c++/48534
89         * cvt.c (ocp_convert): Use build_nop to convert to underlying type
90         of scoped enum.
91
92         PR c++/48523
93         * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
94         than cp_build_indirect_ref.
95
96         PR c++/48457, Core 1238
97         * call.c (reference_binding): Allow rvalue reference to bind to
98         function lvalue.
99         * tree.c (lvalue_kind): Functions are always lvalues.
100
101 2011-04-07  Jason Merrill  <jason@redhat.com>
102
103         PR c++/48500
104         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
105         arguments even if we don't know the function.
106
107         PR c++/48481
108         * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
109         at the end of the chain.
110         * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
111         (iterative_hash_template_arg): Likewise.
112
113         PR c++/48481
114         * cp-tree.h (OVL_ARG_DEPENDENT): New.
115         * name-lookup.c (add_function): Set it.
116         * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
117
118         PR c++/48481
119         * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
120         Release unused vector.
121
122         PR c++/48451
123         * pt.c (fn_type_unification): Don't clear incomplete pack flag.
124         (type_unification_real): Clear it here instead.
125
126         PR c++/48468
127         * except.c (build_noexcept_spec): Propagate error_mark_node.
128         (finish_noexcept_expr): Likewise.
129
130         PR c++/48452
131         * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
132         in SFINAE context.
133
134         PR c++/48450
135         * call.c (resolve_args): Take complain.
136         (build_new_function_call, build_operator_new_call): Pass it.
137         (build_op_call, build_new_op, build_new_method_call): Pass it.
138
139         PR c++/48450
140         * typeck.c (check_for_casting_away_constness): Take complain.
141         (build_static_cast_1, build_reinterpret_cast_1): Pass it.
142         (build_const_cast_1): Pass it.  Take full complain parm.
143         (build_const_cast, cp_build_c_cast): Adjust.
144
145         * tree.c (build_aggr_init_expr): Always return error_mark_node
146         on abstract violation.
147
148         PR c++/48450
149         * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
150         (bot_manip): Adjust.
151         * cp-tree.h: Adjust.
152         * call.c (convert_like_real, build_cxx_call): Adjust.
153         (perform_direct_initialization_if_possible): Adjust.
154         * cvt.c (ocp_convert): Adjust.
155         * init.c (build_value_init): Adjust.
156         * semantics.c (maybe_add_lambda_conv_op): Adjust.
157         * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
158         * typeck2.c (build_functional_cast): Adjust.
159
160         * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
161         level.
162         (perform_member_init): Not here.
163         * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
164         case to templates.
165         (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
166
167         PR c++/48449
168         * typeck2.c (build_functional_cast): Check complain consistently.
169         Use build_value_init and abstract_virtuals_error_sfinae.
170         (abstract_virtuals_error_sfinae): Split out.
171         * cp-tree.h: Declare it.
172         * init.c (build_new_1): Use it.
173         (build_value_init_noctor): Handle FUNCTION_TYPE.
174
175         * semantics.c (finish_decltype_type): Simplify handling of unknown
176         type.
177
178         * semantics.c (finish_decltype_type): Add complain parm.
179         * cp-tree.h: Adjust.
180         * parser.c (cp_parser_decltype): Adjust.
181         * pt.c (tsubst): Adjust.
182
183         PR c++/48450
184         * cvt.c (ocp_convert): Handle converting scoped enum to bool.
185
186 2011-03-31  Jason Merrill  <jason@redhat.com>
187
188         PR c++/48277
189         * semantics.c (finish_call_expr): Remove assert.
190
191         PR c++/48280
192         * method.c (defaultable_fn_check): Templates are not defaultable.
193
194         * parser.c (cp_parser_init_declarator): Avoid redundant
195         cp_finish_decl for member declarations.
196
197 2011-03-30  Jason Merrill  <jason@redhat.com>
198
199         PR c++/48212
200         * semantics.c (non_const_var_error): Just return if DECL_INITIAL
201         is error_mark_node.
202
203 2011-03-30  Jason Merrill  <jason@redhat.com>
204
205         PR c++/48369
206         * semantics.c (potential_constant_expression_1): Handle
207         UNORDERED_EXPR and ORDERED_EXPR.
208
209         PR c++/48281
210         * semantics.c (finish_compound_literal): Do put static/constant
211         arrays in static variables.
212
213         * call.c (convert_like_real) [ck_list]: Build up the
214         initializer_list object directly.
215         * decl.c (build_init_list_var_init): Adjust.
216
217         * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
218         * decl.c (reshape_init_array_1): Likewise.
219
220 2011-03-29  Jason Merrill  <jason@redhat.com>
221
222         PR c++/48265
223         * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
224         the variable is constant before looking at its initializer.
225
226         PR c++/48319
227         * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
228
229         PR c++/48089
230         * semantics.c (potential_constant_expression_1): Change error about
231         use of *this in constructor into sorry.
232
233         PR c++/48296
234         * decl.c (cp_finish_decl): Defer validation of constexpr member
235         functions.
236         * class.c (finalize_literal_type_property): Validate them here.
237         * semantics.c (is_valid_constexpr_fn): Don't check completeness.
238
239         * semantics.c (is_valid_constexpr_fn): Specify input location.
240
241 2011-03-28  Jason Merrill  <jason@redhat.com>
242
243         PR c++/48313
244         * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
245         from overloaded function.
246
247         Core 1232
248         * call.c (build_array_conv): New.
249         (implicit_conversion): Use it.
250
251         * call.c (reference_binding): Allow direct binding to an array
252         rvalue.
253
254         Core 898
255         * parser.c (cp_parser_compound_statement): Add function_body parm.
256         Complain about non-body compound-stmt in constexpr fn.
257         (cp_parser_primary_expression, cp_parser_statement): Adjust.
258         (cp_parser_implicitly_scoped_statement): Adjust.
259         (cp_parser_function_body, cp_parser_try_block): Adjust.
260         (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
261         (cp_parser_objc_try_catch_finally_statement): Adjust.
262
263         Core 898
264         * semantics.c (constexpr_fn_retval): New.  Allow using-declaration
265         and using-definition.
266         (register_constexpr_fundef): Call it.
267
268         * except.c (build_noexcept_spec): Call cxx_constant_value after
269         converting to bool.
270
271 2011-03-25  Kai Tietz  <ktietz@redhat.com>
272
273         * lex.c (interface_strcmp): Handle dos-paths.
274         (handle_pragma_implementation): Use filename_cmp instead of
275         strcmp.
276         (in_main_input_context): Likewise.
277
278 2011-03-25  Jason Merrill  <jason@redhat.com>
279
280         Core 1135
281         * method.c (defaulted_late_check): Check for exception spec mismatch.
282         (defaultable_fn_check): Allow exception spec and virtual.
283         * class.c (check_for_override): A virtual dtor is non-trivial.
284
285         PR c++/48289
286         * pt.c (build_non_dependent_expr): Keep dereferences outside the
287         NON_DEPENDENT_EXPR.
288
289 2011-03-25  Kai Tietz  <ktietz@redhat.com>
290
291         * decl.c (decls_match): Replace target hook
292         call of comp_type_attributes by version in tree.c file.
293         * search.c (check_final_overrider): Likewise.
294         * typeck.c (structural_comptypes): Likewise.
295
296 2011-03-21  Kai Tietz  <ktietz@redhat.com>
297
298         PR target/12171
299         * cxx-pretty-print.c (pp_cxx_ptr_operator):
300         Display allowed attributes for function pointer types.
301         * error.c (dump_type_prefix): Likewise.
302
303         * tree.c (cxx_attribute_table): Adjust table.
304
305 2011-03-18  Jason Merrill  <jason@redhat.com>
306
307         PR c++/48162
308         * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
309
310         PR c++/48118
311         * call.c (build_over_call): Don't skip ck_rvalue.
312
313 2011-03-17  Jason Merrill  <jason@redhat.com>
314
315         PR c++/47504
316         * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
317         the conversion set TREE_OVERFLOW.
318
319         Core 1212
320         * semantics.c (finish_decltype_type): Return T&& for xvalue.
321         * typeck.c (unlowered_expr_type): Preserve cv-quals.
322
323         PR c++/48166
324         * decl.c (revert_static_member_fn): Strip function-cv-quals.
325
326 2011-03-16  Jason Merrill  <jason@redhat.com>
327
328         PR c++/48089
329         * semantics.c (potential_constant_expression_1): Don't allow *this
330         in a constructor.
331         (register_constexpr_fundef): Use potential_rvalue_constant_expression.
332
333         PR c++/47301
334         * decl.c (compute_array_index_type): Don't bother trying to deal
335         with literal classes in ABI v1.
336
337         PR c++/46336
338         * decl.c (duplicate_decls): Return NULL_TREE for clashing
339         C functions.
340
341         PR c++/47570
342         * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
343         use the generic binary expression handling.
344
345 2011-03-16  Diego Novillo  <dnovillo@google.com>
346
347         * Make-lang.in (CXX_PARSER_H): New.
348         (cp/parser.o): Add dependency on CXX_PARSER_H.
349         Add dependency on tree-pretty-print.h
350         (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
351         * cp-lang.c: Include parser.h.
352         * parser.c: Include parser.h.
353         (struct cp_token): Add bitfield purged_p.
354         Update all users.
355         Move to parser.h.
356         (CPP_PURGED): Remove.  Update all users.
357         (struct cp_lexer): Change field buffer to be a VEC of cp_token.
358         Remove field buffer_length.
359         Update all users.
360         Move to parser.h.
361         (struct tree_check): Move to parser.h.
362         (cp_token_position): Likewise.
363         (struct cp_token_cache): Likewise.
364         (CPP_KEYWORD): Likewise.
365         (CPP_TEMPLATE_ID): Likewise.
366         (CPP_NESTED_NAME_SPECIFIER): Likewise.
367         (N_CP_TTYPES): Likewise.
368         (enum cp_parser_status_kind): Likewise.
369         (struct cp_parser_context): Likewise.
370         (struct cp_default_arg_entry_d): Likewise.
371         (struct cp_unparsed_functions_entry_d): Likewise.
372         (struct cp_parser): Likewise.
373         (cp_lexer_dump_tokens): New.
374         (cp_lexer_debug_tokens): New.
375         (cp_lexer_finished_p): New.
376         (cp_lexer_alloc): Factor out of cp_lexer_new_main.
377         (cp_lexer_new_main): Re-write main lexing loop to push
378         tokens into the new VEC buffer.
379         (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
380         Do not abort if the token type is not recognized, just print
381         its code.
382         * parser.h: New file.
383         * config-lang.in (gtfiles): Add cp/parser.h.
384
385 2011-03-16  Jason Merrill  <jason@redhat.com>
386
387         Core 1148
388         * typeck.c (check_return_expr): Fix conditions for setting
389         LOOKUP_PREFER_RVALUE.
390
391         * call.c (build_over_call): Remove require_complete_type_sfinae call.
392
393         PR c++/48132
394         * decl.c (check_array_designated_initializer): Allow integer index.
395         (reshape_init_array_1): Set index on the elements.
396
397 2011-03-16  Jason Merrill  <jason@redhat.com>
398
399         PR c++/48113
400         * typeck.c (convert_for_initialization): Use
401         perform_implicit_conversion_flags.
402         * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
403         rvaluedness_matches_p on ck_rvalue.
404         (convert_like_real) [ck_rvalue]: And restore it here.
405
406         PR c++/48115
407         * call.c (convert_arg_to_ellipsis): Handle incomplete type.
408
409 2011-03-16  Jason Merrill  <jason@redhat.com>
410
411         * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
412         committed to this tentative parse.
413
414         PR c++/47999
415         * semantics.c (finish_call_expr): Preserve reference semantics
416         in templates.
417
418         * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
419
420 2011-03-16  Jakub Jelinek  <jakub@redhat.com>
421
422         * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
423         DECL_LANG_SPECIFIC is NULL.
424
425 2011-03-15  Jason Merrill  <jason@redhat.com>
426
427         Core 1074
428         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
429         check value_dependent_expression_p on the operand.
430
431         * semantics.c (push_cx_call_context): Return bool.
432         (cxx_eval_call_expression): Handle excess depth.
433
434         Core 1191
435         * method.c (synthesized_method_walk): Cleanups don't affect the
436         triviality of a constructor, but do affect deletion and exception
437         specification.
438
439 2011-03-15  Rodrigo Rivas Costa  <rodrigorivascosta@gmail.com>
440
441         * decl2.c (cp_check_const_attributes): New.
442         (cplus_decl_attributes): Call cp_check_const_attributes.
443
444 2011-03-15  Jason Merrill  <jason@redhat.com>
445
446         PR c++/34758
447         * call.c (convert_default_arg): Use DECL_ORIGIN of fn.  Check for
448         recursion first.
449         (push_defarg_context, pop_defarg_context): New.
450         * parser.c (cp_parser_late_parsing_default_args): Use them.
451         * cp-tree.h: Declare them.
452
453 2011-03-11  Dodji Seketeli  <dodji@redhat.com>
454
455         * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
456         the argument of the indirection operator should not be dependent.
457         Fix the comment.
458
459 2011-03-11  Jason Merrill  <jason@redhat.com>
460
461         PR c++/47125
462         * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
463
464         PR c++/47144
465         * parser.c (cp_parser_template_type_arg): Set
466         type_definition_forbidden_message.
467
468         PR c++/47808
469         * decl.c (compute_array_index_type): Discard folding
470         if it didn't produce a constant.
471
472 2011-03-11  Jakub Jelinek  <jakub@redhat.com>
473
474         PR c++/48035
475         * init.c (build_zero_init_1): Extracted from build_zero_init.
476         Add FIELD_SIZE argument, if non-NULL and field bit_position
477         as not smaller than that, don't add that field's initializer.
478         Pass DECL_SIZE as last argument to build_zero_init_1
479         for DECL_FIELD_IS_BASE fields.
480         (build_zero_init): Use build_zero_init_1.
481
482 2011-03-10  Jason Merrill  <jason@redhat.com>
483
484         PR c++/48029
485         * pt.c (iterative_hash_template_arg): Remove special case for
486         ARRAY_TYPE.
487
488         PR c++/47198
489         * parser.c (cp_parser_single_declaration): Just return if
490         cp_parser_parse_and_diagnose_invalid_type_name complained.
491
492 2011-03-09  Jason Merrill  <jason@redhat.com>
493
494         PR c++/44629
495         * pt.c (unify): An unresolved overload is a nondeduced context.
496
497 2011-03-09  Martin Jambor  <mjambor@suse.cz>
498
499         PR tree-optimization/47714
500         * method.c (use_thunk): Clear addressable flag of thunk arguments.
501
502 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
503
504         PR c++/47705
505         * pt.c (convert_nontype_argument): Only call decay_conversion on
506         arrays.
507
508 2011-03-08  Jason Merrill  <jason@redhat.com>
509
510         PR c++/47488
511         * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
512
513         PR c++/47705
514         * pt.c (convert_nontype_argument): Don't crash on non-pointer
515         argument to pointer parameter.
516
517         PR c++/45651
518         * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
519         !TREE_PUBLIC decls.
520
521 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
522
523         PR c++/47957
524         * name-lookup.c (binding_to_template_parms_of_scope_p): Only
525         consider scopes of primary template definitions.  Adjust comments.
526
527 2011-03-07  Jason Merrill  <jason@redhat.com>
528
529         PR c++/48003
530         * pt.c (convert_nontype_argument): Fix -fpermissive allowing
531         integer overflow.
532         * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
533
534         PR c++/48015
535         * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
536
537         PR c++/48008
538         * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
539         (write_CV_qualifiers_for_type): Not here.
540
541 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
542
543         * lang-specs.h: Match -save-temps* instead of -save-temps.
544
545 2011-03-05  Jason Merrill  <jason@redhat.com>
546
547         * mangle.c (write_expression): Change ABI v6 to v5.
548         (write_type): Likewise.
549
550 2011-03-04  Jan Hubicka  <jh@suse.cz>
551
552         PR lto/47497
553         * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
554         and cgraph_add_thunk.
555         * method.c (make_alias_for_thunk, use_thunk): Likewise.
556         * mangle.c (mangle_decl): Likewise.
557
558 2011-03-04  Jason Merrill  <jason@redhat.com>
559
560         PR c++/47971
561         * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
562         (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
563
564         PR c++/46220
565         * search.c (check_final_overrider): Allow pointer to same incomplete
566         class type with different cv-quals.
567
568 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
569
570         PR c++/47974
571         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
572
573 2011-03-03  Jason Merrill  <jason@redhat.com>
574
575         PR c++/47950
576         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
577
578 2011-03-02  Jason Merrill  <jason@redhat.com>
579
580         PR c++/47950
581         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
582
583         PR c++/47774
584         * tree.c (build_vec_init_elt): Split out from...
585         (build_vec_init_expr): ...here.
586         (diagnose_non_constexpr_vec_init): New fn.
587         * semantics.c (potential_constant_expression_1): Use it.
588         * cp-tree.h: Declare it.
589
590 2011-03-01  Jason Merrill  <jason@redhat.com>
591
592         PR c++/46159
593         * parser.c (cp_parser_primary_expression): Don't warn about a
594         failed tentative parse.
595
596         PR c++/47200
597         * semantics.c (cxx_bind_parameters_in_call): Don't call
598         adjust_temp_type on non-constant args.
599
600         PR c++/47851
601         * call.c (standard_conversion): Provide requested cv-quals on
602         class rvalue conversion.
603
604         PR c++/46282
605         * decl2.c (grokbitfield): Handle type-dependent width.
606
607 2011-02-28  Jason Merrill  <jason@redhat.com>
608
609         PR c++/47873
610         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
611         after checking for a non-thunk.
612
613 2011-02-26  Jason Merrill  <jason@redhat.com>
614
615         PR c++/47904
616         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
617         * pt.c (iterative_hash_template_arg): And hash it.
618
619         PR c++/47897
620         * semantics.c (non_const_var_error): Split out from...
621         (cxx_eval_constant_expression): ...here.
622         (potential_constant_expression_1) [VAR_DECL]: Use it.
623         Allow dependent variables.
624
625 2011-02-24  Jason Merrill  <jason@redhat.com>
626
627         * parser.c (cp_parser_constant_expression): Set
628         non_integral_constant_expression correctly for C++0x too.
629         (cp_parser_static_assert): Allow non-constant expression.
630         (cp_parser_direct_declarator): Expect non_constant_p to be set
631         properly for C++0x.
632         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
633         * semantics.c (maybe_constant_value): Check type_unknown_p too.
634         (potential_rvalue_constant_expression): New.
635         (require_potential_rvalue_constant_expression): New.
636
637 2011-02-23  Jason Merrill  <jason@redhat.com>
638
639         * cp-tree.h (DECL_PARM_LEVEL): New.
640         (struct lang_decl_parm): Add level field.
641         * name-lookup.c (function_parm_depth): New fn.
642         * name-lookup.h: Declare it.
643         * parser.c (cp_parser_parameter_declaration_list): Use it.
644         * mangle.c (struct globals): Add parm_depth field.
645         (write_bare_function_type): Adjust it.
646         (write_expression): Include the level delta in PARM_DECL mangling
647         for abi >= 6.
648
649         * semantics.c (finish_decltype_type): Remove shortcut for decltype
650         of id-expression.
651         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
652
653 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
654
655         PR c++/46868
656         * parser.c (cp_parser_class_specifier): Require a closing brace
657         to attempt error recovery.
658
659 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
660
661         PR c++/47833
662         * pt.c (struct pending_template): Add chain_next GTY option.
663         * decl.c (struct named_label_use_entry): Likewise.
664
665 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
666
667         PR c++/47242
668         * semantics.c (build_lambda_object): Bail out if a field is
669         error_mark_node.
670
671 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
672
673         PR c++/47666
674         * class.c (dfs_declare_virt_assop_and_dtor)
675         (declare_virt_assop_and_dtor): New static functions.
676         (add_implicitly_declared_members): Use
677         declare_virt_assop_and_dtor.
678
679 2011-02-21  Jason Merrill  <jason@redhat.com>
680
681         PR c++/47207
682         * decl2.c (decl_constant_var_p): A constexpr var needs an
683         initializer to be constant.
684         * semantics.c (cxx_eval_constant_expression): Complain about
685         constexpr var used in its own initializer.
686         * call.c (set_up_extended_ref_temp): Set
687         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
688
689 2011-02-20  Jason Merrill  <jason@redhat.com>
690
691         PR c++/47199
692         * semantics.c (cxx_eval_call_expression): Call
693         cxx_eval_constant_expression in trivial shortcut.
694
695         PR c++/46831
696         * call.c (convert_class_to_reference): Don't try to set up a
697         second conv sequence for non-viable candidates.
698
699         PR c++/47703
700         * error.c (location_of): Handle non-tagged types.
701
702         PR c++/46472
703         * method.c (process_subob_fn): Instantiate constexpr templates.
704         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
705
706 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
707
708         PR c++/46394
709         * pt.c (tsubst_pack_expansion): do not use
710         cp_tree_equal/same_type_p to detect an expansion of a parameter
711         pack.
712
713 2011-02-19  Jason Merrill  <jason@redhat.com>
714
715         PR c++/47503
716         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
717
718 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
719
720         PR c++/47795
721         * semantics.c (finish_non_static_data_member): Early return if
722         object is error_mark_node.
723
724 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
725
726         PR c++/47208
727         * pt.c (do_auto_deduction): Do not mention error_mark_node in
728         diagnostics.
729         * semantics.c (finish_id_expression): Do not pass erroneous decl
730         to decl_constant_var_p.
731
732 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
733
734         PR c++/47783
735         * cvt.c (convert_from_reference): Call mark_exp_read.
736
737 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
738
739         PR c++/47172
740         * pt.c (finish_call_expr): Consider a call expression that has a
741         dependent "this" pointer as being dependent.  Add comments.
742         (dependent_type_p, type_dependent_expression_p): Update comments.
743
744 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
745
746         PR c++/47326
747         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
748         expansion arguments are not evaluated.
749
750 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
751
752         PR c++/47704
753         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
754         instead of TYPE_LANG_FLAG_3.
755         * pt.c (lookup_template_class): Copy over
756         ENUM_FIXED_UNDERLYING_TYPE_P.
757
758 2011-02-15  Jason Merrill  <jason@redhat.com>
759
760         PR c++/46807
761         * method.c (synthesized_method_walk): Always exit early for
762         trivial fn in C++98 mode.
763
764 2011-02-14  Jason Merrill  <jason@redhat.com>
765
766         PR c++/47482
767         * parser.c (cp_parser_enumerator_definition): Call
768         fold_non_dependent_expr.
769
770 2011-02-09  Jason Merrill  <jason@redhat.com>
771
772         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
773         * semantics.c (finish_fname): Only return the name if we're in
774         a function.
775
776         * decl.c (build_enumerator): Don't perform integral promotions on
777         non-integral constants.
778
779         * cvt.c (convert_to_void): Handle null op1.
780
781         * class.c (type_has_constexpr_default_constructor): Make sure the
782         caller stripped an enclosing array.
783         * init.c (perform_member_init): Strip arrays before calling it.
784
785         PR c++/47511
786         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
787
788 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
789
790         PR c++/47398
791         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
792         template parameters in account.
793
794 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
795
796         PR c++/46890
797         * parser.c (cp_parser_class_specifier): Fix setting of
798         want_semicolon.
799
800 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
801
802         PR c++/47416
803         * semantics.c (build_data_member_initialization): Handle
804         STATEMENT_LIST always instead of just for CLEANUP_BODY.
805
806 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
807
808         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
809         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
810
811 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
812
813         PR c++/47311
814         * cp-tree.h (fixup_template_parms): Declare.
815         * pt.c (end_template_parm_list): Do not fixup template parms here.
816         (fixup_template_parms): Remove static. Fix typo in the
817         comments. Remove useless code statement.
818         (fixup_template_parm): For a template template parameter, fixup
819         its attributes before fixing up its type.
820         * parser.c
821         (cp_parser_template_declaration_after_export): After parsing
822         template parameters fixup their types.
823
824 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
825
826         PR c++/47476
827         * semantics.c (potential_constant_expression_1): Handle
828         TRUTH_XOR_EXPR.
829
830 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
831
832         PR c++/43601
833         * semantics.c (expand_or_defer_fn_1): Handle it.
834         * decl2.c (decl_needed_p): Likewise.
835
836 2011-01-21  Jason Merrill  <jason@redhat.com>
837
838         PR c++/47041
839         * semantics.c (build_constexpr_constructor_member_initializers):
840         Handle trivial copy.
841
842 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
843
844         PR c++/47388
845         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
846         assume init must be NULL if scope is NULL.
847         (begin_range_for_stmt): Likewise.
848
849 2011-01-21  Jason Merrill  <jason@redhat.com>
850
851         PR c++/46552
852         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
853
854         PR c++/46977
855         * semantics.c (potential_constant_expression_1): Split out from
856         potential_constant_expression.  Add want_rval parm.  Handle
857         template expression forms.  Don't enforce restriction on address
858         of automatic variable here.  Add a couple of diagnostics that
859         had been missing.
860         (require_potential_constant_expression): New entry point.
861         (build_data_member_initialization, register_constexpr_fundef): Adjust.
862         (maybe_constant_value): Check potential_constant_expression.
863         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
864         * tree.c (build_vec_init_expr): Adjust.
865
866 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
867
868         PR c++/47303
869         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
870         or DECL_EXTERNAL.
871
872 2011-01-17  Jason Merrill  <jason@redhat.com>
873
874         PR c++/47067
875         * semantics.c (base_field_constructor_elt): New fn.
876         (cxx_eval_bare_aggregate): Use it.
877         (build_data_member_initialization): Leave COMPONENT_REF for
878         vfield inits.
879
880 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
881
882         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
883         workaround.
884
885 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
886             Jonathan Wakely  <jwakely.gcc@gmail.com>
887
888         PR c++/33558
889         * decl.c (grokdeclarator): Reject mutable reference members.
890
891 2011-01-14  Jason Merrill  <jason@redhat.com>
892
893         PR c++/47289
894         * pt.c (coerce_template_parms): Fix error recovery.
895
896         PR c++/46903
897         * typeck2.c (check_narrowing): Only check arithmetic types.
898
899         PR c++/46688
900         * tree.c (build_vec_init_expr): Handle flexible array
901         properly.
902
903 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
904
905         PR c++/47213
906         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
907         TYPE_MAIN_DECL instead of TYPE_NAME.
908         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
909         * decl2.c (determine_visibility): Add check
910         of CLASS_TYPE_P for underlying_type.
911
912 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
913
914         * cp-tree.h (begin_for_scope): New prototype.
915         (begin_for_stmt): Update prototype.
916         (begin_range_for_stmt): Update prototype.
917         * init.c (build_vec_init): Update call to begin_for_stmt.
918         * parser.c (cp_parser_for): New.
919         (cp_parser_c_for): Add three new parameters.
920         (cp_parser_range_for): Likewise. Most parsing code removed.
921         (cp_parser_iteration_statement): Call cp_parser_for instead of
922         cp_parser_c_for and cp_parser_range_for.
923         (cp_parser_for_init_statement): Add new parameter and return type.
924         (cp_parser_block_declaration): Update call to
925         cp_parser_simple_declaration.
926         (cp_parser_simple_declaration): Add new parameter.
927         Update call to cp_parser_init_declarator.
928         (cp_parser_init_declarator): Add new parameter.
929         * pt.c (tsubst_expr): Update call to begin_for_stmt.
930         * semantics.c (begin_for_scope): New.
931         (begin_for_stmt): Add two new parameters.
932         (begin_range_for_stmt): Likewise.
933
934 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
935
936         * parser.c (cp_parser_objc_at_property_declaration): Improved
937         error message.
938
939 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
940
941         PR debug/46955
942         * cp-lang.c (get_template_innermost_arguments_folded)
943         (get_template_argument_pack_elems_folded)
944         (template_arg_needs_folding, fold_cplus_constants): New static
945         functions.
946         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
947         get_template_innermost_arguments_folded.
948         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
949         get_template_argument_pack_elems_folded.
950
951 2011-01-11  Jason Merrill  <jason@redhat.com>
952
953         PR c++/46658
954         * init.c (build_new_1): Handle value-init in templates differently.
955
956         PR c++/45520
957         * tree.c (maybe_dummy_object): Check current_class_ref against
958         context, not current_class_type.
959
960 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
961
962         PR objc/47078
963         * parser.c (cp_parser_objc_typename): If the type is unknown, for
964         error recovery purposes behave as if it was not specified so that
965         the default type is used.
966
967 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
968
969         PR c++/47022
970         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
971         for the second build_x_va_arg argument.
972
973 2011-01-05  Tom Tromey  <tromey@redhat.com>
974
975         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
976         (lvalue_or_else): Likewise.
977
978 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
979
980         PR target/38662
981         * tree.c (cxx_type_hash_eq):
982         Allow METHOD_TYPE, too.
983
984 \f
985 Copyright (C) 2011 Free Software Foundation, Inc.
986
987 Copying and distribution of this file, with or without modification,
988 are permitted in any medium without royalty provided the copyright
989 notice and this notice are preserved.