http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37743
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Joseph S. Myers from comment #4) > Because my bug 448 patch isn't complete (doesn't give knowledge of the > stdint.h types for all targets), it doesn't yet fix this issue; it defines > c_uint32_type_node and c_uint64_type_node to be the normal C types used > in stdint.h where those are known to GCC. Once GCC knows the stdint.h > types on all targets, we can get rid of the special uint32_type_node > and uint64_type_node, renaming c_uint32_type_node and c_uint64_type_node > to those names, and then the built-in function will return a normal C type. So, can't c_common_nodes_and_builtins at least for now just if (UINT32_TYPE) uint32_type_node = c_uint32_type_node = TREE_TYPE (identifier_global_value (c_get_ident (UINT32_TYPE))); , etc. (for all the c_*type_node which have middle-end counterparts that are then used for the builtins)? That way, this would work at least on the targets that define the relevant macros. Or perhaps instead after all the c_*type_node assignments do: if (c_uint32_type_node && TYPE_PRECISION (c_uint32_type_node) == TYPE_PRECISION (uint32_type_node) && TYPE_UNSIGNED (c_uint32_type_node) == TYPE_PRECISION (uint32_type_node)) uint32_type_node = c_uint32_type_node; (but perhaps that is too much paranoia).