Hello Kobold.
The enum test in your example doesn't produce any warnings. The following patched code does:
typedef enum
{
EOPTION0=1, //Don't produce any member == 0
EOPTION1,
EOPTION2,
EOPTION3,
EOPTION4,
EOPTION5,
EOPTION6,
ENUMOPTIONS
} TestEnum;
TestEnum e = 0; //Warning is issued here.
In any case the value 0 is not strictly a member of the enum, and it is just a warning, you can disable it using pragmas.
IMHO the abuse made in many codes to force enum values that are not declared in the enumeration should be an error, why you use an enumeration if then you use arbitrary values? Just define an integer and some constants...
For the assembler part confirmed the bug.
Just commenting the line:
RightSkipLoop: // skip along until we hit and end-of-line marker
Produce an error, and the warning about to limited portability of assembler code, but not crash with '
fatal error: Internal error: 'Access violation' at 0x00.........'. This means that the problem is at code generation or optimization level.