This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Re: Option -fprofile-arcs fails for target avr and fr30
- From: Nathan Sidwell <nathan at codesourcery dot com>
- To: Jie Zhang <zhangjie at magima dot com dot cn>
- Cc: gcc at gcc dot gnu dot org, Jan Hubicka <jh at suse dot cz>
- Date: Mon, 19 May 2003 10:07:40 +0100
- Subject: Re: [PATCH] Re: Option -fprofile-arcs fails for target avr and fr30
- Organization: Codesourcery LLC
- References: <3EC4B4D8.1040504@magima.com.cn> <3EC84136.6040705@magima.com.cn>
Jie Zhang wrote:
The following patch may fix this problem.
- J
2003-05-12 Jie Zhang <zhangjie@magima.com.cn>
Fix the FAILs of gcc.misc-tests/bprob-1.c and
gcc.misc-tests/bprob-2.c
on target avr and fr30.
* cfgbuild.c (make_edges): Find JUMP_LABELs for the new JUMP_INSNs
introduced by instrument code after jump optimization pass.
It would probably be sensible to only enable that code when flag_profile_arcs
is true -- otherwise you might be hiding a bug in GCC. Jan, what do you
think?
nathan
--- cfgbuild.c 2003-01-09 20:40:44.000000000 +0800
+++ cfgbuild-new.c 2003-05-19 09:58:23.000000000 +0800
@@ -398,8 +398,17 @@ make_edges (label_value_list, min, max,
/* Otherwise, we have a plain conditional or unconditional
jump. */
else
{
+ rtx tmp;
+
+ /* Instrument code may introduce new JUMP_INSNs after jump
+ optimization pass. So we find JUMP_LABELs for these new
+ JUMP_INSNs. */
+ if (! JUMP_LABEL (insn) && (tmp = condjump_label (insn)))
+ JUMP_LABEL (insn) = XEXP (tmp, 0);
+
if (! JUMP_LABEL (insn))
abort ();
+
make_label_edge (edge_cache, bb, JUMP_LABEL (insn), 0);
}
}
--
Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC
The voices in my head said this was stupid too
nathan@codesourcery.com :: http://www.planetfall.pwp.blueyonder.co.uk