1 ; RUN: opt -inline < %s -S -o - -inline-threshold=10 | FileCheck %s
3 target datalayout = "p:32:32"
6 ; CHECK-LABEL: @outer1(
11 %ptr1 = getelementptr inbounds i32* %ptr, i32 0
12 %ptr2 = getelementptr inbounds i32* %ptr, i32 42
13 %result = call i32 @inner1(i32* %ptr1, i32* %ptr2)
17 define i32 @inner1(i32* %begin, i32* %end) {
18 %begin.i = ptrtoint i32* %begin to i32
19 %end.i = ptrtoint i32* %end to i32
20 %distance = sub i32 %end.i, %begin.i
21 %icmp = icmp sle i32 %distance, 42
22 br i1 %icmp, label %then, label %else
32 define i32 @outer2(i32* %ptr) {
33 ; Test that an inbounds GEP disables this -- it isn't safe in general as
34 ; wrapping changes the behavior of lessthan and greaterthan comparisions.
35 ; CHECK-LABEL: @outer2(
36 ; CHECK: call i32 @inner2
39 %ptr1 = getelementptr i32* %ptr, i32 0
40 %ptr2 = getelementptr i32* %ptr, i32 42
41 %result = call i32 @inner2(i32* %ptr1, i32* %ptr2)
45 define i32 @inner2(i32* %begin, i32* %end) {
46 %begin.i = ptrtoint i32* %begin to i32
47 %end.i = ptrtoint i32* %end to i32
48 %distance = sub i32 %end.i, %begin.i
49 %icmp = icmp sle i32 %distance, 42
50 br i1 %icmp, label %then, label %else