1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -licm %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; ModuleID = '../pr23608.ll' 3*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 4*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-linux-gnu" 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker%struct.PyFrameObject = type { i32 } 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker@a = common global %struct.PyFrameObject* null, align 8 9*9880d681SAndroid Build Coastguard Worker@__msan_origin_tls = external thread_local(initialexec) global i32 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine void @fn1() { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker br label %indirectgoto 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerwhile.cond: ; preds = %indirectgoto, %bb15 16*9880d681SAndroid Build Coastguard Worker %tmp = load %struct.PyFrameObject*, %struct.PyFrameObject** @a, align 8 17*9880d681SAndroid Build Coastguard Worker %_msld = load i64, i64* inttoptr (i64 and (i64 ptrtoint (%struct.PyFrameObject** @a to i64), i64 -70368744177665) to i64*), align 8 18*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* inttoptr (i64 add (i64 and (i64 ptrtoint (%struct.PyFrameObject** @a to i64), i64 -70368744177665), i64 35184372088832) to i32*), align 8 19*9880d681SAndroid Build Coastguard Worker %f_iblock = getelementptr inbounds %struct.PyFrameObject, %struct.PyFrameObject* %tmp, i64 0, i32 0 20*9880d681SAndroid Build Coastguard Worker br label %bb2 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerbb: ; preds = %while.cond 23*9880d681SAndroid Build Coastguard Worker call void @__msan_warning_noreturn() 24*9880d681SAndroid Build Coastguard Worker unreachable 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerbb2: ; preds = %while.cond 27*9880d681SAndroid Build Coastguard Worker %tmp3 = load i32, i32* %f_iblock, align 4 28*9880d681SAndroid Build Coastguard Worker %tmp4 = ptrtoint i32* %f_iblock to i64 29*9880d681SAndroid Build Coastguard Worker %tmp8 = inttoptr i64 %tmp4 to i32* 30*9880d681SAndroid Build Coastguard Worker %tobool = icmp eq i64 %tmp4, 0 31*9880d681SAndroid Build Coastguard Worker br i1 %tobool, label %bb13, label %bb15 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerbb13: ; preds = %bb2 34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bb13: 35*9880d681SAndroid Build Coastguard Worker; CHECK: %tmp8.le = inttoptr 36*9880d681SAndroid Build Coastguard Worker %.lcssa7 = phi i32* [ %tmp8, %bb2 ] 37*9880d681SAndroid Build Coastguard Worker call void @__msan_warning_noreturn() 38*9880d681SAndroid Build Coastguard Worker unreachable 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerbb15: ; preds = %bb2 41*9880d681SAndroid Build Coastguard Worker br i1 %tobool, label %while.end, label %while.cond 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerwhile.end: ; preds = %bb15 44*9880d681SAndroid Build Coastguard Worker ret void 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerindirectgoto: ; preds = %indirectgoto, %entry 47*9880d681SAndroid Build Coastguard Worker indirectbr i8* null, [label %indirectgoto, label %while.cond] 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdeclare void @__msan_warning_noreturn() 51