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

--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-03-07 
13:53:50 UTC ---
I believe that the nonlocal gotos should be represented correctly in function
marked noreturn. So i think noreturn function can do nonlocal goto...

I get following CFG:

x (int a)
{
  struct FRAME.x FRAME.0;

  # BLOCK 2 freq:10000
  # PRED: ENTRY [100.0%]  (fallthru,exec)
  y (a_1(D)); [static-chain: &FRAME.0]
  # SUCC: 3 [100.0%]  (ab,exec)

  # BLOCK 3 freq:10000
  # PRED: 2 [100.0%]  (ab,exec)
<L0>: [non-local]
  # SUCC: 4 [100.0%]  (fallthru,exec)

  # BLOCK 4 freq:10000
  # PRED: 3 [100.0%]  (fallthru,exec)
xlab:
  return a_1(D);
  # SUCC: EXIT [100.0%]

}

this seems all right (i.e. there is abnormal edge to BB 3 for non-local goto)
We need to work out what really goes wrong for m68.

Honza

Reply via email to