https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83164
David Malcolm <dmalcolm at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dmalcolm at gcc dot gnu.org --- Comment #6 from David Malcolm <dmalcolm at gcc dot gnu.org> --- (In reply to Gerald Pfeifer from comment #0) [...] > Also the diagnostics look quite odd, don't they? [...] If I strip out the line directives from the .i file, then I get: ddeml.i:8322:28: error: type mismatch in pointer diff expression static struct ddeml_thunk* DDEML_AddThunk(DWORD instId, DWORD pfn16) ^~~~~~~~~~~~~~ from this line in tree-cfg.c: 3996 error ("type mismatch in pointer diff expression"); which is less odd (though not great). If I use stmt->location for the diagnostic (rather than the implicit use of input_location), then I get the much more useful: (gdb) call inform (stmt->location, "") ddeml.i: In function ‘DDEML_AddThunk’: ddeml.i:8342:61: note: thunk->callback = (char *)WDML_InvokeCallback16 - (char *)(&thunk->callback + 1); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~