This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi Richard, On 20/10/16 18:41, Richard Biener wrote:
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 ());
Attached patch does this. Bootstrapped and regression tested on x86_64-linux-gnu. Is this OK?
Thanks, Kugan
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, KuganHonzaRichard.Thanks, KuganRichard.Attached patch bootstraps and regression testing didn't introduce any new regressions. Thanks, Kugan gcc/ChangeLog: 2016-10-19 Kugan Vivekanandarajah <kuganv@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 <kuganv@linaro.org> * gcc.dg/ipa/vrp5.c: New test. * gcc.dg/ipa/vrp6.c: New test.-- Richard Biener <rguenther@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)
Attachment:
p.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |