1; RUN: llvm-uselistorder < %s -preserve-bc-use-list-order -num-shuffles=5 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 6; Check use-list order of constants used by globals. 7@glob1 = global i5 7 8@glob2 = global i5 7 9@glob3 = global i5 7 10 11; Check use-list order between variables and aliases. 12@target = global i3 zeroinitializer 13@alias1 = alias i3* @target 14@alias2 = alias i3* @target 15@alias3 = alias i3* @target 16@var1 = global i3* @target 17@var2 = global i3* @target 18@var3 = global i3* @target 19 20define i64 @f(i64 %f) { 21entry: 22 %sum = add i64 %f, 0 23 ret i64 %sum 24} 25 26define i64 @g(i64 %g) { 27entry: 28 %sum = add i64 %g, 0 29 ret i64 %sum 30} 31 32define i64 @h(i64 %h) { 33entry: 34 %sum = add i64 %h, 0 35 ret i64 %sum 36} 37 38define i64 @i(i64 %i) { 39entry: 40 %sum = add i64 %i, 1 41 ret i64 %sum 42} 43 44define i64 @j(i64 %j) { 45entry: 46 %sum = add i64 %j, 1 47 ret i64 %sum 48} 49 50define i64 @k(i64 %k) { 51entry: 52 %sum = add i64 %k, 1 53 ret i64 %sum 54} 55 56define i64 @l(i64 %l) { 57entry: 58 %sum = add i64 %l, 1 59 ret i64 %sum 60} 61 62define i1 @loadb() { 63entry: 64 %b = load i1* @b 65 ret i1 %b 66} 67 68define i1 @loada() { 69entry: 70 %a = load i1* getelementptr ([4 x i1]* @a, i64 0, i64 2) 71 ret i1 %a 72} 73 74define i32 @f32(i32 %a, i32 %b, i32 %c, i32 %d) { 75entry: 76 br label %first 77 78second: 79 %eh = mul i32 %e, %h 80 %sum = add i32 %eh, %ef 81 br label %exit 82 83exit: 84 %product = phi i32 [%ef, %first], [%sum, %second] 85 ret i32 %product 86 87first: 88 %e = add i32 %a, 7 89 %f = add i32 %b, 7 90 %g = add i32 %c, 8 91 %h = add i32 %d, 8 92 %ef = mul i32 %e, %f 93 %gh = mul i32 %g, %h 94 %gotosecond = icmp slt i32 %gh, -9 95 br i1 %gotosecond, label %second, label %exit 96} 97