PR c++/83824
[official-gcc.git] / gcc / cp / ChangeLog
blob998e0b9925eb4efb197b6dba4a24b81df713a0bf
1 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
3         PR c++/83824
4         * parser.c (attr_chainon): New function.
5         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
6         cp_parser_namespace_definition, cp_parser_init_declarator,
7         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
8         cp_parser_gnu_attributes_opt): Use it.
9         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
10         cp_parser_objc_struct_declaration): Likewise.  Don't reset
11         prefix_attributes if attributes is error_mark_node.
13 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
15         PR c++/78344
16         * decl.c (grokdeclarator): Do not append the error_mark_node
17         due to an erroneous optional attribute-specifier-seq.
19 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
21         PR c++/83897
22         * cp-gimplify.c (cp_maybe_instrument_return): Handle
23         CLEANUP_POINT_EXPR.
25 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
27         PR c++/81054
28         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
29         error_mark_node when we give an error.
30         * decl.c (cp_finish_decl): Use the latter.
32 2018-01-17  Nathan Sidwell  <nathan@acm.org>
34         PR c++/83287
35         * init.c (build_raw_new_expr): Scan list for lookups to keep.
37 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
39         PR c++/83814
40         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
41         the C++ part.  If processing a template, call
42         fold_non_dependent_expr rather than fully folding.
44 2018-01-17  Jason Merrill  <jason@redhat.com>
46         PR c++/81067 - redundant NULL warning.
47         * call.c (convert_like_real): Restore null_node handling.
49 2018-01-17  Jason Merrill  <jason@redhat.com>
51         PR c++/81843 - ICE with variadic member template.
52         PR c++/72801
53         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
54         template args.
56 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
58         PR c++/83799
59         * pt.c (type_dependent_expression_p): Strip any location wrapper
60         before testing tree codes.
61         (selftest::test_type_dependent_expression_p): New function.
62         (selftest::cp_pt_c_tests): Call it.
64 2018-01-17  Nathan Sidwell  <nathan@acm.org>
66         PR c++/83739
67         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
68         this not a final instantiation.
70 2018-01-16  Jason Merrill  <jason@redhat.com>
72         PR c++/83714 - ICE checking return in template.
73         * typeck.c (check_return_expr): Call build_non_dependent_expr.
75 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
77         PR c++/83817
78         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
79         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
80         instead of CALL_FROM_THUNK_P.
82         PR c++/83825
83         * name-lookup.c (member_vec_dedup): Return early if len is 0.
84         (resort_type_member_vec, set_class_bindings,
85         insert_late_enum_def_bindings): Use vec qsort method instead of
86         calling qsort directly.
88 2018-01-15  Martin Sebor  <msebor@redhat.com>
90         PR c++/83588
91         * class.c (find_flexarrays): Make a record of multiple flexible array
92         members.
94 2018-01-12  Jason Merrill  <jason@redhat.com>
96         PR c++/83186 - ICE with static_cast of list-initialized temporary.
97         * typeck.c (build_static_cast): Use build_non_dependent_expr.
99 2018-01-12  Nathan Sidwell  <nathan@acm.org>
101         * cp-tree.h (mark_rvalue_use): Add parm name.
102         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
103         mark_rvalue_use.
104         * call.c (convert_like_real): Fix formatting.
106 2018-01-11  Jason Merrill  <jason@redhat.com>
108         PR c++/82728 - wrong -Wunused-but-set-variable
109         PR c++/82799
110         PR c++/83690
111         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
112         * decl.c (case_conversion): Likewise.
113         * semantics.c (finish_static_assert): Call
114         perform_implicit_conversion_flags.
116 2018-01-11  Nathan Sidwell  <nathan@acm.org>
118         * method.c (enum mangling_flags): Delete long-dead enum.
120 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
122         * parser.c (cp_parser_std_attribute_spec): When
123         token_pair::require_open / require_close return false simply
124         return error_mark_node, avoid duplicate cp_parser_error about
125         expected '(' / ')', respectively.
127 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
129         PR c++/43486
130         * call.c (null_ptr_cst_p): Strip location wrappers when
131         converting from '0' to a pointer type in C++11 onwards.
132         (conversion_null_warnings): Replace comparison with null_node with
133         call to null_node_p.
134         (build_over_call): Likewise.
135         * cp-gimplify.c (cp_fold): Remove the early bailout when
136         processing_template_decl.
137         * cp-lang.c (selftest::run_cp_tests): Call
138         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
139         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
140         (selftest::run_cp_tests): Move decl to bottom of file.
141         (null_node_p): New inline function.
142         (selftest::cp_pt_c_tests): New decl.
143         (selftest::cp_tree_c_tests): New decl.
144         * cvt.c (build_expr_type_conversion): Replace comparison with
145         null_node with call to null_node_p.
146         * error.c (args_to_string): Likewise.
147         * except.c (build_throw): Likewise.
148         * mangle.c (write_expression): Skip location wrapper nodes.
149         * parser.c (literal_integer_zerop): New function.
150         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
151         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
152         param of cp_parser_parenthesized_expression_list.  When calling
153         warn_for_memset, replace integer_zerop calls with
154         literal_integer_zerop, eliminating the double logical negation
155         cast to bool.  Eliminate the special-casing for CONST_DECL in
156         favor of the fold_for_warn within warn_for_memset.
157         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
158         param, defaulting to false.  Convert "expr" to a cp_expr, and call
159         maybe_add_location_wrapper on it when wrap_locations_p is true.
160         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
161         the result for RID_ALIGNOF and RID_SIZEOF.
162         (cp_parser_builtin_offsetof): Likewise.
163         * pt.c: Include "selftest.h".
164         (tsubst_copy): Handle location wrappers.
165         (tsubst_copy_and_build): Likewise.
166         (build_non_dependent_expr): Likewise.
167         (selftest::test_build_non_dependent_expr): New function.
168         (selftest::cp_pt_c_tests): New function.
169         * tree.c: Include "selftest.h".
170         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
171         (selftest::test_lvalue_kind): New function.
172         (selftest::cp_tree_c_tests): New function.
173         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
174         (cp_build_binary_op): Replace comparison with null_node with call
175         to null_node_p.
176         (build_address): Use location of operand when building address
177         expression.
179 2018-01-10  Marek Polacek  <polacek@redhat.com>
181         PR c++/82541
182         * call.c (build_conditional_expr_1): Check complain before warning.
183         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
184         -Wduplicated-branches.
186 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
188         PR c++/81327
189         * call.c (maybe_warn_class_memaccess): Add forward declaration.
190         Change last argument from tree * to const vec<tree, va_gc> *, adjust
191         args uses and check number of operands too.  Don't strip away any
192         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
193         Deal with src argument not having pointer type.  Check
194         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
195         test.
196         (build_over_call): Call maybe_warn_class_memaccess here on the
197         original arguments.
198         (build_cxx_call): Rather than here on converted arguments.
200 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
202         PR c++/81055
203         * init.c (build_vec_init): Avoid building an INIT_EXPR with
204         error_mark_node as second argument.
206 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
208         PR c++/83734
209         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
210         in STATEMENT_LIST.  Remove unneeded assert.
212 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
213             Alan Hayward  <alan.hayward@arm.com>
214             David Sherwood  <david.sherwood@arm.com>
216         * constexpr.c (cxx_eval_array_reference): Handle polynomial
217         VECTOR_CST_NELTS.
218         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
219         * call.c (build_conditional_expr_1): Likewise.
220         * decl.c (cp_finish_decomp): Likewise.
221         * mangle.c (write_type): Likewise.
222         * typeck.c (structural_comptypes): Likewise.
223         (cp_build_binary_op): Likewise.
224         * typeck2.c (process_init_constructor_array): Likewise.
226 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
228         PR c++/83555
229         * typeck.c (build_static_cast_1): For static casts to reference types,
230         call build_base_path with flag_delete_null_pointer_checks as nonnull
231         instead of always false.  When -fsanitize=null, call
232         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
233         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
234         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
236 2018-01-03  Nathan Sidwell  <nathan@acm.org>
238         PR c++/83667
239         * method.c (make_alias_for): Copy DECL_CONTEXT.
241 2018-01-03  Marek Polacek  <polacek@redhat.com>
243         PR c++/83592
244         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
246 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
248         PR preprocessor/83602
249         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
250         for builtin macros.
252         PR c++/83634
253         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
254         error_mark_node, return error_mark_node.
256         Update copyright years.
258 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
260         PR c++/83556
261         * tree.c (replace_placeholders_r): Pass NULL as last argument to
262         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
263         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
264         to false and return.
265         (replace_placeholders): Pass NULL instead of &pset as last argument
266         to cp_walk_tree.
268 2018-01-02  Nathan Sidwell  <nathan@acm.org>
270         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
271         lval var.
273 Copyright (C) 2018 Free Software Foundation, Inc.
275 Copying and distribution of this file, with or without modification,
276 are permitted in any medium without royalty provided the copyright
277 notice and this notice are preserved.