clang fun dot

.fun1.dot <?xml version="1.0" encoding="UTF-8" standalone="no"?> CFG for 'fun1' function CFG for 'fun1' function Node0xd3e990 %1: %2 = alloca i32, align 4 %3 = alloca i32, align 4 %4 = alloca i64, align 8 store i32 %0, i32* %2, align 4 store i32 2, i32* %3, align 4 store i64 1, i64* %4, align 8 br label %5 Node0xd3eda0 %5: 5: %6 = load i32, i32* %3, align 4 %7 = load i32, i32* %2, align 4 %8 = icmp sle i32 %6, %7 br i1 %8, label %9, label %16 T F Node0xd3e990->Node0xd3eda0 Node0xd3eba0 %9: 9: %10 = load i64, i64* %4, align 8 %11 = load i32, i32* %3, align 4 %12 = sext i32 %11 to i64 %13 = mul nsw i64 %10, %12 store i64 %13, i64* %4, align 8 %14 = load i32, i32* %3, align 4 %15 = add nsw i32 %14, 1 store i32 %15, i32* %3, align 4 br label %5 Node0xd3eda0:s0->Node0xd3eba0 Node0xd3ef80 %16: 16: %17 = load i64, i64* %4, align 8 ret i64 %17 Node0xd3eda0:s1->Node0xd3ef80 Node0xd3eba0->Node0xd3eda0 .fun2.dot <?xml version="1.0" encoding="UTF-8" standalone="no"?> CFG for 'fun2' function CFG for 'fun2' function Node0xd3f580 %1: %2 = alloca i32, align 4 %3 = alloca i32, align 4 %4 = alloca i64, align 8 %5 = alloca i64, align 8 %6 = alloca i64, align 8 store i32 %0, i32* %2, align 4 store i32 1, i32* %3, align 4 store i64 0, i64* %4, align 8 store i64 1, i64* %5, align 8 br label %7 Node0xd3fa30 %7: 7: %8 = load i32, i32* %3, align 4 %9 = load i32, i32* %2, align 4 %10 = icmp slt i32 %8, %9 br i1 %10, label %11, label %19 T F Node0xd3f580->Node0xd3fa30 Node0xd3f720 %11: 11: %12 = load i64, i64* %5, align 8 store i64 %12, i64* %6, align 8 %13 = load i64, i64* %4, align 8 %14 = load i64, i64* %5, align 8 %15 = add nsw i64 %13, %14 store i64 %15, i64* %5, align 8 %16 = load i64, i64* %6, align 8 store i64 %16, i64* %4, align 8 %17 = load i32, i32* %3, align 4 %18 = add nsw i32 %17, 1 store i32 %18, i32* %3, align 4 br label %7 Node0xd3fa30:s0->Node0xd3f720 Node0xd3fc10 %19: 19: %20 = load i64, i64* %5, align 8 ret i64 %20 Node0xd3fa30:s1->Node0xd3fc10 Node0xd3f720->Node0xd3fa30 .main.dot <?xml version="1.0" encoding="UTF-8" standalone="no"?> CFG for 'main' function CFG for 'main' function Node0xd402b0 %0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i32, align 4 %4 = alloca [10 x i64], align 16 %5 = alloca i64, align 8 %6 = alloca i32, align 4 %7 = alloca i32, align 4 store i32 0, i32* %1, align 4 store i32 0, i32* %6, align 4 br label %8 Node0xd40740 %8: 8: %9 = load i32, i32* %6, align 4 %10 = icmp slt i32 %9, 10 br i1 %10, label %11, label %25 T F Node0xd402b0->Node0xd40740 Node0xd404d0 %11: 11: %12 = load i32, i32* %6, align 4 %13 = call i64 @fun2(i32 %12) %14 = load i32, i32* %6, align 4 %15 = sext i32 %14 to i64 %16 = getelementptr inbounds [10 x i64], [10 x i64]* %4, i64 0, i64 %15 store i64 %13, i64* %16, align 8 %17 = load i32, i32* %6, align 4 %18 = sext i32 %17 to i64 %19 = getelementptr inbounds [10 x i64], [10 x i64]* %4, i64 0, i64 %18 %20 = load i64, i64* %19, align 8 %21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x ... i8]* @.str, i64 0, i64 0), i64 %20) br label %22 Node0xd40740:s0->Node0xd404d0 Node0xd408c0 %25: 25: %26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x ... i8]* @.str.1, i64 0, i64 0)) store i32 1, i32* %7, align 4 br label %27 Node0xd40740:s1->Node0xd408c0 Node0xd411f0 %22: 22: %23 = load i32, i32* %6, align 4 %24 = add nsw i32 %23, 1 store i32 %24, i32* %6, align 4 br label %8 Node0xd404d0->Node0xd411f0 Node0xd41620 %27: 27: %28 = load i32, i32* %7, align 4 %29 = icmp sle i32 %28, 10 br i1 %29, label %30, label %39 T F Node0xd408c0->Node0xd41620 Node0xd411f0->Node0xd40740 Node0xd417a0 %30: 30: %31 = load i32, i32* %7, align 4 %32 = call i64 @fun1(i32 %31) store i64 %32, i64* %5, align 8 %33 = load i64, i64* %5, align 8 %34 = load i64, i64* @sum, align 8 %35 = add nsw i64 %34, %33 store i64 %35, i64* @sum, align 8 br label %36 Node0xd41620:s0->Node0xd417a0 Node0xd417f0 %39: 39: %40 = load i64, i64* @sum, align 8 %41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 ... x i8]* @.str.2, i64 0, i64 0), i64 %40) %42 = call i32 (i8*, ...) @__isoc99_scanf(i8* getelementptr inbounds ([5 x ... i8], [5 x i8]* @.str.3, i64 0, i64 0), i32* %2, i32* %3) %43 = load i32, i32* %2, align 4 %44 = load i32, i32* %3, align 4 %45 = add nsw i32 %43, %44 %46 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 ... x i8]* @.str.4, i64 0, i64 0), i32 %45) ret i32 0 Node0xd41620:s1->Node0xd417f0 Node0xd41e40 %36: 36: %37 = load i32, i32* %7, align 4 %38 = add nsw i32 %37, 1 store i32 %38, i32* %7, align 4 br label %27 Node0xd417a0->Node0xd41e40 Node0xd41e40->Node0xd41620
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值