On 25 August 2016 at 19:14, Jan Hubicka <hubi...@ucw.cz> wrote: >> Patch for performing interprocedural bitwise constant propagation. >> >> 2016-08-23 Prathamesh Kulkarni <prathamesh.kulka...@linaro.org> >> Martin Jambhor <mjam...@suse.cz> >> >> * common.opt: New option -fipa-cp-bit. >> * doc/invoke.texi: Document -fipa-cp-bit. >> * opts.c (default_options_table): Add entry for -fipa-cp-bit. > > Bitwise intraprocedural ccp is enabled by -ftree-bit-cp, so I think the > option name should be -fipa-bit-cp so things are more consistent. > > Patch is OK with this change. Thanks, committed the patch as r239769. As next steps, I will try to merge bitwise and pointer-alignment propagation.
Thanks, Prathamesh > > Thanks! > Honza >> (enable_fdo_optimizations): Check for flag_ipa_cp_bit. >> * tree-ssa-ccp.h: New header file. >> * tree-ssa-ccp.c: Include tree-ssa-ccp.h >> (bit_value_binop_1): Change to bit_value_binop_1 and export it. >> Replace all occurences of tree parameter by two new params: signop, >> int. >> (bit_value_unop_1): Change to bit_value_unop and export it. >> Replace all occurences of tree parameter by two new params: signop, >> int. >> (bit_value_binop): Change call from bit_value_binop_1 to >> bit_value_binop. >> (bit_value_assume_aligned): Likewise. >> (bit_value_unop): Change call from bit_value_unop_1 to bit_value_unop. >> (do_ssa_ccp): Pass nonzero_p || flag_ipa_cp_bit instead of nonzero_p >> to ccp_finalize. >> (ccp_finalize): Skip processing if val->mask == 0. >> * ipa-cp.c: Include tree-ssa-ccp.h >> (ipcp_bits_lattice): New class. >> (ipcp_param_lattice (bits_lattice): New member. >> (print_all_lattices): Call ipcp_bits_lattice::print. >> (set_all_contains_variable): Call ipcp_bits_lattice::set_to_bottom. >> (initialize_node_lattices): Likewise. >> (propagate_bits_accross_jump_function): New function. >> (propagate_constants_accross_call): Call >> propagate_bits_accross_jump_function. >> (ipcp_propagate_stage): Store parameter types when in_lto_p is true. >> (ipcp_store_bits_results): New function. >> (ipcp_driver): Call ipcp_store_bits_results. >> * ipa-prop.h (ipa_bits): New struct. >> (ipa_jump_func): Add new member bits of type ipa_bits. >> (ipa_param_descriptor): Change decl to decl_or_type. >> (ipa_get_param): Change decl to decl_or_type and assert on >> PARM_DECL. >> (ipa_get_type): New function. >> (ipcp_transformation_summary): New member bits. >> * ipa-prop.c (ipa_get_param_decl_index_1): s/decl/decl_or_type. >> (ipa_populate_param_decls): Likewise. >> (ipa_dump_param): Likewise. >> (ipa_print_node_jump_functions_for_edge): Pretty-print ipa_bits jump >> function. >> (ipa_set_jf_unknown): Set ipa_bits::known to false. >> (ipa_compute_jump_functions_for_edge): Compute jump function for bits >> propagation. >> (ipa_node_params_t::duplicate): Copy src->bits into dst->bits. >> (ipa_write_jump_function): Add streaming for ipa_bits. >> (ipa_read_jump_function): Add support for reading streamed ipa_bits. >> (write_ipcp_transformation_info): Add streaming for ipa_bits >> summary for ltrans. >> (read_ipcp_transfomration_info): Add support for reading streamed >> ipa_bits. >> (ipcp_update_bits): New function. >> (ipcp_transform_function): Call ipcp_update_bits. >> >