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