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]

[PATCH] Use get_create for fn_summary (PR ipa/87491).


Hi.

There's one another ICE when calling fn_summary->get for a node
that's not present. Back-trace is:

(gdb) bt
#0  inline_to_all_callers (node=<cgraph_node * 0x7ffff698f5a0 "*.LTHUNK0"/2>, data=0x7fffffffd690) at /home/marxin/Programming/gcc/gcc/ipa-inline.c:2260
#1  0x0000000000b0b2c1 in cgraph_node::call_for_symbol_and_aliases (include_overwritable=<optimized out>, data=<optimized out>, callback=<optimized out>, this=<optimized out>) at /home/marxin/Programming/gcc/gcc/cgraph.h:3221
#2  cgraph_node::call_for_symbol_and_aliases_1 (this=this@entry=<cgraph_node * const 0x7ffff698f438 "a"/1>, callback=callback@entry=0x1737440 <inline_to_all_callers(cgraph_node*, void*)>, data=data@entry=0x7fffffffd690, 
    include_overwritable=include_overwritable@entry=true) at /home/marxin/Programming/gcc/gcc/cgraph.c:3745
#3  0x0000000001739422 in cgraph_node::call_for_symbol_and_aliases (include_overwritable=true, data=0x7fffffffd690, callback=0x1737440 <inline_to_all_callers(cgraph_node*, void*)>, this=<cgraph_node * const 0x7ffff698f438 "a"/1>)
    at /home/marxin/Programming/gcc/gcc/cgraph.h:3225
#4  ipa_inline () at /home/marxin/Programming/gcc/gcc/ipa-inline.c:2581

with -fdump-ipa-all -fno-inline-small-functions  -O3.
The problematic symbol is:

(gdb) p node
$1 = <cgraph_node * 0x7ffff698f5a0 "*.LTHUNK0"/2>
(gdb) p node->debug()
*.LTHUNK0/2 (int B::*.LTHUNK0(int, int)) @0x7ffff698f5a0
  Type: function definition analyzed alias cpp_implicit_alias
  Visibility: prevailing_def_ironly artificial
  References: _ZN1B1aEii/1 (alias)
  Referring: 
  Availability: available
  First run: 0
  Function flags:
  Called by: virtual int B::_ZTv0_n24_N1B1aEii(int, int)/3 (can throw external) 
  Calls: 

Hope it's fine to use get_create and let the symbol be inlined?
Patch survives tests on x86_64-linux-gnu.

Ready for trunk?
Martin

gcc/ChangeLog:

2018-10-03  Martin Liska  <mliska@suse.cz>

	PR ipa/87491
	* ipa-inline.c (inline_to_all_callers_1): Use ::get_create
	at place where we can have a function that's not
	in summary.
---
 gcc/ipa-inline.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index 025788522fb..eea2888011c 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -2222,7 +2222,7 @@ inline_to_all_callers_1 (struct cgraph_node *node, void *data,
 	  fprintf (dump_file,
 		   "\nInlining %s size %i.\n",
 		   node->name (),
-		   ipa_fn_summaries->get (node)->size);
+		   ipa_fn_summaries->get_create (node)->size);
 	  fprintf (dump_file,
 		   " Called once from %s %i insns.\n",
 		   node->callers->caller->name (),


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]