aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
AgeCommit message (Collapse)AuthorFilesLines
2013-07-30re PR c++/57673 (pack sizeof ... groups ellipsis with preceding expression)Paolo Carlini2-1/+9
/cp 2013-07-30 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57673 * parser.c (cp_parser_cache_defarg): In an NSDMI don't stop when token->type == CPP_ELLIPSIS. /testsuite 2013-07-30 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57673 * g++.dg/cpp0x/nsdmi-sizeof.C: New. From-SVN: r201354
2013-07-30re PR c++/57947 (internal compiler error: Segmentation fault using extended ↵Paolo Carlini2-0/+7
initializer lists without -std=c++11 or -std=gnu++11) /cp 2013-07-30 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57947 * call.c (is_std_init_list): Return false if cxx_dialect == cxx98. /testsuite 2013-07-30 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57947 * g++.dg/parse/crash63.C: New. From-SVN: r201344
2013-07-30re PR c++/57901 (Cannot call-by-value such that class has non-trivial ↵Jason Merrill2-3/+9
(constexpr) move constructor) PR c++/57901 * semantics.c (build_data_member_initialization, constexpr_fn_retval): Use break_out_target_exprs instead of unshare_expr. From-SVN: r201338
2013-07-29re PR c++/57948 (internal compiler error: in initialize_reference, at ↵Paolo Carlini2-4/+14
cp/call.c:9285) /cp 2013-07-29 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57948 * call.c (initialize_reference): Don't crash when reference_binding returns a conv with conv->kind == ck_ambig. /testsuite 2013-07-29 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57948 * g++.dg/conversion/ambig2.C: New. From-SVN: r201318
2013-07-29mangle.c (write_name): Check for null context.Jason Merrill2-6/+13
* mangle.c (write_name): Check for null context. (write_unscoped_name): Allow PARM_DECL context. From-SVN: r201317
2013-07-25re PR c++/57981 (ICE in this code)Paolo Carlini6-31/+64
/cp 2013-07-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57981 * decl.c (check_default_argument): Take a tsubst_flags_t parameter. (grokparms): Adjust. * parser.c (cp_parser_late_parse_one_default_arg): Likewise. * pt.c (tsubst_default_argument, tsubst_default_arguments): Take a tsubst_flags_t parameter. (tsubst_decl): Adjust. * call.c (convert_default_arg): Likewise. * cp-tree.h (check_default_argument, tsubst_default_argument): Update declarations. /testsuite 2013-07-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57981 * g++.dg/cpp0x/pr57981.C: New. /cp 2013-07-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57880 * parser.c (cp_parser_operator, case CPP_WSTRING, CPP_STRING16, CPP_STRING32, CPP_UTF8STRING, CPP_WSTRING_USERDEF, CPP_STRING16_USERDEF, CPP_STRING32_USERDEF, CPP_UTF8STRING_USERDEF): Fix string_len management, tidy. /testsuite 2013-07-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57880 * g++.dg/cpp1y/udlit-empty-string-neg.C: New. From-SVN: r201245
2013-07-242013-07-24 Paolo Carlini <paolo.carlini@oracle.com>Paolo Carlini1-2/+2
Tweak last ChangeLog entry. From-SVN: r201202
2013-07-24re PR c++/57942 (g++-4.8.1 tries to instantiate wrong constructor)Paolo Carlini3-9/+21
/cp 2013-07-24 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57942 * typeck.c (ptr_reasonably_similar): Use COMPARE_STRICT if one of the target types is incomplete; return a bool, not an int. * cp-tree.h (ptr_reasonably_similar): Adjust declaration. /testsuite 2013-07-24 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57942 * g++.dg/inherit/pr57942.C: New. From-SVN: r201201
2013-07-22cp-tree.h (DERIVED_FROM_P): Pass tf_none to lookup_base, not ↵Paolo Carlini2-2/+6
tf_warning_or_error. 2013-07-22 Paolo Carlini <paolo.carlini@oracle.com> * cp-tree.h (DERIVED_FROM_P): Pass tf_none to lookup_base, not tf_warning_or_error. From-SVN: r201145
2013-07-21class.c: Fix typos.Ondřej Bílka9-11/+23
2013-07-21 Ondřej Bílka <neleai@seznam.cz> * class.c: Fix typos. * cp-array-notation.c: Likewise. * cp-objcp-common.c: Likewise. * decl.c: Likewise. * init.c: Likewise. * mangle.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * semantics.c: Likewise. From-SVN: r201106
2013-07-21Fix some typos.Ondřej Bílka1-1/+1
2013-07-21 Ondřej Bílka <neleai@seznam.cz> * objc-act.c: Fix typos. * objc-encoding.c: Likewise. * objc-gnu-runtime-abi-01.c: Likewise. * objc-next-runtime-abi-01.c: Likewise. * objc-next-runtime-abi-02.c: Likewise. From-SVN: r201096
2013-07-14Extract lambda functions from semantics.c.Adam Butcher4-889/+935
* gcc/cp/semantics.c (build_lambda_expr), (build_lambda_object), (begin_lambda_type), (lambda_return_type), (lambda_function), (lambda_capture_field_type), (is_capture_proxy), (is_normal_capture_proxy), (insert_capture_proxy), (insert_pending_capture_proxies), (lambda_proxy_type), (build_capture_proxy), (vla_capture_type), (register_capture_members), (add_default_capture), (lambda_expr_this_capture), (maybe_resolve_dummy), (nonlambda_method_basetype), (maybe_add_lambda_conv_op) and (is_lambda_ignored_entity): Moved definitions into ... * gcc/cp/lambda.c: ... this new file. From-SVN: r200948
2013-07-14call.c (build_conditional_expr_1): Handle the case with 1 vector and 2 scalars.Marc Glisse3-10/+77
2013-07-14 Marc Glisse <marc.glisse@inria.fr> gcc/cp/ * call.c (build_conditional_expr_1): Handle the case with 1 vector and 2 scalars. Call save_expr before building a vector. * typeck.c (cp_build_binary_op): Check complain before complaining. gcc/testsuite/ * g++.dg/ext/vector19.C: Adapt. * g++.dg/ext/vector23.C: New testcase. From-SVN: r200947
2013-07-13re PR c++/55203 (No unused warning for variables of non-trivial types)Lubos Lunak3-2/+11
PR c++/55203 c-family/ * c-common.c (c_common_attribute_table): Add warn_unused. (handle_warn_unused_attribute): New. cp/ * init.c (build_aggr_init): Check for warn_unused attribute. * decl.c (poplevel): Likewise. From-SVN: r200941
2013-07-13re PR c++/57402 (ICE: in make_decl_rtl, at varasm.c:1147 when initializing ↵Jason Merrill2-6/+14
variable-sized array) PR c++/57402 * init.c (build_vec_init): Use {} for arrays of class type. (build_vec_delete): Don't take the address of the array. From-SVN: r200939
2013-07-13re PR c++/57793 (ICE with bitfields in get_bit_range)Jason Merrill2-0/+9
PR c++/57793 c/ * c-decl.c (finish_struct): Check for too-large class. cp/ * class.c (layout_class_type): Check for too-large class. From-SVN: r200938
2013-07-13call.c (can_convert): Allow user-defined conversions.Jason Merrill6-16/+36
* call.c (can_convert): Allow user-defined conversions. (can_convert_standard): New. * cp-tree.h: Declare it. * cvt.c (convert_to_reference): Use it. * pt.c (convert_nontype_argument): Likewise. * search.c (check_final_overrider): Likewise. Don't worry about user-defined conversions. From-SVN: r200937
2013-07-10re PR c++/57869 ([C++11] Casting a object pointer to a function pointer ↵Paolo Carlini2-6/+12
should not warn about a forbidden conversion) /c-family 2013-07-10 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57869 * c.opt: Add Wconditionally-supported. /cp 2013-07-10 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57869 * typeck.c (build_reinterpret_cast_1): With -Wconditionally-supported warn about casting between pointer-to-function and pointer-to-object. /gcc 2013-07-10 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57869 * doc/invoke.texi: Document -Wconditionally-supported. /testsuite 2013-07-10 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57869 * g++.dg/cpp0x/reinterpret_cast1.C: New. * g++.dg/warn/Wconditionally-supported-1.C: Likewise. * g++.dg/conversion/dr195.C: Update. * g++.dg/expr/cast2.C: Likewise. From-SVN: r200876
2013-07-09re PR c++/57402 (ICE: in make_decl_rtl, at varasm.c:1147 when initializing ↵Jason Merrill2-0/+8
variable-sized array) PR c++/57402 * init.c (build_vec_init): Don't take shortcuts when initializing a VLA. From-SVN: r200860
2013-07-09re PR c++/57471 (Bizarre error for template parameter pack)Jason Merrill2-0/+7
PR c++/57471 * parser.c (cp_parser_sizeof_pack): Clear parser scopes. From-SVN: r200852
2013-07-09re PR c++/57658 (ICE in tsubst_copy, at cp/pt.c:12213)Jason Merrill2-7/+11
PR c++/57658 * semantics.c (finish_id_expression): Return the id for an unevaluated outer variable. From-SVN: r200845
2013-07-09re PR c++/57526 (use of X before deduction of auto error for seemingly good ↵Jason Merrill2-1/+5
code) PR c++/57526 * semantics.c (lambda_capture_field_type): Build a DECLTYPE_TYPE if the variable type uses 'auto'. From-SVN: r200844
2013-07-09re PR c++/57437 (C++11: mutable lambdas)Jason Merrill2-2/+7
PR c++/57437 * typeck.c (check_return_expr): Lambda proxies aren't eligible for nrv or return by move. From-SVN: r200843
2013-07-09re PR c++/57532 (operator& broken when used on rvalues)Jason Merrill2-0/+8
PR c++/57532 * parser.c (cp_parser_ref_qualifier_opt): Don't tentatively parse a ref-qualifier in C++98 mode. From-SVN: r200842
2013-07-09re PR c++/57545 (Generation of debug symbols leads to internal compiler error)Jason Merrill2-0/+8
PR c++/57545 * pt.c (convert_nontype_argument) [INTEGER_CST]: Force the argument to have the exact type of the parameter. From-SVN: r200841
2013-07-09re PR regression/57551 (g++.dg/ext/visibility/anon6.C scan-assembler 1BIiE1cE)Jason Merrill2-5/+4
PR c++/57551 * semantics.c (cxx_eval_indirect_ref): Don't try to look through a POINTER_PLUS_EXPR for type punning diagnostic. From-SVN: r200840
2013-07-09re PR c++/57831 (pointer to member function inaccessible through using ↵Jason Merrill2-0/+8
statement (or ICE)) PR c++/57831 * pt.c (tsubst_copy): Handle USING_DECL. From-SVN: r200839
2013-07-09re PR c++/53094 (constexpr vector subscripting)Marc Glisse2-1/+12
2013-07-09 Marc Glisse <marc.glisse@inria.fr> PR c++/53094 gcc/cp/ * semantics.c (cxx_eval_bit_field_ref): Handle VECTOR_CST. gcc/testsuite/ * g++.dg/cpp0x/constexpr-53094-1.C: Adjust. * g++.dg/ext/vector24.C: New testcase. From-SVN: r200822
2013-07-09re PR c++/53000 (Conditional operator does not behave as standardized)Marc Glisse2-4/+10
2013-07-09 Marc Glisse <marc.glisse@inria.fr> PR c++/53000 gcc/cp/ * call.c (build_conditional_expr_1): Preserve xvalues. gcc/testsuite/ * g++.dg/cpp0x/decltype17.C: Adjust. From-SVN: r200821
2013-07-09re PR c++/51786 ([c++0x] Invalid declaration with decltype accepted)Paolo Carlini2-2/+17
/cp 2013-07-09 Paolo Carlini <paolo.carlini@oracle.com> PR c++/51786 * parser.c (cp_parser_simple_declaration): Before calling shadow_tag also check declares_class_or_enum. /testsuite 2013-07-09 Paolo Carlini <paolo.carlini@oracle.com> PR c++/51786 * g++.dg/cpp0x/pr51786.C: New. From-SVN: r200813
2013-07-08re PR c++/57550 (bogus "error ... is private")Jason Merrill4-15/+55
PR c++/57550 * pt.c (fn_type_unification): Only defer during substitution. (type_unification_real): Defer during defarg substitution, add checks parm to pass back deferred checks. (unify, do_auto_deduction): Adjust. * semantics.c (reopen_deferring_access_checks): New. * cp-tree.h: Declare it. From-SVN: r200808
2013-07-06re PR c++/28262 (Inconsistent "default arguments are only permitted for ↵Paolo Carlini2-0/+13
function parameters".) /cp 2013-07-06 Paolo Carlini <paolo.carlini@oracle.com> PR c++/28262 * parser.c (cp_parser_init_declarator): If we are parsing a typedef set parser->default_arg_ok_p to false before cp_parser_declarator. /testsuite 2013-07-06 Paolo Carlini <paolo.carlini@oracle.com> PR c++/28262 * g++.dg/parse/defarg16.C: New. From-SVN: r200730
2013-07-05re PR c++/14263 (Cryptic diagnostic for cast from virtual base class not ↵Paolo Carlini2-3/+30
using dynamic_cast) /cp 2013-07-05 Paolo Carlini <paolo.carlini@oracle.com> PR c++/14263 * class.c (build_base_path): Improve diagnostic. /testsuite 2013-07-05 Paolo Carlini <paolo.carlini@oracle.com> PR c++/14263 * g++.dg/inherit/virtual10.C: New. From-SVN: r200718
2013-07-04re PR c++/38634 (ICE with wrong number of template parameters)Paolo Carlini3-16/+29
/cp 2013-07-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/38634 * decl.c (start_preparsed_function): Return a bool, false if push_template_decl fails. (start_function): Adjust. * cp-tree.h: Update. /testsuite 2013-07-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/38634 * g++.dg/template/crash116.C: New. From-SVN: r200682
2013-07-03re PR c++/57771 (g++ misinterprets >> in static_cast)Jakub Jelinek2-0/+14
PR c++/57771 * parser.c (cp_parser_postfix_expression) <case RID_STATCAST> Temporarily set parser->greater_than_is_operator_p for cp_parser_expression and restore from saved value afterwards. * g++.dg/template/arg9.C: New test. From-SVN: r200647
2013-06-29lex.c (lex_raw_string(), [...]): Constrain suffixes treated as concatenated ↵Ed Smith-Rowland3-4/+56
literal and macro to just the... libcpp: 2013-06-28 Ed Smith-Rowland <3dw4rd@verizon.net> * lex.c (lex_raw_string(), lex_string()): Constrain suffixes treated as concatenated literal and macro to just the patterns found in inttypes.h; (is_macro()): New. gcc/cp: 2013-06-28 Ed Smith-Rowland <3dw4rd@verizon.net> * cp-tree.h (UDLIT_OP_ANSI_PREFIX): Remove space. * parser.c (cp_parser_operator()): Parse user-defined string literal as literal operator. gcc/testsuite: 2013-06-28 Ed Smith-Rowland <3dw4rd@verizon.net> * g++.dg/cpp0x/udlit-nospace-neg.C: Adjust. * g++.dg/cpp1y/udlit-enc-prefix-neg.C: New. * g++.dg/cpp1y/udlit-userdef-string.C: New. * g++.dg/cpp1y/complex_literals.h: New. From-SVN: r200563
2013-06-29re PR c++/57645 (Explicitly-declared destructor with no exception ↵Paolo Carlini2-3/+15
specification is always noexcept(true)) /cp 2013-06-28 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57645 * class.c (deduce_noexcept_on_destructors): Save, set, and restore TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t) around the main loop over the destructors. /testsuite 2013-06-28 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57645 * g++.dg/cpp0x/noexcept21.C: New. From-SVN: r200559
2013-06-28Implemented Jason Merrill's suggestions on Array Notation C++.Balaji V. Iyer9-696/+471
gcc/ChangeLog 2013-06-28 Balaji V. Iyer <balaji.v.iyer@intel.com> * builtins.def: Fixed the function type of CILKPLUS_BUILTIN. gcc/c/ChangeLog 2013-06-28 Balaji V. Iyer <balaji.v.iyer@intel.com> * c-parser.c (c_parser_array_notation): Removed rejection of array notations in an array of function pointers. gcc/c-family/ChangeLog 2013-06-28 Balaji V. Iyer <balaji.v.iyer@intel.com> * array-notation-common.c (length_mismatch_in_expr_p): Collapsed two if-statements and compared the trees directly using tree_int_cst_equal. (find_rank): Checked for array notations in function name to handle array notations in function pointers. (extract_array_notation_exprs): Likewise. (replace_array_notations): Likewise. (cilkplus_extract_an_triplets): Replaced safe_push with safe_grow_cleared. Also removed an unnecessary check to see if the node is of type ARRAY_NOTATION_REF. (fix_sec_implicit_args): Removed an unnecessary check for ADDR_EXPR. Also switched two if-statements to remove an unnecessary comparison. gcc/cp/ChangeLog 2013-06-28 Balaji V. Iyer <balaji.v.iyer@intel.com> * parser.c (cp_parser_array_notation): Removed rejection array notation of type function pointers. Added handling of array expressions when Cilk Plus is enabled. Took out type-checking. (cp_parser_postfix_open_square_expression): Moved normal array expr. parsing into cp_parser_array_notation when cilkplus is enabled. (cp_parser_compound_statement): Removed expansion of array notations. (cp_parser_ctor_initializer_opt_and_function_body): Likewise. (cp_parser_function_definition_after_declarator): Likewise. (cp_parser_selection_statement): Removed error reporting. (cp_parser_iteration_statement): Likewise. (cp_parser_direct_declarator): Removed error checking/reporting if array notations are used in the declarator. * pt.c (instantiate_decl): Likewise. (type_unification_real): Removed a check for ARRAY_NOTATION_REF. (cxx_eval_constant_expression): Removed ARRAY_NOTATION_REF case. (potential_constant_expression_1): Returned false for ARRAY_NOTATION_REF case. * cp-gimplify.c (cp_genericize): Added expansion of array notation expressions here. * cp-array-notation.c (make_triplet_val_inv): Removed loc and cry parameters. Replaced build_decls with get_temp_regvar with type as ptrdiff. (create_array_refs): Made the type-casting to ptrdiff_type. (replace_invariant_var): Added a check for void return type before creating new var. Replaced build_decl and build_min_nt_loc with get_temp_regvar. (expand_an_in_modify_expr): Ditto. Replaced body of redundant else with gcc_unreachable. Removed few unwanted checks. Made induction variable type as ptrdiff_type. Removed loc and complain arguments passed into make_triplet_val_inv. Replaced all modify expression's code from NOP EXPR to INIT EXPR. Replaced all forceful appending into stmt. list with the non-forceful one. Replaced some integer conversion and equality-checking to using tree_int_cst_equal. (expand_sec_reduce_builtin): All changes mentioned in above function expand_an_in_modify_expr. Made the new variable type of SEC_REDUCE_ANY/ALL_{NON}ZERO intrinsic functions as bool. (expand_array_notation_exprs): Removed SWITCH_EXPR case. Moved all the error reporting from parser to this function. Removed unwanted statements and checks from SWITCH_STMT, WHILE_STMT, and DO_STMT cases. (cilkplus_an_triplet_types_ok_p): Removed rejection of array notation in function pointers. (cp_expand_cond_array_notations): Added a new if statements to check if condition has a zero rank. If so, then just return. (expand_return_expr): Added a check for return expressions with a rank. Replaced get_tmp_regvar with a create_temporary_var. (build_array_notation_ref): Simplified and removed unwanted if-stmts. Moved common code outside if-statements. Moved type-checking from parser to here. * semantics.c (finish_return_stmt): Removed a check for return exprs. with a rank. * call.c (convert_like_real): Removed a check for array notation expression in a function. (build_over_call): Likewise. (magic_varargs_p): Added a check for builtin array notation function. Made this function non-static and removed its prototype. * cp-tree.h (magic_varargs_p): New prototype. * typeck.c (cp_build_function_call_vec): Removed automatic setting of nargs to the param->length when builtin reduction function is used. (convert_arguments): Replaced check for a constant_p function with margic_varargs_p function call. (cp_build_binary_op): Removed calling of the function find_correct_array_notation_type. (cp_build_addr_expr_1): Removed an unwanted if-statement. (convert_for_assignment): Removed automatic return of rhs when array notation builtin function is used. gcc/testsuite/ChangeLog 2013-06-28 Balaji V. Iyer <balaji.v.iyer@intel.com> * c-c++-common/cilk-plus/AN/decl-ptr-colon.c (main): Made this testcase c specific. * c-c++-common/cilk-plus/AN/decl-ptr-colon.c (main): Changed dg-error strings to match the fixed error messages. * c-c++-common/cilk-plus/AN/misc.c (main): Likewise. * c-c++-common/cilk-plus/AN/rank_mismatch.c (main): Added a new error message check. From-SVN: r200554
2013-06-28re PR c++/57682 (Uniform initialization syntax rejected in function-try-block)Paolo Carlini2-2/+10
/cp 2013-06-28 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57682 * parser.c (cp_parser_save_member_function_body): Handle correctly curly braces in function-try-block mem-initializers. /testsuite 2013-06-28 Paolo Carlini <paolo.carlini@oracle.com> PR c++/57682 * g++.dg/cpp0x/initlist73.C: New. From-SVN: r200504
2013-06-27re PR c++/57509 (Segmentation fault when using __builtin_shuffle in ↵Marc Glisse5-2/+39
templated class.) 2013-06-27 Marc Glisse <marc.glisse@inria.fr> PR c++/57509 gcc/c-family/ * c-common.h (c_build_vec_perm_expr): New complain argument. * c-common.c (c_build_vec_perm_expr): Likewise. Use save_expr also in C++. gcc/cp/ * typeck.c (cp_build_vec_perm_expr): New function. * cp-tree.h: Declare it. * parser.c (cp_parser_postfix_expression): Call it. * pt.c (tsubst_copy): Handle VEC_PERM_EXPR. (tsubst_copy_and_build): Likewise. gcc/testsuite/ * g++.dg/ext/pr57509.C: New file. From-SVN: r200495
2013-06-27re PR c++/57172 ([C++11][DR 1164] Template overload resolution ambiguous for ↵Marc Glisse2-13/+38
T&& versus T&) 2013-06-27 Marc Glisse <marc.glisse@inria.fr> PR c++/57172 gcc/cp/ * pt.c (more_specialized_fn): If both arguments are references, give priority to an lvalue. gcc/testsuite/ * g++.dg/cpp0x/pr57172.C: New testcase. From-SVN: r200463
2013-06-26typeck2.c (store_init_value): Diagnose a non-constant initializer for ↵Jason Merrill3-21/+6
in-class static. * typeck2.c (store_init_value): Diagnose a non-constant initializer for in-class static. From-SVN: r200450
2013-06-26re PR c++/57408 (lambda, Variable length arrays, thread, internal compiler ↵Jason Merrill2-0/+7
error: in expand_expr_real_1, at expr.c:9327) PR c++/57408 * semantics.c (add_capture): Set type to error_mark_node after error. From-SVN: r200449
2013-06-26re PR c++/57640 (Explicit call of system literal operator complains about ↵Ed Smith-Rowland2-2/+7
leading underscore.) gcc/cp: 2013-06-25 Ed Smith-Rowland <3dw4rd@verizon.net> PR c++/57640 * parser.c (cp_parser_unqualified_id): Add declarator_p to checks to trigger warning, (cp_literal_operator_id): Remove bogus TODO comment. gcc/testsuite: 2013-06-25 Ed Smith-Rowland <3dw4rd@verizon.net> PR c++/57640 * g++.dg/cpp1y/pr57640.C: New. From-SVN: r200415
2013-06-25Replaced Dynamic arrays with vec trees in Array Notation for C.Balaji V. Iyer2-49/+9
gcc/c-family/ChangeLog 2013-06-21 Balaji V. Iyer <balaji.v.iyer@intel.com> * array-notation-common.c (length_mismatch_in_expr): Changed the parameter type's from a dynamic array to a vec_tree. Also removed the size parameters. * c-common.h (length_mismatch_in_expr_p): Fixed prototype's as per the change above. gcc/cp/ChangeLog 2013-06-21 Balaji V. Iyer <balaji.v.iyer@intel.com> * cp-array-notation.c (cp_length_mismatch_in_expr_p): Remove. (expand_an_in_modify_expr): Changed a function call from the above removed function to length_mismatch_in_expr_p. gcc/c/ChangeLog 2013-06-21 Balaji V. Iyer <balaji.v.iyer@intel.com> * c-array-notation.c (make_triplet_val_inv): New function. (create_cmp_incr): Likewise. (create_array_refs): Likewise. (fix_builtin_array_notation_fn): Replaced all mallocs with tree vec. Also modularized common parts between functions and called the function. (build_array_notation_expr): Likewise. (fix_conditional_array_notations_1): Likewise. (fix_array_notation_expr): Likewise. (fix_array_notation_call_expr): Likewise. From-SVN: r200405
2013-06-23c-common.c (c_common_nodes_and_builtins): Use cxx11 in lieu of cxx0x.Gabriel Dos Reis13-57/+99
2013-06-22 Gabriel Dos Reis <gdr@integrable-solutions.net> * c-common.c (c_common_nodes_and_builtins): Use cxx11 in lieu of cxx0x. * c-cppbuiltin.c (c_cpp_builtins): Likewise. * c-opts.c (c_common_post_options): Likewise. cp/ 2013-06-22 Gabriel Dos Reis <gdr@integrable-solutions.net> * call.c (null_ptr_cst_p): Use cxx11 in lieu of cxx0x. * class.c (add_implicitly_declared_members): Likewise. (check_field_decl): Likewise. (finalize_literal_type_property): Likewise. (check_bases_and_members): Likewise. * decl.c (poplevel): Likewise. (case_conversion): Likewise. (check_initializer): Likewise. (grokfndecl): Likewise. (check_static_variable_definition): Likewise. (compute_array_index_type): Likewise. (grokdeclarator): Likewise. (build_enumerator): Likewise. * friend.c (make_friend_class): Likewise. * lex.c (init_reswords): Likewise. * method.c (synthesized_method_walk): Likewise. (implicitly_declare_fn): Likewise. * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. (cp_parser_constant_expression): Likewise. (cp_parser_for_init_statement): Likewise. (cp_parser_block_declaration): Likewise. (cp_parser_type_name): Likewise. (cp_parser_enum_specifier): Likewise. (cp_parser_enumerator_list): Likewise. (cp_parser_member_declaration): Likewise. (cp_nth_tokens_can_be_std_attribute_p): Likewise. (cp_parser_template_declaration_after_export): Likewise. * pt.c (convert_nontype_argument_function): Likewise. (convert_nontype_argument): Likewise. (convert_template_argument): Likewise. (tsubst_copy_and_build): Likewise. (build_non_dependent_expr): Likewise. * semantics.c (non_const_var_error): Likewise. (potential_constant_expression_1): Likewise. * tree.c (lvalue_kind): Likewise. (build_vec_init_expr): Likewise. (cast_valid_in_integral_constant_expression_p): Likewise. * typeck.c (build_x_conditional_expr): Likewise. * typeck2.c (check_narrowing): Likewise. From-SVN: r200348
2013-06-21Implemented Cilk Plus Array Notation for C++Balaji V. Iyer12-63/+2049
Implemented Cilk Plus Array Notation for C++ gcc/c-family/ChangeLog 2013-06-21 Balaji V. Iyer <balaji.v.iyer@intel.com> * c-common.h (struct cilkplus_an_parts): New structure. (struct cilkplus_an_loop_parts): Likewise. (cilkplus_extract_an_triplets): New prototype. (fix_sec_implicit_args): Likewise. * array-notation-common.c (cilkplus_extract_an_triplets): New function. (fix_sec_implicit_args): Likewise. gcc/cp/ChangeLog 2013-06-21 Balaji V. Iyer <balaji.v.iyer@intel.com> * call.c (convert_like_real): Added a check if array notation is present in expression. If so, then no conversion of arguments is necessary. (build_over_call): Likewise. * typeck.c (cp_build_function_call_vec): Likewise. (convert_for_assignment): Likewise. (cp_build_array_ref): Reject array notations with a rank greater than 1 as an array's index. (cp_build_binary_op): If array notations are preent in op, then call find_correct_array_notation_type. (cp_build_addr_expr_1): Handle ARRAY_NOTATION_REF similar to ARRAY_REF. * cp-array-notation.c: New file. * cp-objcp-common.c (cp_common_init_ts): Marked ARRAY_NOTATION_REF tree as typed. * cp-tree.h (fix_array_notation_exprs): New prototype. * semantics.c (finish_return_stmt): Reject array notations as return value. (cxx_eval_constant_expression): Added ARRAY_NOTATION_REF case. (potential_constant_expression_1): Likewise. * tree.c (lvalue_kind): Likewise. * error.c (dump_decl): Likewise. (dump_expr): Likewise. * pt.c (ARRAY_NOTATION_REF): Likewise. (type_unification_real): Do not unify any arguments if array notations are found in arg. (instantiate_decl): Added a check for array notaitons inside the function body. If so, then expand them. * parser.c (cp_parser_array_notation): New function. (cp_parser_postfix_open_square_expression): Added a check for colons inside square braces. If found, then handle the array access as an array notation access. Also, disable auto-correction from a single colon to scope when Cilk Plus is enabled. (cp_parser_compound_statement): Added a check for array notations inside the statement. If found, then expand them. (cp_parser_ctor_initializer_opt_and_function_body): Likewise. (cp_parser_function_definition_after_declarator): Likewise. (cp_parser_selection_statement): Searched for array notations inside condition. If so, then emit an error. (cp_parser_iteration_statement): Likewise. (cp_parser_direct_declarator): Reject array notations inside a variable or array declaration. * Make-lang.in (CXX_AND_OBJCXX_OBJS): Added cp/cp-array-notation.o. gcc/testsuite/ChangeLog 2013-06-21 Balaji V. Iyer <balaji.v.iyer@intel.com> * c-c++-common/cilk-plus/AN/array_test1.c: Make this an execution test. Also changed the returns from error as distinct values so that debugging can get easier. * c-c++-common/cilk-plus/AN/if_test_errors.c (main): Made certain errors specific to C, if necessary. Also added new error hooks for C++. * c-c++-common/cilk-plus/AN/misc.c (main): Likewise. * c-c++-common/cilk-plus/AN/parser_errors.c (main): Likewise. * c-c++-common/cilk-plus/AN/parser_errors2.c (main): Likewise. * c-c++-common/cilk-plus/AN/parser_errors3.c (main): Likewise. * c-c++-common/cilk-plus/AN/pr57541.c (main): Likewise. * c-c++-common/cilk-plus/AN/parser_errors4.c (main): In addition to the same changes as parser_errors3.c, spaces were added between colons to not confuse C++ compiler with 2 colons as scope. * c-c++-common/cilk-plus/AN/vla.c: Make this test C specific. * g++.dg/cilk-plus/AN/array_test1_tplt.cc: New test. * g++.dg/cilk-plus/AN/array_test2_tplt.cc: Likewise. * g++.dg/cilk-plus/AN/array_test_ND_tplt.cc: Likewise. * g++.dg/cilk-plus/AN/braced_list.cc: Likewise. * g++.dg/cilk-plus/AN/builtin_fn_custom_tplt.cc: Likewise. * g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc: Likewise. * g++.dg/cilk-plus/AN/fp_triplet_values_tplt.c: Likewise. * g++.dg/cilk-plus/AN/preincr_test.cc: Likewise. * g++.dg/cilk-plus/AN/postincr_test.cc: Likewise. * g++.dg/cilk-plus/cilk-plus.exp: New script. * gcc/testsuite/g++.dg/dg.exp: Included Cilk Plus C++ tests in the list. From-SVN: r200319
2013-06-20re PR c++/55149 (capturing VLA in lambda)Jason Merrill6-22/+52
PR c++/55149 * decl.c (compute_array_index_type): Don't reject VLAs in SFINAE context if we're in C++14 mode. * tree.c (array_of_runtime_bound_p): Return true for a dependent bound that is not potentually constant. * cp-tree.h (DECL_VLA_CAPTURE_P, REFERENCE_VLA_OK): New. * pt.c (tsubst) [REFERENCE_TYPE]: Check REFERENCE_VLA_OK. * semantics.c (build_lambda_object): Don't rvalue a VLA capture. (build_capture_proxy): Set REFERENCE_VLA_OK. (vla_capture_type): Make it a proper C++ class. (add_capture): Set DECL_VLA_CAPTURE_P. Don't pre-digest the initializer. From-SVN: r200279
2013-06-20* decl.c (compute_array_index_type): Use size_one_node.Jason Merrill2-1/+3
From-SVN: r200278
2013-06-20pt.c (process_partial_specialization): Build a TEMPLATE_DECL for a partial ↵Jason Merrill3-24/+35
specialization. * pt.c (process_partial_specialization): Build a TEMPLATE_DECL for a partial specialization. (tsubst_decl): Don't clobber CLASSTYPE_TI_TEMPLATE of a partial specialization. (most_specialized_class): Adjust. From-SVN: r200263