Index: lib/CodeGen/AsmPrinter/AsmPrinter.cpp =================================================================== --- lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -1719,6 +1719,7 @@ // blockaddress labels. Since the two labels are in the same function, it // is reasonable to treat their delta as a 32-bit value. // FALL THROUGH. + case Instruction::AddrSpaceCast: case Instruction::BitCast: return lowerConstant(CE->getOperand(0)); Index: test/CodeGen/NVPTX/addrspacecast-gvar.ll =================================================================== --- test/CodeGen/NVPTX/addrspacecast-gvar.ll +++ test/CodeGen/NVPTX/addrspacecast-gvar.ll @@ -3,7 +3,9 @@ ; CHECK: .visible .global .align 4 .u32 g = 42; ; CHECK: .visible .global .align 4 .u32 g2 = generic(g); ; CHECK: .visible .global .align 4 .u32 g3 = g; +; CHECK: .visible .global .align 8 .u32 g4[2] = {0, g+8}; @g = addrspace(1) global i32 42 @g2 = addrspace(1) global i32* addrspacecast (i32 addrspace(1)* @g to i32*) @g3 = addrspace(1) global i32 addrspace(1)* @g +@g4 = constant {i32*, i32*} {i32* null, i32* getelementptr (i32, i32* addrspacecast (i32 addrspace(1)* @g to i32*), i32 2)}