1844b5327SAndreas Jonson; RUN: opt -passes=mergefunc -S < %s | FileCheck %s 2844b5327SAndreas Jonson 3844b5327SAndreas Jonsondefine i8 @call_with_range_attr(i8 range(i8 0, 2) %v) { 4844b5327SAndreas Jonson %out = call i8 @dummy2(i8 %v) 5844b5327SAndreas Jonson ret i8 %out 6844b5327SAndreas Jonson} 7844b5327SAndreas Jonson 8844b5327SAndreas Jonsondefine i8 @call_no_range_attr(i8 %v) { 9844b5327SAndreas Jonson; CHECK-LABEL: @call_no_range_attr 10844b5327SAndreas Jonson; CHECK-NEXT: %out = call i8 @dummy2(i8 %v) 11844b5327SAndreas Jonson; CHECK-NEXT: ret i8 %out 12844b5327SAndreas Jonson %out = call i8 @dummy2(i8 %v) 13844b5327SAndreas Jonson ret i8 %out 14844b5327SAndreas Jonson} 15844b5327SAndreas Jonson 16844b5327SAndreas Jonsondefine i8 @call_different_range_attr(i8 range(i8 5, 7) %v) { 17844b5327SAndreas Jonson; CHECK-LABEL: @call_different_range_attr 18844b5327SAndreas Jonson; CHECK-NEXT: %out = call i8 @dummy2(i8 %v) 19844b5327SAndreas Jonson; CHECK-NEXT: ret i8 %out 20844b5327SAndreas Jonson %out = call i8 @dummy2(i8 %v) 21844b5327SAndreas Jonson ret i8 %out 22844b5327SAndreas Jonson} 23844b5327SAndreas Jonson 24844b5327SAndreas Jonsondefine i8 @call_with_range() { 25844b5327SAndreas Jonson %out = call range(i8 0, 2) i8 @dummy() 26844b5327SAndreas Jonson ret i8 %out 27844b5327SAndreas Jonson} 28844b5327SAndreas Jonson 29844b5327SAndreas Jonsondefine i8 @call_no_range() { 30844b5327SAndreas Jonson; CHECK-LABEL: @call_no_range 31844b5327SAndreas Jonson; CHECK-NEXT: %out = call i8 @dummy() 32844b5327SAndreas Jonson; CHECK-NEXT: ret i8 %out 33844b5327SAndreas Jonson %out = call i8 @dummy() 34844b5327SAndreas Jonson ret i8 %out 35844b5327SAndreas Jonson} 36844b5327SAndreas Jonson 37844b5327SAndreas Jonsondefine i8 @call_different_range() { 38844b5327SAndreas Jonson; CHECK-LABEL: @call_different_range 39844b5327SAndreas Jonson; CHECK-NEXT: %out = call range(i8 5, 7) i8 @dummy() 40844b5327SAndreas Jonson; CHECK-NEXT: ret i8 %out 41844b5327SAndreas Jonson %out = call range(i8 5, 7) i8 @dummy() 42844b5327SAndreas Jonson ret i8 %out 43844b5327SAndreas Jonson} 44844b5327SAndreas Jonson 45844b5327SAndreas Jonsondefine i8 @invoke_with_range() personality ptr undef { 46844b5327SAndreas Jonson %out = invoke range(i8 0, 2) i8 @dummy() to label %next unwind label %lpad 47844b5327SAndreas Jonson 48844b5327SAndreas Jonsonnext: 49844b5327SAndreas Jonson ret i8 %out 50844b5327SAndreas Jonson 51844b5327SAndreas Jonsonlpad: 52844b5327SAndreas Jonson %pad = landingpad { ptr, i32 } cleanup 53844b5327SAndreas Jonson resume { ptr, i32 } zeroinitializer 54844b5327SAndreas Jonson} 55844b5327SAndreas Jonson 56844b5327SAndreas Jonsondefine i8 @invoke_no_range() personality ptr undef { 57844b5327SAndreas Jonson; CHECK-LABEL: @invoke_no_range() 58844b5327SAndreas Jonson; CHECK-NEXT: invoke i8 @dummy 59844b5327SAndreas Jonson %out = invoke i8 @dummy() to label %next unwind label %lpad 60844b5327SAndreas Jonson 61844b5327SAndreas Jonsonnext: 62844b5327SAndreas Jonson ret i8 %out 63844b5327SAndreas Jonson 64844b5327SAndreas Jonsonlpad: 65844b5327SAndreas Jonson %pad = landingpad { ptr, i32 } cleanup 66844b5327SAndreas Jonson resume { ptr, i32 } zeroinitializer 67844b5327SAndreas Jonson} 68844b5327SAndreas Jonson 69844b5327SAndreas Jonsondefine i8 @invoke_different_range() personality ptr undef { 70844b5327SAndreas Jonson; CHECK-LABEL: @invoke_different_range() 71844b5327SAndreas Jonson; CHECK-NEXT: invoke range(i8 5, 7) i8 @dummy 72844b5327SAndreas Jonson %out = invoke range(i8 5, 7) i8 @dummy() to label %next unwind label %lpad 73844b5327SAndreas Jonson 74844b5327SAndreas Jonsonnext: 75844b5327SAndreas Jonson ret i8 %out 76844b5327SAndreas Jonson 77844b5327SAndreas Jonsonlpad: 78844b5327SAndreas Jonson %pad = landingpad { ptr, i32 } cleanup 79844b5327SAndreas Jonson resume { ptr, i32 } zeroinitializer 80844b5327SAndreas Jonson} 81844b5327SAndreas Jonson 82844b5327SAndreas Jonsondefine i8 @invoke_with_same_range() personality ptr undef { 83*1941c518SKyungwoo Lee; CHECK-DAG: @invoke_with_same_range() 84*1941c518SKyungwoo Lee; CHECK-DAG: tail call i8 @invoke_with_range() 85844b5327SAndreas Jonson %out = invoke range(i8 0, 2) i8 @dummy() to label %next unwind label %lpad 86844b5327SAndreas Jonson 87844b5327SAndreas Jonsonnext: 88844b5327SAndreas Jonson ret i8 %out 89844b5327SAndreas Jonson 90844b5327SAndreas Jonsonlpad: 91844b5327SAndreas Jonson %pad = landingpad { ptr, i32 } cleanup 92844b5327SAndreas Jonson resume { ptr, i32 } zeroinitializer 93844b5327SAndreas Jonson} 94844b5327SAndreas Jonson 95844b5327SAndreas Jonsondefine i8 @call_with_same_range() { 96*1941c518SKyungwoo Lee; CHECK-DAG: @call_with_same_range() 97*1941c518SKyungwoo Lee; CHECK-DAG: tail call i8 @call_with_range() 98844b5327SAndreas Jonson %out = call range(i8 0, 2) i8 @dummy() 99844b5327SAndreas Jonson ret i8 %out 100844b5327SAndreas Jonson} 101844b5327SAndreas Jonson 102844b5327SAndreas Jonsondefine i8 @call_with_same_range_attr(i8 range(i8 0, 2) %v) { 103*1941c518SKyungwoo Lee; CHECK-DAG: @call_with_same_range_attr 104*1941c518SKyungwoo Lee; CHECK-DAG: tail call i8 @call_with_range_attr 105844b5327SAndreas Jonson %out = call i8 @dummy2(i8 %v) 106844b5327SAndreas Jonson ret i8 %out 107844b5327SAndreas Jonson} 108844b5327SAndreas Jonson 109844b5327SAndreas Jonsondeclare i8 @dummy(); 110844b5327SAndreas Jonsondeclare i8 @dummy2(i8); 111844b5327SAndreas Jonsondeclare i32 @__gxx_personality_v0(...) 112