49 lines · plain
1; RUN: opt --preserve-bc-uselistorder --thinlto-bc --thinlto-split-lto-unit %s -o %t.02 3; RUN: llvm-reduce -j=2 --delta-passes=instructions %t.0 -o %t.1 \4; RUN: --test %python --test-arg %p/Inputs/llvm-dis-and-filecheck.py --test-arg llvm-dis --test-arg FileCheck --test-arg --check-prefix=INTERESTING --test-arg %s5; RUN: llvm-dis --preserve-ll-uselistorder %t.1 -o %t.26; RUN: FileCheck --check-prefixes=RESULT,RESULT-PARALLEL %s < %t.27 8; FIXME: The single thread path uses CloneModule, which does not9; preserve uselistorder. Consequently it is incapable of reducing10; anything a case that depends on uselistorder.11 12; RUN: llvm-reduce -j=1 --delta-passes=instructions %t.0 -o %t.3 \13; RUN: --test %python --test-arg %p/Inputs/llvm-dis-and-filecheck.py --test-arg llvm-dis --test-arg FileCheck --test-arg --check-prefix=INTERESTING --test-arg %s14; RUN: llvm-dis --preserve-ll-uselistorder %t.3 -o %t.415; RUN: FileCheck --check-prefixes=RESULT,RESULT-SINGLE %s < %t.416 17@gv0 = external global [0 x i8]18 19; RESULT-LABEL: @func(20; RESULT-PARALLEL-NEXT: %gep0 = getelementptr i8, ptr @gv0, i32 %arg021; RESULT-PARALLEL-NEXT: %gep1 = getelementptr i8, ptr @gv0, i32 %arg122; RESULT-PARALLEL-NEXT: ret void23 24; RESULT-SINGLE: ptr @gv025; RESULT-SINGLE: ptr @gv026; RESULT-SINGLE: ptr @gv027; RESULT-SINGLE: ptr @gv028; RESULT-SINGLE: ptr @gv029define void @func(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3) {30 %gep0 = getelementptr i8, ptr @gv0, i32 %arg031 %gep1 = getelementptr i8, ptr @gv0, i32 %arg132 %gep2 = getelementptr i8, ptr @gv0, i32 %arg233 %gep3 = getelementptr i8, ptr @gv0, i32 %arg334 store i32 0, ptr %gep035 store i32 0, ptr %gep136 store i32 0, ptr %gep237 store i32 0, ptr %gep338 store i32 0, ptr @gv039 ret void40}41 42; INTERESTING: uselistorder ptr43 44; RESULT: uselistorder directives45; RESULT-PARALLEL: uselistorder ptr @gv0, { 1, 0 }46; RESULT-SINGLE: uselistorder ptr @gv0, { 3, 4, 2, 1, 0 }47 48uselistorder ptr @gv0, { 3, 4, 2, 1, 0 }49