Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
authorPrasad Ghangal <prasad.ghangal@gmail.com>
Mon, 14 Nov 2016 13:51:48 +0000 (13:51 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 14 Nov 2016 13:51:48 +0000 (13:51 +0000)
commit1ee62b926411dda2bffbca8019b494481183ee15
tree8d83980f6ddcd52182f277bc95f6bdd8c523ebf2
parent4d2098539a53d9e2dddd6233fb68820715d95862
Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.

2016-11-14  Prasad Ghangal  <prasad.ghangal@gmail.com>
Richard Biener  <rguenther@suse.de>

     c/
     * Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
     * config-lang.in (gtfiles): Add c/c-parser.h.
     * c-tree.h (enum c_declspec_word): Add cdw_gimple.
     (struct c_declspecs): Add gimple_pass member and gimple_p flag.
     * c-parser.c (enum c_id_kind, struct c_token,
     c_parser_next_token_is, c_parser_next_token_is_not,
     c_parser_next_token_is_keyword,
     enum c_lookahead_kind, enum c_dtr_syn, enum c_parser_prec):
     Split out to ...
     * c-parser.h: ... new header.
     * c-parser.c: Include c-parser.h and gimple-parser.h.
(c_parser_peek_token, c_parser_peek_2nd_token,
     c_token_starts_typename, c_parser_next_token_starts_declspecs,
     c_parser_next_tokens_start_declaration, c_parser_consume_token,
     c_parser_error, c_parser_require, c_parser_skip_until_found,
     c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
     c_parser_type_name): Export.
     (c_parser_tokens_buf): New function.
     (c_parser_error): Likewise.
     (c_parser_set_error): Likewise.
     (c_parser_declspecs): Handle RID_GIMPLE.
(c_parser_declaration_or_fndef): Parse __GIMPLE marked body
via c_parser_parse_gimple_body.
     * c-parser.h (c_parser_peek_token, c_parser_peek_2nd_token,
     c_token_starts_typename, c_parser_next_token_starts_declspecs,
     c_parser_next_tokens_start_declaration, c_parser_consume_token,
     c_parser_error, c_parser_require, c_parser_skip_until_found,
     c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
     c_parser_type_name): Declare.
(struct c_parser): Declare forward.
(c_parser_tokens_buf): Declare.
        (c_parser_error): Likewise.
        (c_parser_set_error): Likewise.
     * gimple-parser.c: New file.
     * gimple-parser.h: Likewise.

     obj-c/
     * config-lang.in (gtfiles): Add c/c-parser.h.

     c-family/
     * c-common.h (c_common_resword): Add RID_GIMPLE, RID_PHI types.
     * c-common.h (enum rid): Add RID_GIMPLE, RID_PHI.
     * c.opt (fgimple): New option.

* doc/invoke.texi (fgimple): Document.

     * dumpfile.h (TDF_GIMPLE): Add.
     * dumpfile.c (dump_options): Add gimple.
     * gimple-pretty-print.c (dump_gimple_switch): Adjust dump
for TDF_GIMPLE.
(dump_gimple_label): Likewise.
(dump_gimple_phi): Likewise.
(dump_gimple_bb_header): Likewise.
(dump_phi_nodes): Likewise.
(pp_cfg_jump): Likewise.  Pass in dump flags.
(dump_implicit_edges): Adjust.
     * passes.c (pass_init_dump_file): Do not dump function header
     for TDF_GIMPLE.
     * tree-cfg.c (dump_function_to_file): Dump function return type
and __GIMPLE keyword for TDF_GIMPLE.  Change guard for dumping
GIMPLE stmts.
     * tree-pretty-print.c (dump_decl_name): Adjust dump for TDF_GIMPLE.
     (dump_generic_node): Likewise.

* function.h (struct function): Add pass_startwith member.
* passes.c (execute_one_pass): Implement startwith.

     * tree-ssanames.c (make_ssa_name_fn): New argument, check for version
     and assign proper version for parsed ssa names.
     * tree-ssanames.h (make_ssa_name_fn): Add new argument to the function.
     * internal-fn.c (expand_PHI): New function.
     * internal-fn.h (expand_PHI): Declared here.
     * internal-fn.def: New defination for PHI.
     * tree-cfg.c (lower_phi_internal_fn): New function.
(build_gimple_cfg): Call it.
     (verify_gimple_call): Condition for passing label as arg in internal
     function PHI.
* tree-into-ssa.c (rewrite_add_phi_arguments): Handle already
present PHIs with arguments.

     testsuite/
     * gcc.dg/gimplefe-1.c: New testcase.
     * gcc.dg/gimplefe-2.c: Likewise.
     * gcc.dg/gimplefe-3.c: Likewise.
     * gcc.dg/gimplefe-4.c: Likewise.
     * gcc.dg/gimplefe-5.c: Likewise.
     * gcc.dg/gimplefe-6.c: Likewise.
     * gcc.dg/gimplefe-7.c: Likewise.
     * gcc.dg/gimplefe-8.c: Likewise.
     * gcc.dg/gimplefe-9.c: Likewise.
     * gcc.dg/gimplefe-10.c: Likewise.
     * gcc.dg/gimplefe-11.c: Likewise.
     * gcc.dg/gimplefe-12.c: Likewise.
     * gcc.dg/gimplefe-13.c: Likewise.
     * gcc.dg/gimplefe-14.c: Likewise.
     * gcc.dg/gimplefe-15.c: Likewise.
     * gcc.dg/gimplefe-16.c: Likewise.
     * gcc.dg/gimplefe-17.c: Likewise.
     * gcc.dg/gimplefe-18.c: Likewise.

Co-Authored-By: Richard Biener <rguenther@suse.de>
From-SVN: r242387
27 files changed:
gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/c-family/c-common.h
gcc/c-family/c.opt
gcc/c/ChangeLog
gcc/c/Make-lang.in
gcc/c/c-parser.c
gcc/c/c-tree.h
gcc/c/config-lang.in
gcc/doc/invoke.texi
gcc/dumpfile.c
gcc/dumpfile.h
gcc/function.h
gcc/gimple-pretty-print.c
gcc/internal-fn.c
gcc/internal-fn.def
gcc/internal-fn.h
gcc/objc/ChangeLog
gcc/objc/config-lang.in
gcc/passes.c
gcc/testsuite/ChangeLog
gcc/tree-cfg.c
gcc/tree-into-ssa.c
gcc/tree-pretty-print.c
gcc/tree-ssanames.c
gcc/tree-ssanames.h