and that did the trick! BTW where does one find that (__inline) documented? I've read through the cc manpage and the optimization and tuning guide and I don't recall ever seeing that anywhere..
ok now - I came across a problem I've been trying to figure out for the past few days - I really can't tell whats going on here - it seems this is a 2D array declaration, and cc really doesn't like it - I have no idea if this is a GCC-ism or if its easily fixed or what's the heck to make of it. Any ideas?
Code:
static const unsigned int st[][0x102] = {
[STATE_ERROR] = {
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_BEGIN] = {
[' '] = STATE_BEGIN,
['\f'] = STATE_BEGIN,
['\n'] = STATE_BEGIN,
['\r'] = STATE_BEGIN,
['\t'] = STATE_BEGIN,
['\v'] = STATE_BEGIN,
[';'] = (STATE_ERROR | ACTION_ERROR),
['#'] = STATE_COMMENT,
['\''] = STATE_KEYSQ,
['"'] = STATE_KEYDQ,
['\\'] = STATE_KEYBS,
['='] = (STATE_ERROR | ACTION_ERROR),
[0x100] = (STATE_KEY | ACTION_STORE),
[0x101] = 0
},
[STATE_COMMENT] = {
['\n'] = STATE_BEGIN,
[0x100] = STATE_COMMENT,
[0x101] = 0
},
[STATE_KEY] = {
[' '] = (STATE_BEQ | ACTION_KEY),
['\f'] = (STATE_BEQ | ACTION_KEY),
['\n'] = (STATE_BEQ | ACTION_KEY),
['\r'] = (STATE_BEQ | ACTION_KEY),
['\t'] = (STATE_BEQ | ACTION_KEY),
['\v'] = (STATE_BEQ | ACTION_KEY),
['\''] = STATE_KEYSQ,
['\"'] = STATE_KEYDQ,
[';'] = (STATE_ERROR | ACTION_ERROR),
['='] = (STATE_AEQ | ACTION_KEY),
['#'] = (STATE_ERROR | ACTION_ERROR),
['\\'] = STATE_KEYBS,
[0x100] = (STATE_KEY | ACTION_STORE),
[0x101] = ACTION_ERROR
},
[STATE_KEYBS] = {
['f'] = (STATE_KEY | ACTION_STORE_MOD),
['n'] = (STATE_KEY | ACTION_STORE_MOD),
['r'] = (STATE_KEY | ACTION_STORE_MOD),
['t'] = (STATE_KEY | ACTION_STORE_MOD),
['v'] = (STATE_KEY | ACTION_STORE_MOD),
['x'] = STATE_KEYBSX1,
['\n'] = STATE_KEY,
[0x100] = (STATE_KEY | ACTION_STORE),
[0x101] = ACTION_ERROR
},
[STATE_KEYBSX1] = {
HEX_INDICES(STATE_KEYBSX2 | ACTION_STORE_HEX1),
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_KEYBSX2] = {
HEX_INDICES(STATE_KEY | ACTION_STORE_HEX2),
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_KEYSQ] = {
['\''] = STATE_KEY,
[0x100] = (STATE_KEYSQ | ACTION_STORE),
[0x101] = ACTION_ERROR
},
[STATE_KEYDQ] = {
['"'] = STATE_KEY,
['\\'] = STATE_KEYDQBS,
[0x100] = (STATE_KEYDQ | ACTION_STORE),
[0x101] = ACTION_ERROR
},
[STATE_KEYDQBS] = {
['f'] = (STATE_KEYDQ | ACTION_STORE_MOD),
['n'] = (STATE_KEYDQ | ACTION_STORE_MOD),
['r'] = (STATE_KEYDQ | ACTION_STORE_MOD),
['t'] = (STATE_KEYDQ | ACTION_STORE_MOD),
['v'] = (STATE_KEYDQ | ACTION_STORE_MOD),
['x'] = STATE_KEYDQBSX1,
['\n'] = STATE_KEYDQ,
[0x100] = (STATE_KEYDQ | ACTION_STORE),
[0x101] = ACTION_ERROR
},
[STATE_KEYDQBSX1] = {
HEX_INDICES(STATE_KEYDQBSX2 | ACTION_STORE_HEX1),
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_KEYDQBSX2] = {
HEX_INDICES(STATE_KEYDQ | ACTION_STORE_HEX2),
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_BEQ] = {
[' '] = STATE_BEQ,
['\f'] = STATE_BEQ,
['\n'] = STATE_BEQ,
['\r'] = STATE_BEQ,
['\t'] = STATE_BEQ,
['\v'] = STATE_BEQ,
['='] = STATE_AEQ,
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_AEQ] = {
[' '] = STATE_AEQ,
['\f'] = STATE_AEQ,
['\n'] = STATE_AEQ,
['\r'] = STATE_AEQ,
['\t'] = STATE_AEQ,
['\v'] = STATE_AEQ,
['\''] = STATE_VALSQ,
['\"'] = STATE_VALDQ,
['\\'] = STATE_VALBS,
['='] = (STATE_ERROR | ACTION_ERROR),
['#'] = (STATE_COMMENT | ACTION_VALUE),
[';'] = (STATE_BEGIN | ACTION_VALUE),
[0x100] = (STATE_VALUE | ACTION_STORE),
[0x101] = ACTION_VALUE
},
[STATE_VALUE] = {
[' '] = (STATE_VALEND | ACTION_VALUE),
['\f'] = (STATE_VALEND | ACTION_VALUE),
['\n'] = (STATE_BEGIN | ACTION_VALUE),
['\r'] = (STATE_VALEND | ACTION_VALUE),
['\t'] = (STATE_VALEND | ACTION_VALUE),
['\v'] = (STATE_VALEND | ACTION_VALUE),
['\''] = STATE_VALSQ,
['\"'] = STATE_VALDQ,
[';'] = (STATE_BEGIN | ACTION_VALUE),
['='] = (STATE_ERROR | ACTION_ERROR),
['#'] = (STATE_COMMENT | ACTION_VALUE),
['\\'] = STATE_VALBS,
[0x100] = (STATE_VALUE | ACTION_STORE),
[0x101] = ACTION_VALUE
},
[STATE_VALBS] = {
['f'] = (STATE_VALUE | ACTION_STORE_MOD),
['n'] = (STATE_VALUE | ACTION_STORE_MOD),
['r'] = (STATE_VALUE | ACTION_STORE_MOD),
['t'] = (STATE_VALUE | ACTION_STORE_MOD),
['v'] = (STATE_VALUE | ACTION_STORE_MOD),
['x'] = STATE_VALBSX1,
['\n'] = STATE_VALUE,
[0x100] = (STATE_VALUE | ACTION_STORE),
[0x101] = ACTION_ERROR
},
[STATE_VALBSX1] = {
HEX_INDICES(STATE_VALBSX2 | ACTION_STORE_HEX1),
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_VALBSX2] = {
HEX_INDICES(STATE_VALUE | ACTION_STORE_HEX2),
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_VALSQ] = {
['\''] = STATE_VALUE,
[0x100] = (STATE_VALSQ | ACTION_STORE),
[0x101] = ACTION_ERROR
},
[STATE_VALDQ] = {
['"'] = STATE_VALUE,
['\\'] = STATE_VALDQBS,
[0x100] = (STATE_VALDQ | ACTION_STORE),
[0x101] = ACTION_ERROR
},
[STATE_VALDQBS] = {
['f'] = (STATE_VALDQ | ACTION_STORE_MOD),
['n'] = (STATE_VALDQ | ACTION_STORE_MOD),
['r'] = (STATE_VALDQ | ACTION_STORE_MOD),
['t'] = (STATE_VALDQ | ACTION_STORE_MOD),
['v'] = (STATE_VALDQ | ACTION_STORE_MOD),
['x'] = STATE_VALDQBSX1,
['\n'] = STATE_VALDQ,
[0x100] = (STATE_VALDQ | ACTION_STORE),
[0x101] = ACTION_ERROR
},
[STATE_VALDQBSX1] = {
HEX_INDICES(STATE_VALDQBSX2 | ACTION_STORE_HEX1),
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_VALDQBSX2] = {
HEX_INDICES(STATE_VALDQ | ACTION_STORE_HEX2),
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = ACTION_ERROR
},
[STATE_VALEND] = {
[' '] = STATE_VALEND,
['\f'] = STATE_VALEND,
['\n'] = STATE_BEGIN,
['\r'] = STATE_VALEND,
['\t'] = STATE_VALEND,
['\v'] = STATE_VALEND,
[';'] = STATE_BEGIN,
['#'] = STATE_COMMENT,
[0x100] = (STATE_ERROR | ACTION_ERROR),
[0x101] = 0
}
};