brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 1a40c50 Raw
105 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=licm %s | FileCheck %s --check-prefix=NO_ASSUME3; RUN: opt -S -passes=licm --enable-knowledge-retention %s | FileCheck %s --check-prefix=USE_ASSUME4; ModuleID = '../pr23608.ll'5target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"6target triple = "x86_64-unknown-linux-gnu"7 8%struct.PyFrameObject = type { i32 }9 10@a = common global ptr null, align 811@__msan_origin_tls = external thread_local(initialexec) global i3212 13define void @fn1() {14; NO_ASSUME-LABEL: @fn1(15; NO_ASSUME-NEXT:  entry:16; NO_ASSUME-NEXT:    br label [[INDIRECTGOTO:%.*]]17; NO_ASSUME:       while.cond:18; NO_ASSUME-NEXT:    [[TMP:%.*]] = load ptr, ptr @a, align 819; NO_ASSUME-NEXT:    br label [[BB2:%.*]]20; NO_ASSUME:       bb:21; NO_ASSUME-NEXT:    call void @__msan_warning_noreturn()22; NO_ASSUME-NEXT:    unreachable23; NO_ASSUME:       bb2:24; NO_ASSUME-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[TMP]] to i6425; NO_ASSUME-NEXT:    [[TOBOOL:%.*]] = icmp eq i64 [[TMP4]], 026; NO_ASSUME-NEXT:    br i1 [[TOBOOL]], label [[BB13:%.*]], label [[BB15:%.*]]27; NO_ASSUME:       bb13:28; NO_ASSUME-NEXT:    [[TMP4_LCSSA:%.*]] = phi i64 [ [[TMP4]], [[BB2]] ]29; NO_ASSUME-NEXT:    [[TMP8_LE:%.*]] = inttoptr i64 [[TMP4_LCSSA]] to ptr30; NO_ASSUME-NEXT:    call void @__msan_warning_noreturn()31; NO_ASSUME-NEXT:    unreachable32; NO_ASSUME:       bb15:33; NO_ASSUME-NEXT:    br i1 [[TOBOOL]], label [[WHILE_END:%.*]], label [[WHILE_COND:%.*]]34; NO_ASSUME:       while.end:35; NO_ASSUME-NEXT:    ret void36; NO_ASSUME:       indirectgoto:37; NO_ASSUME-NEXT:    indirectbr ptr null, [label [[INDIRECTGOTO]], label %while.cond]38;39; USE_ASSUME-LABEL: @fn1(40; USE_ASSUME-NEXT:  entry:41; USE_ASSUME-NEXT:    br label [[INDIRECTGOTO:%.*]]42; USE_ASSUME:       while.cond:43; USE_ASSUME-NEXT:    [[TMP:%.*]] = load ptr, ptr @a, align 844; USE_ASSUME-NEXT:    br label [[BB2:%.*]]45; USE_ASSUME:       bb:46; USE_ASSUME-NEXT:    call void @__msan_warning_noreturn()47; USE_ASSUME-NEXT:    unreachable48; USE_ASSUME:       bb2:49; USE_ASSUME-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[TMP]], i64 4), "nonnull"(ptr [[TMP]]), "align"(ptr [[TMP]], i64 4) ]50; USE_ASSUME-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[TMP]] to i6451; USE_ASSUME-NEXT:    [[TOBOOL:%.*]] = icmp eq i64 [[TMP4]], 052; USE_ASSUME-NEXT:    br i1 [[TOBOOL]], label [[BB13:%.*]], label [[BB15:%.*]]53; USE_ASSUME:       bb13:54; USE_ASSUME-NEXT:    [[TMP4_LCSSA:%.*]] = phi i64 [ [[TMP4]], [[BB2]] ]55; USE_ASSUME-NEXT:    [[TMP8_LE:%.*]] = inttoptr i64 [[TMP4_LCSSA]] to ptr56; USE_ASSUME-NEXT:    call void @__msan_warning_noreturn()57; USE_ASSUME-NEXT:    unreachable58; USE_ASSUME:       bb15:59; USE_ASSUME-NEXT:    br i1 [[TOBOOL]], label [[WHILE_END:%.*]], label [[WHILE_COND:%.*]]60; USE_ASSUME:       while.end:61; USE_ASSUME-NEXT:    ret void62; USE_ASSUME:       indirectgoto:63; USE_ASSUME-NEXT:    indirectbr ptr null, [label [[INDIRECTGOTO]], label %while.cond]64;65entry:66  br label %indirectgoto67 68while.cond:                                       ; preds = %indirectgoto, %bb1569  %tmp = load ptr, ptr @a, align 870  %and = and i64 ptrtoint (ptr @a to i64), -7036874417766571  %itop = inttoptr i64 %and to ptr72  %_msld = load i64, ptr %itop, align 873  %add = add i64 %and, 3518437208883274  %itop2 = inttoptr i64 %add to ptr75  %tmp1 = load i32, ptr %itop2, align 876  br label %bb277 78bb:                                               ; preds = %while.cond79  call void @__msan_warning_noreturn()80  unreachable81 82bb2:                                              ; preds = %while.cond83  %tmp3 = load i32, ptr %tmp, align 484  %tmp4 = ptrtoint ptr %tmp to i6485  %tmp8 = inttoptr i64 %tmp4 to ptr86  %tobool = icmp eq i64 %tmp4, 087  br i1 %tobool, label %bb13, label %bb1588 89bb13:                                             ; preds = %bb290  %.lcssa7 = phi ptr [ %tmp8, %bb2 ]91  call void @__msan_warning_noreturn()92  unreachable93 94bb15:                                             ; preds = %bb295  br i1 %tobool, label %while.end, label %while.cond96 97while.end:                                        ; preds = %bb1598  ret void99 100indirectgoto:                                     ; preds = %indirectgoto, %entry101  indirectbr ptr null, [label %indirectgoto, label %while.cond]102}103 104declare void @__msan_warning_noreturn()105