Pass manager: add support for termination of pass list
authorMartin Liska <mliska@suse.cz>
Wed, 4 Nov 2015 16:50:45 +0000 (17:50 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Wed, 4 Nov 2015 16:50:45 +0000 (16:50 +0000)
commitbe373510f80fc6fc1e7b227056a69b703ce1c7a4
tree316a2296cdfe0b08198dd411e536b7787022ff04
parenta6c764d02ec7716720ceac34b667cda3741c5c42
Pass manager: add support for termination of pass list

* cgraphunit.c (cgraph_node::expand_thunk): Call
allocate_struct_function before init_function_start.
(cgraph_node::expand): Use push_cfun and pop_cfun.
* config/i386/i386.c (ix86_code_end): Call
allocate_struct_function before init_function_start.
* config/rs6000/rs6000.c (rs6000_code_end): Likewise.
* function.c (init_function_start): Move preamble to all
callers.
* passes.c (do_per_function_toporder): Use push_cfun and pop_cfun.
(execute_one_pass): Handle newly added TODO_discard_function.
(execute_pass_list_1): Terminate if cfun equals to NULL.
(execute_pass_list): Do not push and pop cfun, expect that
cfun is set.
* tree-pass.h (TODO_discard_function): Define.

From-SVN: r229764
gcc/ChangeLog
gcc/cgraphunit.c
gcc/config/i386/i386.c
gcc/config/rs6000/rs6000.c
gcc/function.c
gcc/passes.c
gcc/tree-pass.h