On Thu, 20 Oct 2016, kugan wrote: > > > On 20/10/16 01:26, Jan Hubicka wrote: > > > > Would excluding weak symbols (I believe I can check DECL_WEAK for this) > > > > good > > > > enough. Or looking for acceptable subset would work? > > > > > > I think we should add a symtab helper to tell if address_nonzero_p (if > > > that doesn't aleady exist). > > > > We have node->nonzero_address() > > Thanks for the pointer. Here is an attempt. Does this look OK? > > + if (TREE_CODE (arg) == ADDR_EXPR) > + { > + /* See if the AADR_EXPR is nonnull. */ > + varpool_node *node = NULL; > + tree base = TREE_OPERAND (arg, 0); > + base = get_base_address (base); > + > + if (decl_address_ip_invariant_p (base) > + || !is_global_var (base)) > + { > + /* If the symbol address is local or > + constant. */
"constant" doesn't matter. You want if (TREE_CODE (base) == CONST_DECL || TREE_CODE (base) == PARM_DECL || TREE_CODE (base) == RESULT_DECL) addr_nonzero = true; else if (VAR_P (base)) addr_nonzero = ! is_global_var (base) || (varpool_node::get (base)->nonzero_address ()); Richard. > + addr_nonzero = true; > + } > + else > + { > + /* If symbol address is nonzero_address. */ > + node = varpool_node::get (base); > + if (node && node->nonzero_address ()) > + addr_nonzero = true; > + } > + } > > Attached patch passes bootstrap and regression testing on x86_64-linu-gnu. > > Thanks, > Kugan > > > > > Honza > > > > > > Richard. > > > > > > > Thanks, > > > > Kugan > > > > > > > > > > > > > > Richard. > > > > > > > > > > > Attached patch bootstraps and regression testing didn't introduce > > > > > > any new > > > > > > regressions. > > > > > > > > > > > > Thanks, > > > > > > Kugan > > > > > > > > > > > > > > > > > > gcc/ChangeLog: > > > > > > > > > > > > 2016-10-19 Kugan Vivekanandarajah <kug...@linaro.org> > > > > > > > > > > > > * ipa-prop.c (ipa_compute_jump_functions_for_edge): Set > > > > > > value range to nonull for ADDR_EXPR. > > > > > > > > > > > > gcc/testsuite/ChangeLog: > > > > > > > > > > > > 2016-10-19 Kugan Vivekanandarajah <kug...@linaro.org> > > > > > > > > > > > > * gcc.dg/ipa/vrp5.c: New test. > > > > > > * gcc.dg/ipa/vrp6.c: New test. > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Richard Biener <rguent...@suse.de> > > > SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB > > > 21284 (AG Nuernberg) > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)