https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96566
--- Comment #5 from Tom de Vries <vries at gcc dot gnu.org> --- Then with this in addition: ... @@ -2202,7 +2202,7 @@ nvptx_assemble_decl_begin (FILE *file, const char *name, const char *section, /* Neither vector nor complex types can contain the other. */ type = TREE_TYPE (type); - unsigned elt_size = int_size_in_bytes (type); + unsigned HOST_WIDE_INT elt_size = int_size_in_bytes (type); /* Largest mode we're prepared to accept. For BLKmode types we don't know if it'll contain pointer constants, so have to choose ... we have: ... // BEGIN GLOBAL VAR DEF: xm3_3 .visible .global .align 1 .u32 xm3_3[2305843009213693952] = { 0, 0, 0, ... where 2305843009213693952 is 0x2000000000000000, so this claims one byte more than required (due to using .u32). This may cause an overflow in ptx, not sure yet.