Test source: git
Source: <stdin> ERROR: Unsupported instruction: tail call void %0() ERROR: Unsupported instruction: %__constexpr_0 = bitcast void (i32*, i32*)* @.omp_outlined. to void (i32*, i32*, ...)* ERROR: Unsupported instruction: tail call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* nonnull @0, i32 0, void (i32*, i32*, ...)* bitcast (void (i32*, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*)) ERROR: Unsupported instruction: %__constexpr_0 = bitcast void (i32*, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)* ERROR: Unsupported instruction: tail call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* nonnull @0, i32 0, void (i32*, i32*, ...)* bitcast (void (i32*, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*)) ERROR: Unsupported instruction: %__constexpr_0 = bitcast void (i32*, i32*)* @.omp_outlined..2 to void (i32*, i32*, ...)* ERROR: Unsupported instruction: tail call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* nonnull @0, i32 0, void (i32*, i32*, ...)* bitcast (void (i32*, i32*)* @.omp_outlined..2 to void (i32*, i32*, ...)*)) ERROR: Unsupported instruction: %2 = invoke i32 @maybe_throw(i1 %0) to label %cont unwind label %exc ---------------------------------------- define i32 @icv_free_use(i32 %0) { %1: %2 = add nsw i32 %0, 1 ret i32 %2 } => define i32 @icv_free_use(i32 %0) { %1: %2 = add nsw i32 %0, 1 ret i32 %2 } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i32 @bad_use(i32 %0) { %1: call void @use(i32 %0) %2 = add nsw i32 %0, 1 ret i32 %2 } => define i32 @bad_use(i32 %0) { %1: call void @use(i32 %0) %2 = add nsw i32 %0, 1 ret i32 %2 } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i32 @ok_use_assume(i32 %0) { %1: call void @use(i32 %0) call void @use(i32 %0) call void @no_openmp_use(i32 %0) %2 = add nsw i32 %0, 1 ret i32 %2 } => define i32 @ok_use_assume(i32 %0) { %1: call void @use(i32 %0) call void @use(i32 %0) call void @no_openmp_use(i32 %0) %2 = add nsw i32 %0, 1 ret i32 %2 } Transformation seems to be correct! (syntactically equal) ERROR: Unsupported instruction: tail call void %0() ERROR: Unsupported instruction: %__constexpr_0 = bitcast void (i32*, i32*)* @.omp_outlined. to void (i32*, i32*, ...)* ERROR: Unsupported instruction: tail call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* nonnull @0, i32 0, void (i32*, i32*, ...)* bitcast (void (i32*, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*)) ---------------------------------------- define void @.omp_outlined.(* %0, * %1) { %2: %3 = call i32 @omp_get_max_threads() %4 = call i32 @omp_get_max_threads() call void @use(i32 %4) call void @omp_set_num_threads(i32 10) %5 = call i32 @omp_get_max_threads() call void @use(i32 %5) ret void } => define void @.omp_outlined.(* %0, * %1) { %2: %3 = call i32 @omp_get_max_threads() %4 = call i32 @omp_get_max_threads() call void @use(i32 %4) call void @omp_set_num_threads(i32 10) call void @use(i32 10) ret void } Transformation doesn't verify! ERROR: Source is more defined than target Example: * %0 = poison * %1 = poison Source: i32 %3 = poison i32 %4 = poison i32 %5 = poison SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 Block 1 > size: 0 align: 2 alloc type: 0 Block 2 > size: 0 align: 2 alloc type: 0 Block 3 > size: 0 align: 2 alloc type: 0 Target: i32 %3 = poison i32 %4 = poison ------------------- SMT STATS ------------------- Num queries: 9 Num invalid: 0 Num skips: 0 Num trivial: 0 (0.0%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 9 (100.0%) Num UNSAT: 0 (0.0%) Alive2: Transform doesn't verify; aborting!
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -S -openmp-opt-cgscc + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/OpenMP/icv_tracking.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/OpenMP/icv_tracking.ll