I assumed, at first, that it was somehow falling through the infinite loop and accidentally runnning the unreachable function, but it clearly explicitly runs it in the assembler generated...
edit: ah, it's called from __start, which suggests that main is being elided entirely by the optimiser, and somehow 'unreachable' is simply becoming a defacto 'main'
edit: interestingly enough seems to work on some architectures and not others, a friend of mine tried it and it worked for him. I guess that's why it's an undefined behvaior. :)