brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 604aba9 Raw
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