Does "complex xxx" work?

Joseph S. Myers jsm28@cam.ac.uk
Sat Jun 21 21:22:00 GMT 2003


On Sat, 21 Jun 2003, H. J. Lu wrote:

> c_common_nodes_and_builtins calls
> 
>   (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
>                                             get_identifier ("complex int"),
>                                             complex_integer_type_node));
>   (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
>                                             get_identifier ("complex float"),
>                                             complex_float_type_node));
>   (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
>                                             get_identifier ("complex double"),
>                                             complex_double_type_node));
>   (*lang_hooks.decls.pushdecl)
>     (build_decl (TYPE_DECL, get_identifier ("complex long double"),
>                  complex_long_double_type_node));

Debug information, I suspect.  (As names with spaces in, they can't appear
as identifiers in source code, so shouldn't be useful for anything else.)  
The keywords are _Complex (C99), __complex (traditional GNU) and
__complex__ (traditional GNU) and "complex" is a macro in <complex.h>
only.

Some of the types with spaces in are defined for C++ only ("unsigned long"  
as opposed to "long unsigned int", ...) - again, I suppose these
definitions may be for debug info, as they aren't related to source
parsing - but I don't know whether in fact they should be C++-only: those
conditionals simply reflect merging similar but nonidentical code defining
built-in types in the C and C++ front ends.

-- 
Joseph S. Myers
jsm28@cam.ac.uk



More information about the Gcc mailing list