1; RUN: llvm-uselistorder < %s -preserve-bc-use-list-order 2 3@a = global [4 x i1] [i1 0, i1 1, i1 0, i1 1] 4@b = alias i1* getelementptr ([4 x i1]* @a, i64 0, i64 2) 5 6define i64 @f(i64 %f) { 7entry: 8 %sum = add i64 %f, 0 9 ret i64 %sum 10} 11 12define i64 @g(i64 %g) { 13entry: 14 %sum = add i64 %g, 0 15 ret i64 %sum 16} 17 18define i64 @h(i64 %h) { 19entry: 20 %sum = add i64 %h, 0 21 ret i64 %sum 22} 23 24define i64 @i(i64 %i) { 25entry: 26 %sum = add i64 %i, 1 27 ret i64 %sum 28} 29 30define i64 @j(i64 %j) { 31entry: 32 %sum = add i64 %j, 1 33 ret i64 %sum 34} 35 36define i64 @k(i64 %k) { 37entry: 38 %sum = add i64 %k, 1 39 ret i64 %sum 40} 41 42define i64 @l(i64 %l) { 43entry: 44 %sum = add i64 %l, 1 45 ret i64 %sum 46} 47 48define i1 @loadb() { 49entry: 50 %b = load i1* @b 51 ret i1 %b 52} 53 54define i1 @loada() { 55entry: 56 %a = load i1* getelementptr ([4 x i1]* @a, i64 0, i64 2) 57 ret i1 %a 58} 59 60define i32 @f32(i32 %a, i32 %b, i32 %c, i32 %d) { 61entry: 62 br label %first 63 64second: 65 %eh = mul i32 %e, %h 66 %sum = add i32 %eh, %ef 67 br label %exit 68 69exit: 70 %product = phi i32 [%ef, %first], [%sum, %second] 71 ret i32 %product 72 73first: 74 %e = add i32 %a, 7 75 %f = add i32 %b, 7 76 %g = add i32 %c, 8 77 %h = add i32 %d, 8 78 %ef = mul i32 %e, %f 79 %gh = mul i32 %g, %h 80 %gotosecond = icmp slt i32 %gh, -9 81 br i1 %gotosecond, label %second, label %exit 82} 83