107 lines · plain
1; ModuleID = 'bug.c'2target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"3target triple = "x86_64-unknown-linux-gnu"4 5; RUN: opt -O2 -S < %s | FileCheck %s6 7; CHECK-LABEL: main8; CHECK: memset9; CHECK: if.then10; CHECK: store11; CHECK: if.end12; CHECK: store13; CHECK: store14 15@d = common global i32 0, align 416@b = common global i32 0, align 417@f = common global [1 x [3 x i8]] zeroinitializer, align 118@e = common global i32 0, align 419@c = common global i32 0, align 420@a = common global i32 0, align 421 22; Function Attrs: nounwind uwtable23define void @fn1() {24entry:25 store i32 0, ptr @d, align 426 br label %for.cond27 28for.cond: ; preds = %for.inc8, %entry29 %0 = load i32, ptr @d, align 430 %cmp = icmp slt i32 %0, 231 br i1 %cmp, label %for.body, label %for.end1032 33for.body: ; preds = %for.cond34 %1 = load i32, ptr @d, align 435 %idxprom = sext i32 %1 to i6436 %2 = load i32, ptr @b, align 437 %idxprom1 = sext i32 %2 to i6438 %arrayidx = getelementptr inbounds [1 x [3 x i8]], ptr @f, i32 0, i64 %idxprom139 %arrayidx2 = getelementptr inbounds [3 x i8], ptr %arrayidx, i32 0, i64 %idxprom40 store i8 0, ptr %arrayidx2, align 141 store i32 0, ptr @e, align 442 br label %for.cond343 44for.cond3: ; preds = %for.inc, %for.body45 %3 = load i32, ptr @e, align 446 %cmp4 = icmp slt i32 %3, 347 br i1 %cmp4, label %for.body5, label %for.end48 49for.body5: ; preds = %for.cond350 %4 = load i32, ptr @c, align 451 %tobool = icmp ne i32 %4, 052 br i1 %tobool, label %if.then, label %if.end53 54if.then: ; preds = %for.body555 %5 = load i32, ptr @a, align 456 %dec = add nsw i32 %5, -157 store i32 %dec, ptr @a, align 458 br label %if.end59 60if.end: ; preds = %if.then, %for.body561 %6 = load i32, ptr @e, align 462 %idxprom6 = sext i32 %6 to i6463 %arrayidx7 = getelementptr inbounds [3 x i8], ptr @f, i32 0, i64 %idxprom664 store i8 1, ptr %arrayidx7, align 165 br label %for.inc66 67for.inc: ; preds = %if.end68 %7 = load i32, ptr @e, align 469 %inc = add nsw i32 %7, 170 store i32 %inc, ptr @e, align 471 br label %for.cond372 73for.end: ; preds = %for.cond374 br label %for.inc875 76for.inc8: ; preds = %for.end77 %8 = load i32, ptr @d, align 478 %inc9 = add nsw i32 %8, 179 store i32 %inc9, ptr @d, align 480 br label %for.cond81 82for.end10: ; preds = %for.cond83 ret void84}85 86; Function Attrs: nounwind uwtable87define i32 @main() {88entry:89 %retval = alloca i32, align 490 store i32 0, ptr %retval91 call void @fn1()92 %0 = load i8, ptr getelementptr inbounds ([1 x [3 x i8]], ptr @f, i32 0, i64 0, i64 1), align 193 %conv = sext i8 %0 to i3294 %cmp = icmp ne i32 %conv, 195 br i1 %cmp, label %if.then, label %if.end96 97if.then: ; preds = %entry98 call void @abort()99 unreachable100 101if.end: ; preds = %entry102 ret i32 0103}104 105; Function Attrs: noreturn nounwind106declare void @abort()107