const char AA @private = (char)~(char)(0);
const char BB = 200 ;
const uint CC @private = ~(uint)(0);
const uint DD @private = FOO;

const FOO @private = ~(uint)(0);

uint x @private = AA;
uint z @private = CC;
char w @private = (char)(FOO);
ushort v @private = (ushort)(FOO);
uint z2 @private = DD;

fn void test()
{
    int xx = (int)FOO;
    uint* yy = &&FOO;
}

/* #expect: constants.ll

@constants.AA = internal unnamed_addr constant i8 -1, align 1
@constants.BB = local_unnamed_addr constant i8 -56, align 1
@constants.CC = internal unnamed_addr constant i32 -1, align 4
@constants.DD = internal unnamed_addr constant i32 -1, align 4
@constants.FOO = internal unnamed_addr constant i32 -1, align 4
@constants.x = internal unnamed_addr global i32 255, align 4
@constants.z = internal unnamed_addr global i32 -1, align 4
@constants.w = internal unnamed_addr global i8 -1, align 1
@constants.v = internal unnamed_addr global i16 -1, align 2
@constants.z2 = internal unnamed_addr global i32 -1, align 4

entry:
  %xx = alloca i32, align 4
  %yy = alloca ptr, align 8
  %taddr = alloca i32, align 4
  store i32 -1, ptr %xx, align 4
  store i32 -1, ptr %taddr, align 4
  store ptr %taddr, ptr %yy, align 8
  ret void