93 lines · plain
1; RUN: opt -passes=mergefunc -S < %s | FileCheck %s2 3define i8 @call_with_range() {4 bitcast i8 0 to i8 ; dummy to make the function large enough5 %out = call i8 @dummy(), !range !06 ret i8 %out7}8 9define i8 @call_no_range() {10; CHECK-LABEL: @call_no_range11; CHECK-NEXT: bitcast i8 0 to i812; CHECK-NEXT: %out = call i8 @dummy()13; CHECK-NEXT: ret i8 %out14 bitcast i8 0 to i815 %out = call i8 @dummy()16 ret i8 %out17}18 19define i8 @call_different_range() {20; CHECK-LABEL: @call_different_range21; CHECK-NEXT: bitcast i8 0 to i822; CHECK-NEXT: %out = call i8 @dummy(), !range !123; CHECK-NEXT: ret i8 %out24 bitcast i8 0 to i825 %out = call i8 @dummy(), !range !126 ret i8 %out27}28 29define i8 @invoke_with_range() personality ptr undef {30 %out = invoke i8 @dummy() to label %next unwind label %lpad, !range !031 32next:33 ret i8 %out34 35lpad:36 %pad = landingpad { ptr, i32 } cleanup37 resume { ptr, i32 } zeroinitializer38}39 40define i8 @invoke_no_range() personality ptr undef {41; CHECK-LABEL: @invoke_no_range()42; CHECK-NEXT: invoke i8 @dummy43 %out = invoke i8 @dummy() to label %next unwind label %lpad44 45next:46 ret i8 %out47 48lpad:49 %pad = landingpad { ptr, i32 } cleanup50 resume { ptr, i32 } zeroinitializer51}52 53define i8 @invoke_different_range() personality ptr undef {54; CHECK-LABEL: @invoke_different_range()55; CHECK-NEXT: invoke i8 @dummy56 %out = invoke i8 @dummy() to label %next unwind label %lpad, !range !157 58next:59 ret i8 %out60 61lpad:62 %pad = landingpad { ptr, i32 } cleanup63 resume { ptr, i32 } zeroinitializer64}65 66define i8 @invoke_with_same_range() personality ptr undef {67; CHECK-DAG: @invoke_with_same_range()68; CHECK-DAG: tail call i8 @invoke_with_range()69 %out = invoke i8 @dummy() to label %next unwind label %lpad, !range !070 71next:72 ret i8 %out73 74lpad:75 %pad = landingpad { ptr, i32 } cleanup76 resume { ptr, i32 } zeroinitializer77}78 79define i8 @call_with_same_range() {80; CHECK-DAG: @call_with_same_range81; CHECK-DAG: tail call i8 @call_with_range82 bitcast i8 0 to i883 %out = call i8 @dummy(), !range !084 ret i8 %out85}86 87 88declare i8 @dummy();89declare i32 @__gxx_personality_v0(...)90 91!0 = !{i8 0, i8 2}92!1 = !{i8 5, i8 7}93