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

Reply via email to