// RUN: %target-sil-opt -sil-verify-all -sil-combine %s | %FileCheck %s // RUN: %target-swift-frontend -g -O -emit-ir -primary-file %s | %FileCheck --check-prefix=CHECK-IR %s sil_stage canonical import Builtin import Swift // CHECK-LABEL: sil {{.*}} @test_nested_index_addr // CHECK-IR-LABEL: define {{.*}} @test_nested_index_addr sil hidden @test_nested_index_addr : $@convention(thin) (Builtin.RawPointer) -> Builtin.RawPointer { bb0(%0 : $Builtin.RawPointer): %offset1 = integer_literal $Builtin.Word, 3 %offset2 = integer_literal $Builtin.Word, 7 // CHECK: %[[ADDR:.+]] = pointer_to_address %0 %addr = pointer_to_address %0 : $Builtin.RawPointer to [strict] $*UInt8 %addr1 = index_addr %addr : $*UInt8, %offset1 : $Builtin.Word // CHECK: debug_value %[[ADDR]] : $*UInt8, let, name "hello" // CHECK-SAME: expr op_constu:3:op_plus:op_deref // CHECK-IR: call void @llvm.dbg.value(metadata ptr %0, metadata ![[DBG_VAR:[0-9]+]], // CHECK-IR-SAME: !DIExpression(DW_OP_constu, 3, DW_OP_plus, DW_OP_deref) debug_value %addr1 : $*UInt8, let, name "hello", expr op_deref %addr2 = index_addr %addr1 : $*UInt8, %offset2 : $Builtin.Word %ptr = address_to_pointer %addr2 : $*UInt8 to $Builtin.RawPointer return %ptr : $Builtin.RawPointer } // CHECK-IR: ![[DBG_VAR]] = !DILocalVariable(name: "hello"