c-decl.c (c_decl_attributes): Also add "omp declare target" attribute for DECL_EXTERN...
[platform/upstream/gcc.git] / gcc / cp / ChangeLog
1 2015-03-19  Jakub Jelinek  <jakub@redhat.com>
2
3         * decl2.c (cplus_decl_attributes): Also add "omp declare target"
4         attribute for DECL_EXTERNAL VAR_DECLs.
5
6 2015-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
7
8         PR c++/65340
9         * call.c (build_over_call): Pass the tsubst_flags_t argument to
10         mark_used.
11         * decl2.c (mark_used): Inline the require_deduced_type call and
12         guard the error call.
13
14 2015-03-16  Jason Merrill  <jason@redhat.com>
15
16         PR c++/65061
17         * parser.c (cp_parser_template_name): Call strip_using_decl.
18
19 2015-03-16  Marek Polacek  <polacek@redhat.com>
20
21         DR 1688
22         PR c++/65327
23         * decl.c (grokdeclarator): Allow volatile and constexpr together.
24
25 2015-03-12  Paolo Carlini  <paolo.carlini@oracle.com>
26
27         PR c++/65323
28         * decl.c (check_default_argument): Don't call
29         maybe_warn_zero_as_null_pointer_constant.
30
31 2015-03-11  Aldy Hernandez  <aldyh@redhat.com>
32
33         * cp-gimplify.c (simple_empty_class_p): New.
34         * cp-gimplify.c (cp_gimplify_expr): Handle RETURN_EXPR.  Abstract
35         the code for empty class copies into simple_empty_class_p, and
36         adapt it to handle COMPOUND_EXPRs.
37
38 2015-03-10  Paolo Carlini  <paolo.carlini@oracle.com>
39
40         PR c++/65370
41         * decl.c (duplicate_decls): Call check_redeclaration_no_default_args
42         only if the location of newdecl doesn't match the location of olddecl.
43
44 2015-03-10  Jakub Jelinek  <jakub@redhat.com>
45
46         PR c++/65127
47         * parser.c (parsing_nsdmi): Don't return true if current_class_ptr
48         is not a PARM_DECL.
49
50 2015-03-10  Jason Merrill  <jason@redhat.com>
51
52         PR c++/65333
53         DR 1558
54         * pt.c (dependent_type_p_r): Check both class and alias template args.
55
56 2015-03-10  Jakub Jelinek  <jakub@redhat.com>
57
58         PR c/65120
59         * parser.c (cp_parser_binary_expression): Check for tcc_comparison
60         before preparing arguments to warn_logical_not_parentheses.
61         Use maybe_constant_value on rhs.
62
63 2015-03-09  Jason Merrill  <jason@redhat.com>
64
65         PR c++/65339
66         * call.c: Don't call maybe_resolve_dummy when calling a constructor.
67
68 2015-03-09  Jakub Jelinek  <jakub@redhat.com>
69
70         PR c/65120
71         * parser.c (cp_parser_binary_expression): Don't warn for
72         !!x == y or !b == y where b is bool.
73
74 2015-03-06  Aldy Hernandez  <aldyh@redhat.com>
75
76         * ptree.c (cxx_print_lambda_node): New.
77         (cxx_print_xnode): Handle LAMBDA_EXPR.
78
79 2015-03-03  Aldy Hernandez  <aldyh@redhat.com>
80
81         PR c++/65295
82         * constexpr.c (cxx_eval_constant_expression): Remove assert in
83         RESULT_DECL handling.
84
85 2015-02-26  Marek Polacek  <polacek@redhat.com>
86
87         PR c++/65202
88         * constexpr.c (cxx_eval_constant_expression): Don't evaluate
89         a RETURN_EXPR if its operand is null.
90
91 2015-02-25  Jason Merrill  <jason@redhat.com>
92
93         PR c++/65209
94         * decl2.c (constrain_visibility) [VISIBILITY_ANON]: Clear
95         DECL_COMDAT.
96         (constrain_visibility_for_template): Handle reference arguments.
97
98         PR debug/58315
99         * decl.c (start_preparsed_function): Use create_artificial_label
100         for cdtor_label.
101
102 2015-02-17  Paolo Carlini  <paolo.carlini@oracle.com>
103             Jakub Jelinek  <jakub@redhat.com>
104
105         PR c++/65075
106         * constexpr.c (check_constexpr_bind_expr_vars): Allow
107         implicit typedefs for lambda types.
108
109 2015-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
110
111         PR c++/60894
112         * decl.c (lookup_and_check_tag): Use strip_using_decl.
113
114 2015-02-13  Jason Merrill  <jason@redhat.com>
115
116         PR c++/65054
117         * pt.c (template_args_equal): Look through conversions here.
118         * tree.c (cp_tree_equal): Not here.
119
120 2015-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
121
122         PR c++/60211
123         * parser.c (cp_parser_pragma): Diagnose PRAGMA_IVDEP at
124         pragma_external context.
125
126 2015-02-13  Jason Merrill  <jason@redhat.com>
127
128         PR c++/65051
129         * call.c (reference_binding): Don't look for bad conversion
130         if TO is incomplete.
131
132 2015-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
133
134         PR c++/64970
135         * decl.c (make_typename_type): Pass tsubst_flags_t argument
136         to lookup_template_class.
137
138 2015-02-13  Jakub Jelinek  <jakub@redhat.com>
139
140         PR ipa/65034
141         * decl.c (start_preparsed_function): Use void_type_node instead
142         of NULL_TREE as LABEL_DECL type.
143
144 2015-02-12  Jason Merrill  <jason@redhat.com>
145
146         PR c++/64898
147         * mangle.c (write_mangled_name): Fix test for variable template
148         instantiation.
149
150         * decl.c (begin_destructor_body): Condition clobber on
151         -flifetime-dse.
152
153 2015-02-12 Andrea Azzarone <azzaronea@gmail.com>
154
155         PR c++/64959
156         * parser.c (lookup_literal_operator): Return all candidates.
157         (cp_parser_userdef_char_literal): Simplify error handling.
158         (cp_parser_userdef_numeric_literal):  Pass tf_warning_or_error.
159         (cp_parser_userdef_string_literal): Pass tf_warning_or_error.
160         Also give higher priority to standard string UDL operator.
161
162 2015-02-12  Jakub Jelinek  <jakub@redhat.com>
163
164         PR debug/55541
165         * cp-tree.h (BLOCK_OUTER_CURLY_BRACE_P): Define.
166         * decl.c (poplevel): If functionbody, try not to create an extra
167         BLOCK for function body and use subblocks as that, if it is non-NULL
168         and doesn't have siblings.  Set BLOCK_OUTER_CURLY_BRACE_P flag.
169         (outer_curly_brace_block): Use BLOCK_OUTER_CURLY_BRACE_P flag.
170
171         PR sanitizer/64984
172         * except.c (check_noexcept_r): Return NULL for internal
173         calls.
174
175 2015-02-10  Jason Merrill  <jason@redhat.com>
176
177         PR c++/64994
178         * constexpr.c (cxx_eval_call_expression): Walk the clone list.
179
180 2015-02-10  Jan Hubicka  <hubicka@ucw.cz>
181
182         PR ipa/64982
183         * method.c (use_thunk): Do not check for stdarg thunks.
184
185 2015-02-06  Jason Merrill  <jason@redhat.com>
186
187         PR c++/64899
188         * init.c (build_vec_init): Handle default-initialized array with
189         constexpr default constructor.
190
191 2015-02-04  Jakub Jelinek  <jakub@redhat.com>
192
193         PR c/64824
194         PR c/64868
195         * parser.c (cp_parser_omp_atomic): Handle RDIV_EXPR.
196
197 2015-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
198
199         PR c++/64877
200         * typeck.c (cp_build_binary_op): Avoid spurious -Waddress warnings
201         for generated expressions.
202
203 2015-02-02  Ville Voutilainen  <ville.voutilainen@gmail.com>
204
205         PR c++/64901
206         * decl.c (duplicate_decls): Also duplicate DECL_FINAL_P and
207         DECL_OVERRIDE_P.
208
209 2015-02-02  Jason Merrill  <jason@redhat.com>
210
211         * tree.c (handle_abi_tag_attribute): Diagnose invalid arguments.
212
213 2015-01-30  Joseph Myers  <joseph@codesourcery.com>
214
215         * class.c, except.c, parser.c, pt.c: All callers of fatal_error
216         changed to pass input_location as first argument.
217
218 2015-01-29  Jakub Jelinek  <jakub@redhat.com>
219
220         PR c++/64717
221         * cp-ubsan.c (cp_ubsan_instrument_vptr): Don't wrap vptr
222         into SAVE_EXPR.
223
224 2015-01-29  Jason Merrill  <jason@redhat.com>
225
226         PR c++/49508
227         * semantics.c (finish_return_stmt): Suppress -Wreturn-type on
228         erroneous return statement.
229
230         PR c++/64521
231         * repo.c (repo_emit_p): It's OK for a clone to be extern at this
232         point.
233
234 2015-01-27  Caroline Tice  <cmtice@google.com>
235
236         Committing VTV Cywin/Ming patch for Patrick Wollgast
237         * vtable-class-hierarchy.cc (vtv_generate_init_routine): Add
238         check for not TARGET_PECOFF at the VTV_PREINIT_PRIORITY checks.
239
240 2015-01-27  Jason Merrill  <jason@redhat.com>
241
242         PR c++/58597
243         * lambda.c (maybe_add_lambda_conv_op): Check cfun rather than
244         current_function_decl.
245
246         PR c++/63889
247         * pt.c (finish_template_variable): Move from semantics.c.
248         Handle multiple template arg levels.  Handle coercion here.
249         (lookup_template_variable): Not here.
250
251 2015-01-23  Jason Merrill  <jason@redhat.com>
252
253         PR c++/64314
254         PR c++/57510
255         * typeck2.c (split_nonconstant_init_1): Remove a sub-CONSTRUCTOR
256         that has been completely split out.
257
258         PR c++/64701
259         * constexpr.c (cxx_eval_constant_expression): Don't crash on C++
260         statement codes.
261
262         PR c++/64727
263         * constexpr.c (cxx_eval_constant_expression): Allow for lvalue use
264         of CONST_DECL.
265
266 2015-01-21  Jason Merrill  <jason@redhat.com>
267
268         PR c++/64603
269         * constexpr.c (cxx_eval_constant_expression): Only shortcut
270         constant CONSTRUCTORs.
271
272         PR c++/64647
273         * constexpr.c (ensure_literal_type_for_constexpr_object): Don't
274         give a hard error in a template instantiation.
275
276 2015-01-21  Richard Biener  <rguenther@suse.de>
277
278         PR middle-end/64313
279         * decl.c (duplicate_decls): Call set_builtin_decl_declared_p
280         for builtins the user declared correctly.
281
282 2015-01-16  Paolo Carlini  <paolo.carlini@oracle.com>
283
284         PR c++/58614
285         * pt.c (unify): When BRACE_ENCLOSED_INITIALIZER_P (arg), handle
286         TREE_TYPE (elt) == error_mark_node.
287
288 2015-01-15  Jan Hubicka  <hubicka@ucw.cz>
289
290         PR tree-optimization/62053
291         * tree.c (build_cplus_array_type): Layout type after variants are set.
292
293 2015-01-15  Jakub Jelinek  <jakub@redhat.com>
294
295         * cp-gimplify.c (cp_genericize_r): Call
296         cp_ubsan_maybe_instrument_member_call for member calls.
297         (cp_ubsan_check_member_access_r): New function.
298         (cp_genericize_tree): Call cp_ubsan_instrument_member_accesses.
299         * cp-tree.h (cp_ubsan_maybe_instrument_member_call,
300         cp_ubsan_instrument_member_accesses,
301         cp_ubsan_maybe_instrument_downcast,
302         cp_ubsan_maybe_instrument_cast_to_vbase): New prototypes.
303         * cp-ubsan.c: New file.
304         * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-ubsan.o.
305         * constexpr.c (cxx_eval_call_expression): Return void_node
306         for IFN_UBSAN_VPTR.
307         (potential_constant_expression_1): Return true for
308         UBSAN_NULL, UBSAN_BOUNDS and UBSAN_VPTR internal calls.
309         * typeck.c (build_class_member_access_expr): Provide locus
310         for COMPONENT_REFs.
311         (build_static_cast_1): Instrument downcasts.
312         * class.c (build_base_path): For -fsanitize=vptr and !fixed_type_p
313         add ubsan instrumentation for virtual_access.
314         * call.c: Include internal-fn.h.
315         (set_flags_from_callee): Handle internal calls.
316
317 2015-01-15  Momchil Velikov  <momchil.velikov@gmail.com>
318
319         PR c++/59366
320         * name-lookup.c (pushdecl_maybe_friend_1): Hide friend functions
321         and function templates, declared only in the class.
322         * decl.c (duplicate_decls): Reveal hidden friend functions or
323         function templates, if they are redeclared outside the class.
324
325 2015-01-15  Jason Merrill  <jason@redhat.com>
326
327         PR c++/64356
328         * constexpr.c (cxx_eval_binary_expression): Fix pasto.
329
330         PR c++/63283
331         * constexpr.c (potential_constant_expression_1): Handle reference
332         args in templates.
333
334 2015-01-15  Thomas Schwinge  <thomas@codesourcery.com>
335             James Norris  <jnorris@codesourcery.com>
336             Cesar Philippidis  <cesar@codesourcery.com>
337             Ilmir Usmanov  <i.usmanov@samsung.com>
338             Jakub Jelinek  <jakub@redhat.com>
339
340         * parser.c: Include "gomp-constants.h".
341         (cp_parser_omp_clause_map): Use enum gomp_map_kind instead of enum
342         omp_clause_map_kind.  Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.
343         Use OMP_CLAUSE_SET_MAP_KIND.
344         (cp_parser_omp_construct, cp_parser_pragma): Handle
345         PRAGMA_OACC_CACHE, PRAGMA_OACC_DATA, PRAGMA_OACC_ENTER_DATA,
346         PRAGMA_OACC_EXIT_DATA, PRAGMA_OACC_KERNELS, PRAGMA_OACC_PARALLEL,
347         PRAGMA_OACC_LOOP, PRAGMA_OACC_UPDATE, PRAGMA_OACC_WAIT.
348         (cp_parser_omp_clause_name): Handle "async", "copy", "copyout",
349         "create", "delete", "deviceptr", "host", "num_gangs",
350         "num_workers", "present", "present_or_copy", "pcopy",
351         "present_or_copyin", "pcopyin", "present_or_copyout", "pcopyout",
352         "present_or_create", "pcreate", "vector_length", "wait".
353         (OACC_DATA_CLAUSE_MASK, OACC_ENTER_DATA_CLAUSE_MASK)
354         (OACC_EXIT_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK)
355         (OACC_LOOP_CLAUSE_MASK, OACC_PARALLEL_CLAUSE_MASK)
356         (OACC_UPDATE_CLAUSE_MASK, OACC_WAIT_CLAUSE_MASK): New macros.
357         (cp_parser_omp_var_list_no_open): Handle OMP_CLAUSE__CACHE_.
358         (cp_parser_oacc_data_clause, cp_parser_oacc_data_clause_deviceptr)
359         (cp_parser_oacc_clause_vector_length, cp_parser_oacc_wait_list)
360         (cp_parser_oacc_clause_wait, cp_parser_omp_clause_num_gangs)
361         (cp_parser_omp_clause_num_workers, cp_parser_oacc_clause_async)
362         (cp_parser_oacc_all_clauses, cp_parser_oacc_cache)
363         (cp_parser_oacc_data, cp_parser_oacc_enter_exit_data)
364         (cp_parser_oacc_kernels, cp_parser_oacc_loop)
365         (cp_parser_oacc_parallel, cp_parser_oacc_update)
366         (cp_parser_oacc_wait): New functions.
367         * cp-tree.h (finish_oacc_data, finish_oacc_kernels)
368         (finish_oacc_parallel): New prototypes.
369         * semantics.c: Include "gomp-constants.h".
370         (handle_omp_array_sections): Handle GOMP_MAP_FORCE_DEVICEPTR.  Use
371         GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.  Use
372         OMP_CLAUSE_SET_MAP_KIND.
373         (finish_omp_clauses): Handle OMP_CLAUSE_ASYNC,
374         OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_WAIT, OMP_CLAUSE__CACHE_.
375         Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.
376         (finish_oacc_data, finish_oacc_kernels, finish_oacc_parallel): New
377         functions.
378
379 2015-01-14  Paolo Carlini  <paolo.carlini@oracle.com>
380
381         PR c++/58671
382         * decl2.c (var_defined_without_dynamic_init): Handle gracefully
383         self-initialization.
384
385 2015-01-13  Jason Merrill  <jason@redhat.com>
386
387         PR c++/64356
388         PR libstdc++/58777
389         * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
390         pointer expressions.
391         (cxx_eval_increment_expression): Likewise.
392
393         PR c++/64514
394         * pt.c (coerce_template_parameter_pack): Return NULL for a
395         zero-length fixed parameter pack with a pack expansion arg.
396
397         PR c++/64520
398         * pt.c (unify): Don't try to deduce to std::initializer_list<T...>.
399
400 2015-01-12  Jason Merrill  <jason@redhat.com>
401
402         PR c++/64547
403         * constexpr.c (cxx_eval_call_expression): A call to a void
404         function doesn't need to return a value.
405
406 2015-01-09  Michael Collison  <michael.collison@linaro.org>
407
408         * call.c: Include hash-set.h, machmode.h, vec.h, double-int.h,
409         input.h, alias.h, symtab.h, options.h, fold-const.h,
410         wide-int.h, and inchash.h due to flattening of tree.h.
411         * class.c: Ditto.
412         * constexpr.c: Ditto.
413         * cp-array-notation.c: Ditto.
414         * cp-gimplify.c: Ditto.
415         * cp-lang.c: Ditto.
416         * cp-objcp-common.c: Ditto.
417         * cvt.c: Ditto.
418         * decl2.c: Ditto.
419         * decl.c: Ditto.
420         * dump.c: Ditto.
421         * error.c: Ditto.
422         * except.c: Ditto.
423         * expr.c: Ditto.
424         * friend.c: Ditto.
425         * init.c: Ditto.
426         * lambda.c: Ditto.
427         * lex.c: Ditto.
428         * mangle.c: Ditto.
429         * name-lookup.c: Ditto.
430         * optimize.c: Ditto.
431         * parser.c: Ditto.
432         * pt.c: Ditto.
433         * ptree.c: Ditto.
434         * repo.c: Ditto.
435         * rtti.c: Ditto.
436         * search.c: Ditto.
437         * semantics.c: Ditto.
438         * tree.c: Ditto.
439         * typeck2.c: Ditto.
440         * typeck.c: Ditto.
441
442 2015-01-08  Jason Merrill  <jason@redhat.com>
443
444         * cp-gimplify.c (cp_genericize): Use do_ubsan_in_current_function.
445         * decl.c (compute_array_index_type): Likewise.
446         * init.c (build_vec_init): Likewise.
447         * typeck.c (cp_build_binary_op): Likewise.
448
449 2015-01-08  Jason Merrill  <jason@redhat.com>
450
451         * init.c (build_vec_init): Call ubsan_instrument_bounds to check
452         whether an initializer-list is too big for a VLA.
453         (throw_bad_array_length): Remove.
454         * cp-tree.h: Remove prototype.
455
456 2015-01-08  Paolo Carlini  <paolo.carlini@oracle.com>
457
458         PR c++/60753
459         * decl.c (grokfndecl): Add bool parameter.
460         (grokdeclarator): Adjust calls.
461         (start_decl): Don't set DECL_DELETED_FN here.
462
463 2015-01-06  Jason Merrill  <jason@redhat.com>
464
465         * parser.c (cp_parser_nested_name_specifier_opt): Diagnose invalid
466         template-ids.
467
468         PR c++/64455
469         * pt.c (type_dependent_expression_p): Handle variable templates.
470         * constexpr.c (potential_constant_expression_1): Use it.
471
472         PR c++/64487
473         * semantics.c (finish_offsetof): Handle templates here.
474         * parser.c (cp_parser_builtin_offsetof): Not here.
475
476         PR c++/64496
477         * semantics.c (process_outer_var_ref): Diagnose lambda in local
478         class NSDMI.
479
480 2015-01-06  Ville Voutilainen  <ville.voutilainen@gmail.com>
481
482         PR c++/64489
483         * class.c (check_field_decls): Make copy assignment operators
484         complex only in c++98 mode.
485
486 2015-01-05  Trevor Saunders  <tsaunders@mozilla.com>
487
488         PR c++/31397
489         * class.c (check_for_override): Warn when a virtual function is an
490         override not marked override.
491
492 2015-01-05  Trevor Saunders  <tsaunders@mozilla.com>
493
494         * class.c (warn_hidden): Use auto_vec<tree> instead of tree_list to
495         hold base_fndecls.
496         (get_basefndecls): Adjust.
497
498 2015-01-05  Jakub Jelinek  <jakub@redhat.com>
499
500         Update copyright years.
501
502 2015-01-05  Marek Polacek  <polacek@redhat.com>
503
504         PR c/64423
505         * typeck.c (cp_build_array_ref): Pass loc down to
506         warn_array_subscript_with_type_char.
507
508 \f
509 Copyright (C) 2015 Free Software Foundation, Inc.
510
511 Copying and distribution of this file, with or without modification,
512 are permitted in any medium without royalty provided the copyright
513 notice and this notice are preserved.