http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51840
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-01-13 00:53:17 UTC --- I think the problem here is the label references are being moved which is correct as GCC thinks the labels where the address was taken is not going to happen. I don't think you can use asm goto like this. If you want a smaller indirect goto, then file a bug against GCC instead of working around it.