1; RUN: llc -mtriple thumbv7-windows-gnu -filetype asm -o - %s 2 3define i32 @divsoverflow32(i32 %a, i32 %b) { 4 %1 = alloca i32, align 4 5 %2 = alloca i32, align 4 6 %3 = load i32, i32* %1, align 4 7 %4 = load i32, i32* %2, align 4 8 %5 = sub nsw i32 0, %4 9 %6 = sdiv i32 -2147483647, %3 10 %7 = icmp sgt i32 %5, %6 11 br i1 %7, label %8, label %9 12 call void (...) @abort_simpl32() 13 unreachable 14 %10 = load i32, i32* %1, align 4 15 %11 = load i32, i32* %2, align 4 16 %12 = mul nsw i32 %10, %11 17 ret i32 %12 18} 19 20declare void @abort_simpl32(...) 21 22define i64 @divsoverflow64(i64 %a, i64 %b) { 23 %1 = alloca i64, align 8 24 %2 = alloca i64, align 8 25 %3 = load i64, i64* %1, align 8 26 %4 = load i64, i64* %2, align 8 27 %5 = sub nsw i64 0, %4 28 %6 = sdiv i64 -9223372036854775808, %3 29 %7 = icmp sgt i64 %5, %6 30 br i1 %7, label %8, label %9 31 call void (...) @abort_simpl64() 32 unreachable 33 %10 = load i64, i64* %1, align 8 34 %11 = load i64, i64* %2, align 8 35 %12 = mul nsw i64 %10, %11 36 ret i64 %12 37} 38 39declare void @abort_simpl64(...) 40 41define i32 @divuoverflow32(i32 %a, i32 %b) { 42 %1 = alloca i32, align 4 43 %2 = alloca i32, align 4 44 %3 = load i32, i32* %1, align 4 45 %4 = load i32, i32* %2, align 4 46 %5 = sub nsw i32 0, %4 47 %6 = udiv i32 4294967296, %3 48 %7 = icmp sgt i32 %5, %6 49 br i1 %7, label %8, label %9 50 call void (...) @abort_uimpl32() 51 unreachable 52 %10 = load i32, i32* %1, align 4 53 %11 = load i32, i32* %2, align 4 54 %12 = mul nsw i32 %10, %11 55 ret i32 %12 56} 57 58declare void @abort_uimpl32(...) 59 60define i64 @divuoverflow64(i64 %a, i64 %b) { 61 %1 = alloca i64, align 8 62 %2 = alloca i64, align 8 63 %3 = load i64, i64* %1, align 8 64 %4 = load i64, i64* %2, align 8 65 %5 = sub nsw i64 0, %4 66 %6 = udiv i64 18446744073709551616, %3 67 %7 = icmp sgt i64 %5, %6 68 br i1 %7, label %8, label %9 69 call void (...) @abort_uimpl64() 70 unreachable 71 %10 = load i64, i64* %1, align 8 72 %11 = load i64, i64* %2, align 8 73 %12 = mul nsw i64 %10, %11 74 ret i64 %12 75} 76 77declare void @abort_uimpl64(...) 78