public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "hubicka at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/35545] virtual call specialization not happening with FDO Date: Tue, 17 Dec 2013 17:29:00 -0000 [thread overview] Message-ID: <bug-35545-4-SBLpxmM78D@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-35545-4@http.gcc.gnu.org/bugzilla/> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35545 --- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Following patch gets rid of OBJ_TYPE_REF Index: value-prof.c =================================================================== --- value-prof.c (revision 206040) +++ value-prof.c (working copy) @@ -1333,9 +1333,15 @@ gimple_ic (gimple icall_stmt, struct cgr cond_bb = gimple_bb (icall_stmt); gsi = gsi_for_stmt (icall_stmt); - tmp0 = make_temp_ssa_name (optype, NULL, "PROF"); - tmp1 = make_temp_ssa_name (optype, NULL, "PROF"); - tmp = unshare_expr (gimple_call_fn (icall_stmt)); + tmp0 = make_temp_ssa_name (optype, NULL, "SPEC"); + tmp1 = make_temp_ssa_name (optype, NULL, "SPEC"); + tmp = gimple_call_fn (icall_stmt); + + /* Drop OBJ_TYPE_REF expression, it is ignored by rest of + optimization queue anyway. */ + if (TREE_CODE (tmp) == OBJ_TYPE_REF) + tmp = OBJ_TYPE_REF_EXPR (tmp); + tmp = unshare_expr (tmp); load_stmt = gimple_build_assign (tmp0, tmp); gsi_insert_before (&gsi, load_stmt, GSI_SAME_STMT); but it does not help. We end up: _1 = foo; if (_1 == foo) goto <bb 8>; not much better. This nonsense appears only in optimized dump, before we have the following nonsense: # ap_9 = PHI <ap_13(6)> # prephitmp_18 = PHI <&MEM[(void *)&_ZTV1B + 16B](6)> _1 = *prephitmp_18; that is introduced by duplicating <bb 7>: # ap_2 = PHI <ap_8(5), ap_13(6)> # prephitmp_14 = PHI <&MEM[(void *)&_ZTV1A + 16B](5), &MEM[(void *)&_ZTV1B + 16B](6)> _19 = *prephitmp_14; if (_19 == foo) goto <bb 9>; else goto <bb 8>; The following patch: Index: passes.def =================================================================== --- passes.def (revision 206040) +++ passes.def (working copy) @@ -242,9 +242,9 @@ along with GCC; see the file COPYING3. only examines PHIs to discover const/copy propagation opportunities. */ NEXT_PASS (pass_phi_only_cprop); + NEXT_PASS (pass_tracer); NEXT_PASS (pass_vrp); NEXT_PASS (pass_cd_dce); - NEXT_PASS (pass_tracer); NEXT_PASS (pass_dse); NEXT_PASS (pass_forwprop); NEXT_PASS (pass_phiopt); makes us to VRP value through but only when OBJ_TYPE_REF is nout around. I think pushing tracer up is good idea - we should have at least one vrp/ccp pass after tracer. Its main purpose is to provide enough context so those forward propagating passes can do better job. it seems stupid to do it only after everything was finished. I also see why tracer would preffer DCE to be done first, but we have only so many passes to do.
next prev parent reply other threads:[~2013-12-17 17:29 UTC|newest] Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <bug-35545-4@http.gcc.gnu.org/bugzilla/> 2013-12-17 16:34 ` hubicka at gcc dot gnu.org 2013-12-17 17:29 ` hubicka at gcc dot gnu.org [this message] 2013-12-17 18:06 ` rguenther at suse dot de 2013-12-17 18:09 ` hubicka at gcc dot gnu.org 2013-12-17 20:33 ` law at redhat dot com 2013-12-17 20:39 ` hubicka at ucw dot cz 2013-12-17 20:53 ` law at redhat dot com 2013-12-17 21:15 ` hubicka at ucw dot cz 2014-09-25 21:29 ` hubicka at gcc dot gnu.org 2014-09-26 7:44 ` [Bug middle-end/35545] tracer pass is run too late rguenth at gcc dot gnu.org 2014-09-26 15:52 ` law at redhat dot com 2014-09-27 0:04 ` hubicka at gcc dot gnu.org 2014-09-27 0:14 ` hubicka at gcc dot gnu.org 2014-09-27 0:23 ` xinliangli at gmail dot com 2014-09-27 1:04 ` hubicka at ucw dot cz 2014-09-28 18:22 ` xinliangli at gmail dot com 2014-09-29 8:17 ` rguenther at suse dot de 2014-09-29 10:22 ` rguenther at suse dot de 2014-09-29 16:48 ` hubicka at ucw dot cz 2014-09-29 19:30 ` xinliangli at gmail dot com 2014-10-01 11:30 ` mliska at suse dot cz 2008-03-12 5:56 [Bug middle-end/35545] New: virtual call specialization not happening with FDO xinliangli at gmail dot com 2008-03-12 6:08 ` [Bug middle-end/35545] " pinskia at gcc dot gnu dot org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-35545-4-SBLpxmM78D@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).