Files
swift-mirror/test/DebugInfo/liverange-extension.swift
Adrian Prantl 7c763e6f72 Fix a compile time performance regression caused by redundant debug info.
Even at -Onone one SILValue can back up more than one local source variable.
This commit changes the list of variable values into a set.

<rdar://problem/28467349>
2016-09-26 17:33:20 -07:00

28 lines
934 B
Swift

// RUN: %target-swift-frontend %s -g -emit-ir -o - | %FileCheck %s
func use<T>(_ x: T) {}
func getInt32() -> Int32 { return -1 }
public func rangeExtension(_ b: Bool) {
// CHECK: define {{.*}}rangeExtension
let i = getInt32()
// CHECK: llvm.dbg.value(metadata i32 [[I:.*]], i64 0, metadata
use(i)
if b {
let j = getInt32()
// CHECK: llvm.dbg.value(metadata i32 [[I]], i64 0, metadata
// CHECK: llvm.dbg.value(metadata i32 [[J:.*]], i64 0, metadata
use(j)
// CHECK-DAG: {{(asm sideeffect "", "r".*)|(zext i32)}} [[J]]
// CHECK-DAG: asm sideeffect "", "r"
}
let z = getInt32()
use(z)
// CHECK-NOT: llvm.dbg.value(metadata i32 [[J]], i64 0, metadata
// CHECK-DAG: llvm.dbg.value(metadata i32 [[I]], i64 0, metadata
// CHECK-DAG: llvm.dbg.value(metadata i32 [[Z:.*]], i64 0, metadata
// CHECK-DAG: {{(asm sideeffect "", "r".*)|(zext i32)}} [[I]]
// CHECK-DAG: asm sideeffect "", "r"
}