On Thu, 14 Jun 2018, Martin Sebor wrote: > Hmm, I thought fileptr_type_node was a node for FILE*, but it's > actually the same as ptr_type_node, i.e., void*, so the built-in > fprintf expects a void* argument (and declaring it to take a FILE* > triggers the new warning). That seems odd. What purpose does it > serve? (AFAICS, it's not used anywhere except jit). > > I would expect fileptr_type_node to be set to correspond to > FILE* once FILE is declared. Why is that not done?
The built-in functions (which use fileptr_type_node via BT_FILEPTR in builtin-types.def) are defined long before any definition of FILE is known. FILE may be a macro not just a typedef, and the user is free to have an unrelated definition of FILE if they don't include <stdio.h> or another standard header defining FILE in that translation unit. -- Joseph S. Myers jos...@codesourcery.com