1 ; RUN: opt -inline < %s -S -o - -inline-threshold=10 | FileCheck %s
9 %ptr1 = getelementptr inbounds i32* %ptr, i32 0
10 %ptr2 = getelementptr inbounds i32* %ptr, i32 42
11 %result = call i32 @inner1(i32* %ptr1, i32* %ptr2)
15 define i32 @inner1(i32* %begin, i32* %end) {
16 %begin.i = ptrtoint i32* %begin to i32
17 %end.i = ptrtoint i32* %end to i32
18 %distance = sub i32 %end.i, %begin.i
19 %icmp = icmp sle i32 %distance, 42
20 br i1 %icmp, label %then, label %else
30 define i32 @outer2(i32* %ptr) {
31 ; Test that an inbounds GEP disables this -- it isn't safe in general as
32 ; wrapping changes the behavior of lessthan and greaterthan comparisions.
34 ; CHECK: call i32 @inner2
37 %ptr1 = getelementptr i32* %ptr, i32 0
38 %ptr2 = getelementptr i32* %ptr, i32 42
39 %result = call i32 @inner2(i32* %ptr1, i32* %ptr2)
43 define i32 @inner2(i32* %begin, i32* %end) {
44 %begin.i = ptrtoint i32* %begin to i32
45 %end.i = ptrtoint i32* %end to i32
46 %distance = sub i32 %end.i, %begin.i
47 %icmp = icmp sle i32 %distance, 42
48 br i1 %icmp, label %then, label %else