Due to special treatment of types, emitting variables of type _Bool in global scope is impossible: extern references are emitted with .u8, but definitions use .u64. This patch fixes the issue by treating boolean type as integer types.
* config/nvptx/nvptx.c (init_output_initializer): Also accept BOOLEAN_TYPE. --- gcc/config/nvptx/nvptx.c | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index 779b018..cfb5c4f 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -1863,6 +1863,7 @@ init_output_initializer (FILE *file, const char *name, const_tree type, int sz = int_size_in_bytes (type); if ((TREE_CODE (type) != INTEGER_TYPE && TREE_CODE (type) != ENUMERAL_TYPE + && TREE_CODE (type) != BOOLEAN_TYPE && TREE_CODE (type) != REAL_TYPE) || sz < 0 || sz > HOST_BITS_PER_WIDE_INT)