http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53460

--- Comment #7 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-05-24 
10:50:42 UTC ---
We have an unreachable block:

  # BLOCK 4
  # PRED:
<L0>:
  operator delete (D.2260_4);
  # SUCC: 5 [100.0%]  (fallthru)

after profiling.  Somehow we transform

void offsetToMiddleOfGlyph(const SimpleFontData*) (const struct SimpleFontData
* fontData)
{
  void * D.2260;

  # BLOCK 2 freq:10000
  # PRED: ENTRY [100.0%]  (fallthru,exec)
  D.2260_4 = operator new (1);
  GlyphMetricsMap<int>::GlyphMetricsMap (D.2260_4);
  goto <bb 4>;
  # SUCC: 4 [100.0%]  (fallthru,exec) 3 (eh,exec)

  # BLOCK 3
  # PRED: 2 (eh,exec)
<L0>:
  operator delete (D.2260_4);
  resx 1
  # SUCC:

to

void offsetToMiddleOfGlyph(const SimpleFontData*) (const struct SimpleFontData
* fontData)
{
  void * __gcov_indirect_call_callee.8;
  long int * __gcov_indirect_call_counters.7;
  long int PROF_edge_counter.6;
  void * D.2260;

  # BLOCK 2 freq:10000
  # PRED: ENTRY [100.0%]  (fallthru,exec)
  __gcov_indirect_call_counters.7_15 = __gcov_indirect_call_counters;
  __gcov_indirect_call_callee.8_16 = __gcov_indirect_call_callee;
  __gcov_indirect_call_profiler (__gcov_indirect_call_counters.7_15, 2,
offsetToMiddleOfGlyph, __gcov_indirect_call_callee.8_16);
  __gcov_indirect_call_callee = 0B;
  PROF_edge_counter.6_6 =
__gcov0._Z21offsetToMiddleOfGlyphPK14SimpleFontData[0];
  PROF_edge_counter.6_8 = PROF_edge_counter.6_6 + 1;
  __gcov0._Z21offsetToMiddleOfGlyphPK14SimpleFontData[0] =
PROF_edge_counter.6_8;
  D.2260_4 = operator new (1);
  # SUCC: 3 [100.0%]  (fallthru)

  # BLOCK 3 freq:10000
  # PRED: 2 [100.0%]  (fallthru)
  PROF_edge_counter.6_9 =
__gcov0._Z21offsetToMiddleOfGlyphPK14SimpleFontData[1];
  PROF_edge_counter.6_10 = PROF_edge_counter.6_9 + 1;
  __gcov0._Z21offsetToMiddleOfGlyphPK14SimpleFontData[1] =
PROF_edge_counter.6_10;
  GlyphMetricsMap<int>::GlyphMetricsMap (D.2260_4);
  goto <bb 6>;
  # SUCC: 6 [100.0%]  (fallthru,exec)

  # BLOCK 4
  # PRED:
<L0>:
  operator delete (D.2260_4);
  # SUCC: 5 [100.0%]  (fallthru)



branch_prob () splits the block this way, invalidating EH edges.

Reply via email to