https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69704
Bug ID: 69704 Summary: goto *42 is not diagnosed Product: gcc Version: 5.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: Keith.S.Thompson at gmail dot com Target Milestone: --- This program: int main(void) { goto *(void*)42; } shows a legal use of gcc's computed goto extension. This program: int main(void) { goto *42; } results in the same generated machine code, but is not consistent with the documented extension, which permits the expression following "goto *" to be of type void*. (An int value can be converted to void*, but only via an explicit cast, or in the special case of a null pointer constant.) The expression *42 by itself is correctly diagnosed as an error. $ uname -a Linux bomb20 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 GNU/Linux $ gcc --version gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4 This was inspired by this question on Stack Overflow: http://stackoverflow.com/q/35236834/827263 posted by user Sarvadi.