[PATCH] Cilk Plus merging to trunk (3 of n)

Richard Biener richard.guenther@gmail.com
Tue Feb 12 11:17:00 GMT 2013


On Mon, Feb 11, 2013 at 7:12 PM, Iyer, Balaji V <balaji.v.iyer@intel.com> wrote:
> Hello Everyone,
>    Attached, please find a patch that implements Array Notations for C++. This patch affects the C++ compiler and should build (or be applied) on top of the Array Notation for C patch (2 of n: http://gcc.gnu.org/ml/gcc-patches/2013-01/msg01213.html). To my best knowledge, I have implemented all the applicable comments that GCC reviewers have made about my previous patches into this. Please let me know if it is Ok for trunk.

Note that these patches have to wait until stage1 for GCC 4.9 opens
independent on whether they are approved.

Thanks,
Richard.

>
> Here are the ChangeLog Entries:
>
> gcc/cp/Changelog
> 2013-02-11  Balaji V. Iyer  <balaji.v.iyer@intel.com>
>
>         * typeck.c (cp_build_array_ref): Added a check if array notation used
>         as index for an array has a rank greater than 1.  If so, then emit an
>         error.
>         (cp_build_binary_op): Find the correct type when array notation expr. is
>         used in op0 and op1.
>         (cp_build_addr_expr_1): Check if array notation is used and if so then
>         handle the arg and var like you handle an array.
>         (convert_for_assignment): If array notation is used, then just return
>         the rhs.
>         * semantics.c (finish_return_stmt): Added a check for array notations in
>         return statement.  If so, then issue an error.
>         (cxx_eval_constant_expression): Added a ARRAY_NOTATION_REF case.
>         (potential_constant_expression_1): Likewise.
>         * tree.c (lvalue_kind): Likewise.
>         * pt.c (tsubst_copy_and_build): Likewise.
>         (type_unification_real): Return 1 when array notation is used and cilk
>         plus is enabled.
>         (instantiate_decl): Check if array notation is used in (sub)tree when
>         Cilk plus is enabled.  If so, then expand them.
>         * parser.c (cp_parser_nested_name_specifier_opt): Added a check if cilk
>         plus is enabled.  If so, then we don't issue the error.
>         (cp_parser_postfix_open_square_expression): Added checks for colon(s)
>         after square braces when cilkplus is enabled.  if so, then do the array
>         notation parsing.
>         (cp_parser_compound_statement): Added a check to see if array notations
>         are used in the (sub)tree.  if so, then call function to expand them.
>         (cp_parser_ctor_initializer_opt_and_function_body): Likewise.
>         (cp_parser_function_definition_after_declarator): Likewise.
>         (cp_parser_selection_statement): Added a check if array notation is used
>         in a switch statement.  If so, then issue an error.
>         (cp_parser_iteration_statement): Likewise for while and do-while and for
>         statements.
>         (cp_parser_direct_declarator): Added a check for intialization near an
>         array notation.  If so, then issue an error.
>         * cp-tree.h (build_x_array_notation_expr): New function declaration.
>         (contains_array_notation_expr): Likewise.
>         (fix_array_notation_exprs): Likewise.
>         (is_builtin_array_notation_fn): Likewise.
>         (find_correct_array_notation_type): Likewise.
>         (cp_parser_array_notation): New function.
>         * cp-objcp-common.c (cp_common_init_ts): Marked ARRAY_NOTATION_REF as
>         typed.
>         * call.c (convert_like_real): Added a check for array notations when
>         cilkplus is enabled.
>         (build_over_call): Added a check if the function call is a builtin
>         array notation function.  If so, then no type conversion is necessary.
>         * cp-array-notation.c: New file.
>         * Make-lang.in (CXX_AND_OBJCXX_OBJS): Added cp/cp-array-notation.o
>
> gcc/testsuite/Changelog
> 2013-02-11  Balaji V. Iyer  <balaji.v.iyer@intel.com>
>
>         * g++.dg/cilk-plus/array_notation/compile/array_test1.cc: New test.
>         * g++.dg/cilk-plus/array_notation/compile/array_test2.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/builtin_fn_double.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/builtin_funcs.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/gather_scatter.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/if_test1.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/if_test2.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/postdecr_test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/postincr_test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/preincr_test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/predecr_test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/sec_implicit_ex.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/decl-ptr-colon.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/fn_ptr.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/fp_triplet_values.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/gather_scatter.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/misc.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/parser_errors.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/parser_errors2.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/parser_errors3.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/parser_errors4.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/rank_mismatch.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/sec_implicit.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/sec_implicit2.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/errors/sec_reduce_max_min_ind.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/an-if.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/array_test1.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/array_test1_tplt.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/array_test2.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/array_test2_tplt.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/array_test_ND.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/array_test_ND_tplt.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/builtin_fn_custom.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/builtin_fn_custom_tplt.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/builtin_fn_mutating.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/builtin_fn_mutating_tplt.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/builtin_func_double.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/builtin_func_double2.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/comma_exp.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/conditional.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/exec-once.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/gather_scatter.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/if_test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/n-ptr-test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/postdecr_test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/postincr_test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/preincr_test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/predecr_test.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/sec_implicit_ex.cc: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/test_builtin_return.cc:
>         Likewise.
>         * g++.dg/cilk-plus/array_notation/compile/compile.exp: New script.
>         * g++.dg/cilk-plus/array_notation/errors/errors.exp: Likewise.
>         * g++.dg/cilk-plus/array_notation/execute/execute.exp: Likewise.
>
>
> Thanks,
>
> Balaji V. Iyer.



More information about the Gcc-patches mailing list