Test source: git
Source: <stdin> ERROR: Unsupported attribute: noalias ERROR: Unsupported attribute: noalias ---------------------------------------- @0 = global 24 bytes, align 8 @.offload_sizes.1 = constant 8 bytes, align 8 @.offload_maptypes = constant 8 bytes, align 8 @.__omp_offloading_heavyComputation1.region_id = constant 1 bytes, align 1 @.offload_maptypes.2 = constant 8 bytes, align 8 define double @heavyComputation1() { #init: br label %entry %entry: %a = alloca i64 8, align 8 %.offload_baseptrs = alloca i64 8, align 8 %.offload_ptrs = alloca i64 8, align 8 %.offload_baseptrs4 = alloca i64 8, align 8 %.offload_ptrs5 = alloca i64 8, align 8 %call = call i32 @rand() %rem = srem i32 %call, 777 %conv = sitofp i32 %rem to double store double %conv, * %a, align 8 %call1 = call i32 @rand() %1 = gep inbounds * %.offload_baseptrs, 8 x i64 0, 8 x i64 0 %2 = bitcast * %.offload_baseptrs to * store * %a, * %2, align 8 %3 = gep inbounds * %.offload_ptrs, 8 x i64 0, 8 x i64 0 %4 = bitcast * %.offload_ptrs to * store * %a, * %4, align 8 %__constexpr_0 = gep inbounds * @.offload_sizes.1, 8 x i64 0, 8 x i64 0 %__constexpr_1 = gep inbounds * @.offload_maptypes, 8 x i64 0, 8 x i64 0 call void @__tgt_target_data_begin_mapper(* @0, i64 -1, i32 1, nonnull * %1, nonnull * %3, * %__constexpr_0, * %__constexpr_1, * null, * null) %5 = bitcast * %a to * %6 = load i64, * %5, align 8 %7 = gep inbounds * %.offload_baseptrs4, 8 x i64 0, 8 x i64 0 %8 = bitcast * %.offload_baseptrs4 to * store i64 %6, * %8, align 8 %9 = gep inbounds * %.offload_ptrs5, 8 x i64 0, 8 x i64 0 %10 = bitcast * %.offload_ptrs5 to * store i64 %6, * %10, align 8 %__constexpr_2 = gep inbounds * @.offload_sizes.1, 8 x i64 0, 8 x i64 0 %__constexpr_3 = gep inbounds * @.offload_maptypes.2, 8 x i64 0, 8 x i64 0 %11 = call i32 @__tgt_target_teams_mapper(* @0, i64 -1, nonnull * @.__omp_offloading_heavyComputation1.region_id, i32 1, nonnull * %7, nonnull * %9, * %__constexpr_2, * %__constexpr_3, * null, * null, i32 0, i32 0) %.not = icmp eq i32 %11, 0 br i1 %.not, label %omp_offload.cont, label %omp_offload.failed %omp_offload.failed: call void @heavyComputation1FallBack(i64 %6) br label %omp_offload.cont %omp_offload.cont: %conv2 = sitofp i32 %call1 to double %__constexpr_4 = gep inbounds * @.offload_sizes.1, 8 x i64 0, 8 x i64 0 %__constexpr_5 = gep inbounds * @.offload_maptypes, 8 x i64 0, 8 x i64 0 call void @__tgt_target_data_end_mapper(* @0, i64 -1, i32 1, nonnull * %1, nonnull * %3, * %__constexpr_4, * %__constexpr_5, * null, * null) %12 = load double, * %a, align 8 %add = fadd double %12, %conv2 ret double %add } => @0 = global 24 bytes, align 8 @.offload_sizes.1 = constant 8 bytes, align 8 @.offload_maptypes = constant 8 bytes, align 8 @.__omp_offloading_heavyComputation1.region_id = constant 1 bytes, align 1 @.offload_maptypes.2 = constant 8 bytes, align 8 define double @heavyComputation1() { #init: br label %entry %entry: %handle = alloca i64 8, align 8 %a = alloca i64 8, align 8 %.offload_baseptrs = alloca i64 8, align 8 %.offload_ptrs = alloca i64 8, align 8 %.offload_baseptrs4 = alloca i64 8, align 8 %.offload_ptrs5 = alloca i64 8, align 8 %call = call i32 @rand() %rem = srem i32 %call, 777 %conv = sitofp i32 %rem to double store double %conv, * %a, align 8 %call1 = call i32 @rand() %1 = gep inbounds * %.offload_baseptrs, 8 x i64 0, 8 x i64 0 %2 = bitcast * %.offload_baseptrs to * store * %a, * %2, align 8 %3 = gep inbounds * %.offload_ptrs, 8 x i64 0, 8 x i64 0 %4 = bitcast * %.offload_ptrs to * store * %a, * %4, align 8 %__constexpr_0 = gep inbounds * @.offload_sizes.1, 8 x i64 0, 8 x i64 0 %__constexpr_1 = gep inbounds * @.offload_maptypes, 8 x i64 0, 8 x i64 0 call void @__tgt_target_data_begin_mapper_issue(* @0, i64 -1, i32 1, * %1, * %3, * %__constexpr_0, * %__constexpr_1, * null, * null, * %handle) %5 = bitcast * %a to * call void @__tgt_target_data_begin_mapper_wait(i64 -1, * %handle) %6 = load i64, * %5, align 8 %7 = gep inbounds * %.offload_baseptrs4, 8 x i64 0, 8 x i64 0 %8 = bitcast * %.offload_baseptrs4 to * store i64 %6, * %8, align 8 %9 = gep inbounds * %.offload_ptrs5, 8 x i64 0, 8 x i64 0 %10 = bitcast * %.offload_ptrs5 to * store i64 %6, * %10, align 8 %__constexpr_2 = gep inbounds * @.offload_sizes.1, 8 x i64 0, 8 x i64 0 %__constexpr_3 = gep inbounds * @.offload_maptypes.2, 8 x i64 0, 8 x i64 0 %11 = call i32 @__tgt_target_teams_mapper(* @0, i64 -1, nonnull * @.__omp_offloading_heavyComputation1.region_id, i32 1, nonnull * %7, nonnull * %9, * %__constexpr_2, * %__constexpr_3, * null, * null, i32 0, i32 0) %.not = icmp eq i32 %11, 0 br i1 %.not, label %omp_offload.cont, label %omp_offload.failed %omp_offload.failed: call void @heavyComputation1FallBack(i64 %6) br label %omp_offload.cont %omp_offload.cont: %conv2 = sitofp i32 %call1 to double %__constexpr_4 = gep inbounds * @.offload_sizes.1, 8 x i64 0, 8 x i64 0 %__constexpr_5 = gep inbounds * @.offload_maptypes, 8 x i64 0, 8 x i64 0 call void @__tgt_target_data_end_mapper(* @0, i64 -1, i32 1, nonnull * %1, nonnull * %3, * %__constexpr_4, * %__constexpr_5, * null, * null) %12 = load double, * %a, align 8 %add = fadd double %12, %conv2 ret double %add } Transformation doesn't verify! ERROR: Source is more defined than target Example: Source: * %a = pointer(local, block_id=8, offset=0) * %.offload_baseptrs = pointer(local, block_id=9, offset=0) * %.offload_ptrs = pointer(local, block_id=10, offset=0) * %.offload_baseptrs4 = pointer(local, block_id=11, offset=0) * %.offload_ptrs5 = pointer(local, block_id=12, offset=0) i32 %call = poison i32 %rem = poison double %conv = poison i32 %call1 = poison * %1 = pointer(local, block_id=9, offset=0) * %2 = pointer(local, block_id=9, offset=0) * %3 = pointer(local, block_id=10, offset=0) * %4 = pointer(local, block_id=10, offset=0) * %__constexpr_0 = pointer(non-local, block_id=1, offset=0) * %__constexpr_1 = pointer(non-local, block_id=2, offset=0) * %5 = pointer(local, block_id=8, offset=0) i64 %6 = poison * %7 = pointer(local, block_id=11, offset=0) * %8 = pointer(local, block_id=11, offset=0) * %9 = pointer(local, block_id=12, offset=0) * %10 = pointer(local, block_id=12, offset=0) * %__constexpr_2 = pointer(non-local, block_id=1, offset=0) * %__constexpr_3 = pointer(non-local, block_id=4, offset=0) i32 %11 = #x00000000 (0) i1 %.not = #x1 (1) double %conv2 = poison * %__constexpr_4 = pointer(non-local, block_id=1, offset=0) * %__constexpr_5 = pointer(non-local, block_id=2, offset=0) double %12 = poison double %add = poison SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 Block 1 > size: 8 align: 8 alloc type: 0 Block 2 > size: 8 align: 8 alloc type: 0 Block 3 > size: 1 align: 1 alloc type: 0 Block 4 > size: 8 align: 8 alloc type: 0 Block 5 > size: 24 align: 8 alloc type: 0 Block 6 > size: 8 align: 2 alloc type: 0 LOCAL BLOCKS: Block 8 > size: 8 align: 8 alloc type: 1 Block 9 > size: 8 align: 8 alloc type: 1 Block 10 > size: 8 align: 8 alloc type: 1 Block 11 > size: 8 align: 8 alloc type: 1 Block 12 > size: 8 align: 8 alloc type: 1 Target: * %handle = pointer(local, block_id=8, offset=0) * %a = pointer(local, block_id=9, offset=0) * %.offload_baseptrs = pointer(local, block_id=10, offset=0) * %.offload_ptrs = pointer(local, block_id=11, offset=0) * %.offload_baseptrs4 = pointer(local, block_id=12, offset=0) * %.offload_ptrs5 = pointer(local, block_id=13, offset=0) i32 %call = poison i32 %rem = poison double %conv = poison i32 %call1 = poison * %1 = pointer(local, block_id=10, offset=0) * %2 = pointer(local, block_id=10, offset=0) * %3 = pointer(local, block_id=11, offset=0) * %4 = pointer(local, block_id=11, offset=0) * %__constexpr_0 = pointer(non-local, block_id=1, offset=0) * %__constexpr_1 = pointer(non-local, block_id=2, offset=0) * %5 = pointer(local, block_id=9, offset=0) i64 %6 = poison * %7 = pointer(local, block_id=12, offset=0) * %8 = pointer(local, block_id=12, offset=0) * %9 = pointer(local, block_id=13, offset=0) * %10 = pointer(local, block_id=13, offset=0) * %__constexpr_2 = pointer(non-local, block_id=1, offset=0) * %__constexpr_3 = pointer(non-local, block_id=4, offset=0) i32 %11 = poison i1 %.not = poison TARGET MEMORY STATE =================== LOCAL BLOCKS: Block 8 > size: 8 align: 8 alloc type: 1 Block 9 > size: 8 align: 8 alloc type: 1 Block 10 > size: 8 align: 8 alloc type: 1 Block 11 > size: 8 align: 8 alloc type: 1 Block 12 > size: 8 align: 8 alloc type: 1 Block 13 > size: 8 align: 8 alloc type: 1 ------------------- SMT STATS ------------------- Num queries: 15 Num invalid: 0 Num skips: 0 Num trivial: 41 (73.2%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 15 (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 -aa-pipeline=basic-aa -openmp-hide-memory-transfer-latency + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/OpenMP/hide_mem_transfer_latency.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/OpenMP/hide_mem_transfer_latency.ll