Test Failure: Transforms/OpenMP/add_attributes.ll

Test source: git

Log:

Source: <stdin>

----------------------------------------
define void @call_all(i32 %schedule, * %lock, i32 %lock_hint, * %nest_lock, i32 %i, * %s, i64 %st, * %vp, double %d, i32 %proc_bind, i64 %allocator_handle, * %cp, i64 %event_handle, i32 %pause_resource) {
%entry:
  %schedule.addr = alloca i64 4, align 4
  %lock.addr = alloca i64 8, align 8
  %lock_hint.addr = alloca i64 4, align 4
  %nest_lock.addr = alloca i64 8, align 8
  %i.addr = alloca i64 4, align 4
  %s.addr = alloca i64 8, align 8
  %st.addr = alloca i64 8, align 8
  %vp.addr = alloca i64 8, align 8
  %d.addr = alloca i64 8, align 8
  %proc_bind.addr = alloca i64 4, align 4
  %allocator_handle.addr = alloca i64 8, align 8
  %cp.addr = alloca i64 8, align 8
  %event_handle.addr = alloca i64 8, align 8
  %pause_resource.addr = alloca i64 4, align 4
  store i32 %schedule, * %schedule.addr, align 4
  store * %lock, * %lock.addr, align 8
  store i32 %lock_hint, * %lock_hint.addr, align 4
  store * %nest_lock, * %nest_lock.addr, align 8
  store i32 %i, * %i.addr, align 4
  store * %s, * %s.addr, align 8
  store i64 %st, * %st.addr, align 8
  store * %vp, * %vp.addr, align 8
  store double %d, * %d.addr, align 8
  store i32 %proc_bind, * %proc_bind.addr, align 4
  store i64 %allocator_handle, * %allocator_handle.addr, align 8
  store * %cp, * %cp.addr, align 8
  store i64 %event_handle, * %event_handle.addr, align 8
  store i32 %pause_resource, * %pause_resource.addr, align 4
  call void @omp_set_num_threads(i32 0)
  call void @omp_set_dynamic(i32 0)
  call void @omp_set_nested(i32 0)
  call void @omp_set_max_active_levels(i32 0)
  %0 = load i32, * %schedule.addr, align 4
  call void @omp_set_schedule(i32 %0, i32 0)
  %call = call i32 @omp_get_num_threads()
  store i32 %call, * %i.addr, align 4
  %1 = load i32, * %i.addr, align 4
  call void @use_int(i32 %1)
  %call1 = call i32 @omp_get_dynamic()
  store i32 %call1, * %i.addr, align 4
  %2 = load i32, * %i.addr, align 4
  call void @use_int(i32 %2)
  %call2 = call i32 @omp_get_nested()
  store i32 %call2, * %i.addr, align 4
  %3 = load i32, * %i.addr, align 4
  call void @use_int(i32 %3)
  %call3 = call i32 @omp_get_max_threads()
  store i32 %call3, * %i.addr, align 4
  %4 = load i32, * %i.addr, align 4
  call void @use_int(i32 %4)
  %call4 = call i32 @omp_get_thread_num()
  store i32 %call4, * %i.addr, align 4
  %5 = load i32, * %i.addr, align 4
  call void @use_int(i32 %5)
  %call5 = call i32 @omp_get_num_procs()
  store i32 %call5, * %i.addr, align 4
  %6 = load i32, * %i.addr, align 4
  call void @use_int(i32 %6)
  %call6 = call i32 @omp_in_parallel()
  store i32 %call6, * %i.addr, align 4
  %7 = load i32, * %i.addr, align 4
  call void @use_int(i32 %7)
  %call7 = call i32 @omp_in_final()
  store i32 %call7, * %i.addr, align 4
  %8 = load i32, * %i.addr, align 4
  call void @use_int(i32 %8)
  %call8 = call i32 @omp_get_active_level()
  store i32 %call8, * %i.addr, align 4
  %9 = load i32, * %i.addr, align 4
  call void @use_int(i32 %9)
  %call9 = call i32 @omp_get_level()
  store i32 %call9, * %i.addr, align 4
  %10 = load i32, * %i.addr, align 4
  call void @use_int(i32 %10)
  %call10 = call i32 @omp_get_ancestor_thread_num(i32 0)
  store i32 %call10, * %i.addr, align 4
  %11 = load i32, * %i.addr, align 4
  call void @use_int(i32 %11)
  %call11 = call i32 @omp_get_team_size(i32 0)
  store i32 %call11, * %i.addr, align 4
  %12 = load i32, * %i.addr, align 4
  call void @use_int(i32 %12)
  %call12 = call i32 @omp_get_thread_limit()
  store i32 %call12, * %i.addr, align 4
  %13 = load i32, * %i.addr, align 4
  call void @use_int(i32 %13)
  %call13 = call i32 @omp_get_max_active_levels()
  store i32 %call13, * %i.addr, align 4
  %14 = load i32, * %i.addr, align 4
  call void @use_int(i32 %14)
  call void @omp_get_schedule(* %schedule.addr, * %i.addr)
  %call14 = call i32 @omp_get_max_task_priority()
  store i32 %call14, * %i.addr, align 4
  %15 = load i32, * %i.addr, align 4
  call void @use_int(i32 %15)
  %16 = load *, * %lock.addr, align 8
  call void @omp_init_lock(* %16)
  %17 = load *, * %lock.addr, align 8
  call void @omp_set_lock(* %17)
  %18 = load *, * %lock.addr, align 8
  call void @omp_unset_lock(* %18)
  %19 = load *, * %lock.addr, align 8
  call void @omp_destroy_lock(* %19)
  %20 = load *, * %lock.addr, align 8
  %call15 = call i32 @omp_test_lock(* %20)
  store i32 %call15, * %i.addr, align 4
  %21 = load i32, * %i.addr, align 4
  call void @use_int(i32 %21)
  %22 = load *, * %nest_lock.addr, align 8
  call void @omp_init_nest_lock(* %22)
  %23 = load *, * %nest_lock.addr, align 8
  call void @omp_set_nest_lock(* %23)
  %24 = load *, * %nest_lock.addr, align 8
  call void @omp_unset_nest_lock(* %24)
  %25 = load *, * %nest_lock.addr, align 8
  call void @omp_destroy_nest_lock(* %25)
  %26 = load *, * %nest_lock.addr, align 8
  %call16 = call i32 @omp_test_nest_lock(* %26)
  store i32 %call16, * %i.addr, align 4
  %27 = load i32, * %i.addr, align 4
  call void @use_int(i32 %27)
  %28 = load *, * %lock.addr, align 8
  %29 = load i32, * %lock_hint.addr, align 4
  call void @omp_init_lock_with_hint(* %28, i32 %29)
  %30 = load *, * %nest_lock.addr, align 8
  %31 = load i32, * %lock_hint.addr, align 4
  call void @omp_init_nest_lock_with_hint(* %30, i32 %31)
  %call17 = call double @omp_get_wtime()
  store double %call17, * %d.addr, align 8
  %32 = load double, * %d.addr, align 8
  call void @use_double(double %32)
  %call18 = call double @omp_get_wtick()
  store double %call18, * %d.addr, align 8
  %33 = load double, * %d.addr, align 8
  call void @use_double(double %33)
  %call19 = call i32 @omp_get_default_device()
  store i32 %call19, * %i.addr, align 4
  %34 = load i32, * %i.addr, align 4
  call void @use_int(i32 %34)
  call void @omp_set_default_device(i32 0)
  %call20 = call i32 @omp_is_initial_device()
  store i32 %call20, * %i.addr, align 4
  %35 = load i32, * %i.addr, align 4
  call void @use_int(i32 %35)
  %call21 = call i32 @omp_get_num_devices()
  store i32 %call21, * %i.addr, align 4
  %36 = load i32, * %i.addr, align 4
  call void @use_int(i32 %36)
  %call22 = call i32 @omp_get_num_teams()
  store i32 %call22, * %i.addr, align 4
  %37 = load i32, * %i.addr, align 4
  call void @use_int(i32 %37)
  %call23 = call i32 @omp_get_team_num()
  store i32 %call23, * %i.addr, align 4
  %38 = load i32, * %i.addr, align 4
  call void @use_int(i32 %38)
  %call24 = call i32 @omp_get_cancellation()
  store i32 %call24, * %i.addr, align 4
  %39 = load i32, * %i.addr, align 4
  call void @use_int(i32 %39)
  %call25 = call i32 @omp_get_initial_device()
  store i32 %call25, * %i.addr, align 4
  %40 = load i32, * %i.addr, align 4
  call void @use_int(i32 %40)
  %41 = load i64, * %st.addr, align 8
  %42 = load i32, * %i.addr, align 4
  %call26 = call * @omp_target_alloc(i64 %41, i32 %42)
  store * %call26, * %vp.addr, align 8
  %43 = load *, * %vp.addr, align 8
  call void @use_voidptr(* %43)
  %44 = load *, * %vp.addr, align 8
  %45 = load i32, * %i.addr, align 4
  call void @omp_target_free(* %44, i32 %45)
  %46 = load *, * %vp.addr, align 8
  %47 = load i32, * %i.addr, align 4
  %call27 = call i32 @omp_target_is_present(* %46, i32 %47)
  store i32 %call27, * %i.addr, align 4
  %48 = load i32, * %i.addr, align 4
  call void @use_int(i32 %48)
  %49 = load *, * %vp.addr, align 8
  %50 = load *, * %vp.addr, align 8
  %51 = load i64, * %st.addr, align 8
  %52 = load i64, * %st.addr, align 8
  %53 = load i64, * %st.addr, align 8
  %54 = load i32, * %i.addr, align 4
  %55 = load i32, * %i.addr, align 4
  %call28 = call i32 @omp_target_memcpy(* %49, * %50, i64 %51, i64 %52, i64 %53, i32 %54, i32 %55)
  store i32 %call28, * %i.addr, align 4
  %56 = load i32, * %i.addr, align 4
  call void @use_int(i32 %56)
  %57 = load *, * %vp.addr, align 8
  %58 = load *, * %vp.addr, align 8
  %59 = load i64, * %st.addr, align 8
  %60 = load i64, * %st.addr, align 8
  %61 = load i32, * %i.addr, align 4
  %call29 = call i32 @omp_target_associate_ptr(* %57, * %58, i64 %59, i64 %60, i32 %61)
  store i32 %call29, * %i.addr, align 4
  %62 = load i32, * %i.addr, align 4
  call void @use_int(i32 %62)
  %63 = load *, * %vp.addr, align 8
  %64 = load i32, * %i.addr, align 4
  %call30 = call i32 @omp_target_disassociate_ptr(* %63, i32 %64)
  store i32 %call30, * %i.addr, align 4
  %65 = load i32, * %i.addr, align 4
  call void @use_int(i32 %65)
  %call31 = call i32 @omp_get_device_num()
  store i32 %call31, * %i.addr, align 4
  %66 = load i32, * %i.addr, align 4
  call void @use_int(i32 %66)
  %call32 = call i32 @omp_get_proc_bind()
  store i32 %call32, * %proc_bind.addr, align 4
  %call33 = call i32 @omp_get_num_places()
  store i32 %call33, * %i.addr, align 4
  %67 = load i32, * %i.addr, align 4
  call void @use_int(i32 %67)
  %call34 = call i32 @omp_get_place_num_procs(i32 0)
  store i32 %call34, * %i.addr, align 4
  %68 = load i32, * %i.addr, align 4
  call void @use_int(i32 %68)
  %69 = load i32, * %i.addr, align 4
  call void @omp_get_place_proc_ids(i32 %69, * %i.addr)
  %call35 = call i32 @omp_get_place_num()
  store i32 %call35, * %i.addr, align 4
  %70 = load i32, * %i.addr, align 4
  call void @use_int(i32 %70)
  %call36 = call i32 @omp_get_partition_num_places()
  store i32 %call36, * %i.addr, align 4
  %71 = load i32, * %i.addr, align 4
  call void @use_int(i32 %71)
  call void @omp_get_partition_place_nums(* %i.addr)
  %72 = load i32, * %i.addr, align 4
  %73 = load i32, * %i.addr, align 4
  %74 = load *, * %vp.addr, align 8
  %call37 = call i32 @omp_control_tool(i32 %72, i32 %73, * %74)
  store i32 %call37, * %i.addr, align 4
  %75 = load i32, * %i.addr, align 4
  call void @use_int(i32 %75)
  %76 = load i64, * %allocator_handle.addr, align 8
  call void @omp_destroy_allocator(i64 %76)
  %77 = load i64, * %allocator_handle.addr, align 8
  call void @omp_set_default_allocator(i64 %77)
  %call38 = call i64 @omp_get_default_allocator()
  store i64 %call38, * %allocator_handle.addr, align 8
  %78 = load i64, * %st.addr, align 8
  %79 = load i64, * %allocator_handle.addr, align 8
  %call39 = call * @omp_alloc(i64 %78, i64 %79)
  store * %call39, * %vp.addr, align 8
  %80 = load *, * %vp.addr, align 8
  call void @use_voidptr(* %80)
  %81 = load *, * %vp.addr, align 8
  %82 = load i64, * %allocator_handle.addr, align 8
  call void @omp_free(* %81, i64 %82)
  %83 = load i64, * %st.addr, align 8
  %84 = load i64, * %allocator_handle.addr, align 8
  %call40 = call * @omp_alloc(i64 %83, i64 %84)
  store * %call40, * %vp.addr, align 8
  %85 = load *, * %vp.addr, align 8
  call void @use_voidptr(* %85)
  %86 = load *, * %vp.addr, align 8
  %87 = load i64, * %allocator_handle.addr, align 8
  call void @omp_free(* %86, i64 %87)
  %88 = load *, * %s.addr, align 8
  call void @ompc_set_affinity_format(* %88)
  %89 = load *, * %cp.addr, align 8
  %90 = load i64, * %st.addr, align 8
  %call41 = call i64 @ompc_get_affinity_format(* %89, i64 %90)
  store i64 %call41, * %st.addr, align 8
  %91 = load i64, * %st.addr, align 8
  call void @use_sizet(i64 %91)
  %92 = load *, * %s.addr, align 8
  call void @ompc_display_affinity(* %92)
  %93 = load *, * %cp.addr, align 8
  %94 = load i64, * %st.addr, align 8
  %95 = load *, * %s.addr, align 8
  %call42 = call i64 @ompc_capture_affinity(* %93, i64 %94, * %95)
  store i64 %call42, * %st.addr, align 8
  %96 = load i64, * %st.addr, align 8
  call void @use_sizet(i64 %96)
  %97 = load i64, * %event_handle.addr, align 8
  call void @omp_fulfill_event(i64 %97)
  %98 = load i32, * %pause_resource.addr, align 4
  %99 = load i32, * %i.addr, align 4
  %call43 = call i32 @omp_pause_resource(i32 %98, i32 %99)
  store i32 %call43, * %i.addr, align 4
  %100 = load i32, * %i.addr, align 4
  call void @use_int(i32 %100)
  %101 = load i32, * %pause_resource.addr, align 4
  %call44 = call i32 @omp_pause_resource_all(i32 %101)
  store i32 %call44, * %i.addr, align 4
  %102 = load i32, * %i.addr, align 4
  call void @use_int(i32 %102)
  %call45 = call i32 @omp_get_supported_active_levels()
  store i32 %call45, * %i.addr, align 4
  %103 = load i32, * %i.addr, align 4
  call void @use_int(i32 %103)
  ret void
}
=>
define void @call_all(i32 %schedule, * %lock, i32 %lock_hint, * %nest_lock, i32 %i, * %s, i64 %st, * %vp, double %d, i32 %proc_bind, i64 %allocator_handle, * %cp, i64 %event_handle, i32 %pause_resource) {
%entry:
  %schedule.addr = alloca i64 4, align 4
  %lock.addr = alloca i64 8, align 8
  %lock_hint.addr = alloca i64 4, align 4
  %nest_lock.addr = alloca i64 8, align 8
  %i.addr = alloca i64 4, align 4
  %s.addr = alloca i64 8, align 8
  %st.addr = alloca i64 8, align 8
  %vp.addr = alloca i64 8, align 8
  %d.addr = alloca i64 8, align 8
  %proc_bind.addr = alloca i64 4, align 4
  %allocator_handle.addr = alloca i64 8, align 8
  %cp.addr = alloca i64 8, align 8
  %event_handle.addr = alloca i64 8, align 8
  %pause_resource.addr = alloca i64 4, align 4
  store i32 %schedule, * %schedule.addr, align 4
  store * %lock, * %lock.addr, align 8
  store i32 %lock_hint, * %lock_hint.addr, align 4
  store * %nest_lock, * %nest_lock.addr, align 8
  store i32 %i, * %i.addr, align 4
  store * %s, * %s.addr, align 8
  store i64 %st, * %st.addr, align 8
  store * %vp, * %vp.addr, align 8
  store double %d, * %d.addr, align 8
  store i32 %proc_bind, * %proc_bind.addr, align 4
  store i64 %allocator_handle, * %allocator_handle.addr, align 8
  store * %cp, * %cp.addr, align 8
  store i64 %event_handle, * %event_handle.addr, align 8
  store i32 %pause_resource, * %pause_resource.addr, align 4
  call void @omp_set_num_threads(i32 0)
  call void @omp_set_dynamic(i32 0)
  call void @omp_set_nested(i32 0)
  call void @omp_set_max_active_levels(i32 0)
  %0 = load i32, * %schedule.addr, align 4
  call void @omp_set_schedule(i32 %0, i32 0)
  %call = call i32 @omp_get_num_threads()
  store i32 %call, * %i.addr, align 4
  %1 = load i32, * %i.addr, align 4
  call void @use_int(i32 %1)
  %call1 = call i32 @omp_get_dynamic()
  store i32 %call1, * %i.addr, align 4
  %2 = load i32, * %i.addr, align 4
  call void @use_int(i32 %2)
  %call2 = call i32 @omp_get_nested()
  store i32 %call2, * %i.addr, align 4
  %3 = load i32, * %i.addr, align 4
  call void @use_int(i32 %3)
  %call3 = call i32 @omp_get_max_threads()
  store i32 %call3, * %i.addr, align 4
  %4 = load i32, * %i.addr, align 4
  call void @use_int(i32 %4)
  %call4 = call i32 @omp_get_thread_num()
  store i32 %call4, * %i.addr, align 4
  %5 = load i32, * %i.addr, align 4
  call void @use_int(i32 %5)
  %call5 = call i32 @omp_get_num_procs()
  store i32 %call5, * %i.addr, align 4
  %6 = load i32, * %i.addr, align 4
  call void @use_int(i32 %6)
  %call6 = call i32 @omp_in_parallel()
  store i32 %call6, * %i.addr, align 4
  %7 = load i32, * %i.addr, align 4
  call void @use_int(i32 %7)
  %call7 = call i32 @omp_in_final()
  store i32 %call7, * %i.addr, align 4
  %8 = load i32, * %i.addr, align 4
  call void @use_int(i32 %8)
  %call8 = call i32 @omp_get_active_level()
  store i32 %call8, * %i.addr, align 4
  %9 = load i32, * %i.addr, align 4
  call void @use_int(i32 %9)
  %call9 = call i32 @omp_get_level()
  store i32 %call9, * %i.addr, align 4
  %10 = load i32, * %i.addr, align 4
  call void @use_int(i32 %10)
  %call10 = call i32 @omp_get_ancestor_thread_num(i32 0)
  store i32 %call10, * %i.addr, align 4
  %11 = load i32, * %i.addr, align 4
  call void @use_int(i32 %11)
  %call11 = call i32 @omp_get_team_size(i32 0)
  store i32 %call11, * %i.addr, align 4
  %12 = load i32, * %i.addr, align 4
  call void @use_int(i32 %12)
  %call12 = call i32 @omp_get_thread_limit()
  store i32 %call12, * %i.addr, align 4
  %13 = load i32, * %i.addr, align 4
  call void @use_int(i32 %13)
  %call13 = call i32 @omp_get_max_active_levels()
  store i32 %call13, * %i.addr, align 4
  %14 = load i32, * %i.addr, align 4
  call void @use_int(i32 %14)
  call void @omp_get_schedule(nocapture * %schedule.addr, nocapture * %i.addr)
  %call14 = call i32 @omp_get_max_task_priority()
  store i32 %call14, * %i.addr, align 4
  %15 = load i32, * %i.addr, align 4
  call void @use_int(i32 %15)
  %16 = load *, * %lock.addr, align 8
  call void @omp_init_lock(* %16)
  %17 = load *, * %lock.addr, align 8
  call void @omp_set_lock(* %17)
  %18 = load *, * %lock.addr, align 8
  call void @omp_unset_lock(* %18)
  %19 = load *, * %lock.addr, align 8
  call void @omp_destroy_lock(* %19)
  %20 = load *, * %lock.addr, align 8
  %call15 = call i32 @omp_test_lock(* %20)
  store i32 %call15, * %i.addr, align 4
  %21 = load i32, * %i.addr, align 4
  call void @use_int(i32 %21)
  %22 = load *, * %nest_lock.addr, align 8
  call void @omp_init_nest_lock(* %22)
  %23 = load *, * %nest_lock.addr, align 8
  call void @omp_set_nest_lock(* %23)
  %24 = load *, * %nest_lock.addr, align 8
  call void @omp_unset_nest_lock(* %24)
  %25 = load *, * %nest_lock.addr, align 8
  call void @omp_destroy_nest_lock(* %25)
  %26 = load *, * %nest_lock.addr, align 8
  %call16 = call i32 @omp_test_nest_lock(* %26)
  store i32 %call16, * %i.addr, align 4
  %27 = load i32, * %i.addr, align 4
  call void @use_int(i32 %27)
  %28 = load *, * %lock.addr, align 8
  %29 = load i32, * %lock_hint.addr, align 4
  call void @omp_init_lock_with_hint(* %28, i32 %29)
  %30 = load *, * %nest_lock.addr, align 8
  %31 = load i32, * %lock_hint.addr, align 4
  call void @omp_init_nest_lock_with_hint(* %30, i32 %31)
  %call17 = call double @omp_get_wtime()
  store double %call17, * %d.addr, align 8
  %32 = load double, * %d.addr, align 8
  call void @use_double(double %32)
  %call18 = call double @omp_get_wtick()
  store double %call18, * %d.addr, align 8
  %33 = load double, * %d.addr, align 8
  call void @use_double(double %33)
  %call19 = call i32 @omp_get_default_device()
  store i32 %call19, * %i.addr, align 4
  %34 = load i32, * %i.addr, align 4
  call void @use_int(i32 %34)
  call void @omp_set_default_device(i32 0)
  %call20 = call i32 @omp_is_initial_device()
  store i32 %call20, * %i.addr, align 4
  %35 = load i32, * %i.addr, align 4
  call void @use_int(i32 %35)
  %call21 = call i32 @omp_get_num_devices()
  store i32 %call21, * %i.addr, align 4
  %36 = load i32, * %i.addr, align 4
  call void @use_int(i32 %36)
  %call22 = call i32 @omp_get_num_teams()
  store i32 %call22, * %i.addr, align 4
  %37 = load i32, * %i.addr, align 4
  call void @use_int(i32 %37)
  %call23 = call i32 @omp_get_team_num()
  store i32 %call23, * %i.addr, align 4
  %38 = load i32, * %i.addr, align 4
  call void @use_int(i32 %38)
  %call24 = call i32 @omp_get_cancellation()
  store i32 %call24, * %i.addr, align 4
  %39 = load i32, * %i.addr, align 4
  call void @use_int(i32 %39)
  %call25 = call i32 @omp_get_initial_device()
  store i32 %call25, * %i.addr, align 4
  %40 = load i32, * %i.addr, align 4
  call void @use_int(i32 %40)
  %41 = load i64, * %st.addr, align 8
  %42 = load i32, * %i.addr, align 4
  %call26 = call * @omp_target_alloc(i64 %41, i32 %42)
  store * %call26, * %vp.addr, align 8
  %43 = load *, * %vp.addr, align 8
  call void @use_voidptr(* %43)
  %44 = load *, * %vp.addr, align 8
  %45 = load i32, * %i.addr, align 4
  call void @omp_target_free(* %44, i32 %45)
  %46 = load *, * %vp.addr, align 8
  %47 = load i32, * %i.addr, align 4
  %call27 = call i32 @omp_target_is_present(* %46, i32 %47)
  store i32 %call27, * %i.addr, align 4
  %48 = load i32, * %i.addr, align 4
  call void @use_int(i32 %48)
  %49 = load *, * %vp.addr, align 8
  %50 = load *, * %vp.addr, align 8
  %51 = load i64, * %st.addr, align 8
  %52 = load i64, * %st.addr, align 8
  %53 = load i64, * %st.addr, align 8
  %54 = load i32, * %i.addr, align 4
  %55 = load i32, * %i.addr, align 4
  %call28 = call i32 @omp_target_memcpy(* %49, * %50, i64 %51, i64 %52, i64 %53, i32 %54, i32 %55)
  store i32 %call28, * %i.addr, align 4
  %56 = load i32, * %i.addr, align 4
  call void @use_int(i32 %56)
  %57 = load *, * %vp.addr, align 8
  %58 = load *, * %vp.addr, align 8
  %59 = load i64, * %st.addr, align 8
  %60 = load i64, * %st.addr, align 8
  %61 = load i32, * %i.addr, align 4
  %call29 = call i32 @omp_target_associate_ptr(* %57, * %58, i64 %59, i64 %60, i32 %61)
  store i32 %call29, * %i.addr, align 4
  %62 = load i32, * %i.addr, align 4
  call void @use_int(i32 %62)
  %63 = load *, * %vp.addr, align 8
  %64 = load i32, * %i.addr, align 4
  %call30 = call i32 @omp_target_disassociate_ptr(* %63, i32 %64)
  store i32 %call30, * %i.addr, align 4
  %65 = load i32, * %i.addr, align 4
  call void @use_int(i32 %65)
  %call31 = call i32 @omp_get_device_num()
  store i32 %call31, * %i.addr, align 4
  %66 = load i32, * %i.addr, align 4
  call void @use_int(i32 %66)
  %call32 = call i32 @omp_get_proc_bind()
  store i32 %call32, * %proc_bind.addr, align 4
  %call33 = call i32 @omp_get_num_places()
  store i32 %call33, * %i.addr, align 4
  %67 = load i32, * %i.addr, align 4
  call void @use_int(i32 %67)
  %call34 = call i32 @omp_get_place_num_procs(i32 0)
  store i32 %call34, * %i.addr, align 4
  %68 = load i32, * %i.addr, align 4
  call void @use_int(i32 %68)
  %69 = load i32, * %i.addr, align 4
  call void @omp_get_place_proc_ids(i32 %69, nocapture * %i.addr)
  %call35 = call i32 @omp_get_place_num()
  store i32 %call35, * %i.addr, align 4
  %70 = load i32, * %i.addr, align 4
  call void @use_int(i32 %70)
  %call36 = call i32 @omp_get_partition_num_places()
  store i32 %call36, * %i.addr, align 4
  %71 = load i32, * %i.addr, align 4
  call void @use_int(i32 %71)
  call void @omp_get_partition_place_nums(* %i.addr)
  %72 = load i32, * %i.addr, align 4
  %73 = load i32, * %i.addr, align 4
  %74 = load *, * %vp.addr, align 8
  %call37 = call i32 @omp_control_tool(i32 %72, i32 %73, * %74)
  store i32 %call37, * %i.addr, align 4
  %75 = load i32, * %i.addr, align 4
  call void @use_int(i32 %75)
  %76 = load i64, * %allocator_handle.addr, align 8
  call void @omp_destroy_allocator(i64 %76)
  %77 = load i64, * %allocator_handle.addr, align 8
  call void @omp_set_default_allocator(i64 %77)
  %call38 = call i64 @omp_get_default_allocator()
  store i64 %call38, * %allocator_handle.addr, align 8
  %78 = load i64, * %st.addr, align 8
  %79 = load i64, * %allocator_handle.addr, align 8
  %call39 = call * @omp_alloc(i64 %78, i64 %79)
  store * %call39, * %vp.addr, align 8
  %80 = load *, * %vp.addr, align 8
  call void @use_voidptr(* %80)
  %81 = load *, * %vp.addr, align 8
  %82 = load i64, * %allocator_handle.addr, align 8
  call void @omp_free(* %81, i64 %82)
  %83 = load i64, * %st.addr, align 8
  %84 = load i64, * %allocator_handle.addr, align 8
  %call40 = call * @omp_alloc(i64 %83, i64 %84)
  store * %call40, * %vp.addr, align 8
  %85 = load *, * %vp.addr, align 8
  call void @use_voidptr(* %85)
  %86 = load *, * %vp.addr, align 8
  %87 = load i64, * %allocator_handle.addr, align 8
  call void @omp_free(* %86, i64 %87)
  %88 = load *, * %s.addr, align 8
  call void @ompc_set_affinity_format(* %88)
  %89 = load *, * %cp.addr, align 8
  %90 = load i64, * %st.addr, align 8
  %call41 = call i64 @ompc_get_affinity_format(* %89, i64 %90)
  store i64 %call41, * %st.addr, align 8
  %91 = load i64, * %st.addr, align 8
  call void @use_sizet(i64 %91)
  %92 = load *, * %s.addr, align 8
  call void @ompc_display_affinity(* %92)
  %93 = load *, * %cp.addr, align 8
  %94 = load i64, * %st.addr, align 8
  %95 = load *, * %s.addr, align 8
  %call42 = call i64 @ompc_capture_affinity(* %93, i64 %94, * %95)
  store i64 %call42, * %st.addr, align 8
  %96 = load i64, * %st.addr, align 8
  call void @use_sizet(i64 %96)
  %97 = load i64, * %event_handle.addr, align 8
  call void @omp_fulfill_event(i64 %97)
  %98 = load i32, * %pause_resource.addr, align 4
  %99 = load i32, * %i.addr, align 4
  %call43 = call i32 @omp_pause_resource(i32 %98, i32 %99)
  store i32 %call43, * %i.addr, align 4
  %100 = load i32, * %i.addr, align 4
  call void @use_int(i32 %100)
  %101 = load i32, * %pause_resource.addr, align 4
  %call44 = call i32 @omp_pause_resource_all(i32 %101)
  store i32 %call44, * %i.addr, align 4
  %102 = load i32, * %i.addr, align 4
  call void @use_int(i32 %102)
  %call45 = call i32 @omp_get_supported_active_levels()
  store i32 %call45, * %i.addr, align 4
  %103 = load i32, * %i.addr, align 4
  call void @use_int(i32 %103)
  ret void
}
Transformation doesn't verify!
ERROR: Source is more defined than target

Example:
i32 %schedule = poison
* %lock = poison
i32 %lock_hint = poison
* %nest_lock = poison
i32 %i = poison
* %s = poison
i64 %st = poison
* %vp = poison
double %d = poison
i32 %proc_bind = poison
i64 %allocator_handle = poison
* %cp = poison
i64 %event_handle = poison
i32 %pause_resource = poison

Source:
* %schedule.addr = pointer(local, block_id=16, offset=0)
* %lock.addr = pointer(local, block_id=17, offset=0)
* %lock_hint.addr = pointer(local, block_id=18, offset=0)
* %nest_lock.addr = pointer(local, block_id=19, offset=0)
* %i.addr = pointer(local, block_id=20, offset=0)
* %s.addr = pointer(local, block_id=21, offset=0)
* %st.addr = pointer(local, block_id=22, offset=0)
* %vp.addr = pointer(local, block_id=23, offset=0)
* %d.addr = pointer(local, block_id=24, offset=0)
* %proc_bind.addr = pointer(local, block_id=25, offset=0)
* %allocator_handle.addr = pointer(local, block_id=26, offset=0)
* %cp.addr = pointer(local, block_id=27, offset=0)
* %event_handle.addr = pointer(local, block_id=28, offset=0)
* %pause_resource.addr = pointer(local, block_id=29, offset=0)
i32 %0 = poison
i32 %call = poison
i32 %1 = poison
i32 %call1 = poison
i32 %2 = poison
i32 %call2 = poison
i32 %3 = poison
i32 %call3 = poison
i32 %4 = poison
i32 %call4 = poison
i32 %5 = poison
i32 %call5 = poison
i32 %6 = poison
i32 %call6 = poison
i32 %7 = poison
i32 %call7 = poison
i32 %8 = poison
i32 %call8 = poison
i32 %9 = poison
i32 %call9 = poison
i32 %10 = poison
i32 %call10 = poison
i32 %11 = poison
i32 %call11 = poison
i32 %12 = poison
i32 %call12 = poison
i32 %13 = poison
i32 %call13 = poison
i32 %14 = poison
i32 %call14 = poison
i32 %15 = poison
* %16 = poison
* %17 = poison
* %18 = poison
* %19 = poison
* %20 = poison
i32 %call15 = poison
i32 %21 = poison
* %22 = poison
* %23 = poison
* %24 = poison
* %25 = poison
* %26 = poison
i32 %call16 = poison
i32 %27 = poison
* %28 = poison
i32 %29 = poison
* %30 = poison
i32 %31 = poison
double %call17 = poison
double %32 = poison
double %call18 = poison
double %33 = poison
i32 %call19 = poison
i32 %34 = poison
i32 %call20 = poison
i32 %35 = poison
i32 %call21 = poison
i32 %36 = poison
i32 %call22 = poison
i32 %37 = poison
i32 %call23 = poison
i32 %38 = poison
i32 %call24 = poison
i32 %39 = poison
i32 %call25 = poison
i32 %40 = poison
i64 %41 = poison
i32 %42 = poison
* %call26 = pointer(non-local, block_id=2, offset=0)
* %43 = pointer(non-local, block_id=2, offset=0)
* %44 = pointer(non-local, block_id=2, offset=0)
i32 %45 = poison
* %46 = pointer(non-local, block_id=2, offset=0)
i32 %47 = poison
i32 %call27 = poison
i32 %48 = poison
* %49 = pointer(non-local, block_id=2, offset=0)
* %50 = pointer(non-local, block_id=2, offset=0)
i64 %51 = poison
i64 %52 = poison
i64 %53 = poison
i32 %54 = poison
i32 %55 = poison
i32 %call28 = poison
i32 %56 = poison
* %57 = pointer(non-local, block_id=2, offset=0)
* %58 = pointer(non-local, block_id=2, offset=0)
i64 %59 = poison
i64 %60 = poison
i32 %61 = poison
i32 %call29 = poison
i32 %62 = poison
* %63 = pointer(non-local, block_id=2, offset=0)
i32 %64 = poison
i32 %call30 = poison
i32 %65 = poison
i32 %call31 = poison
i32 %66 = poison
i32 %call32 = poison
i32 %call33 = poison
i32 %67 = poison
i32 %call34 = poison
i32 %68 = poison
i32 %69 = poison
i32 %call35 = poison
i32 %70 = poison
i32 %call36 = poison
i32 %71 = poison
i32 %72 = poison
i32 %73 = poison
* %74 = pointer(non-local, block_id=2, offset=0)
i32 %call37 = poison
i32 %75 = poison
i64 %76 = poison
i64 %77 = poison
i64 %call38 = poison
i64 %78 = poison
i64 %79 = poison
* %call39 = pointer(local, block_id=26, offset=0)
* %80 = pointer(local, block_id=26, offset=0)
* %81 = pointer(local, block_id=26, offset=0)
i64 %82 = poison
i64 %83 = poison
i64 %84 = poison
* %call40 = pointer(local, block_id=25, offset=0)
* %85 = pointer(local, block_id=25, offset=0)
* %86 = pointer(local, block_id=25, offset=0)
i64 %87 = poison
* %88 = poison
* %89 = poison
i64 %90 = poison
i64 %call41 = poison
i64 %91 = poison
* %92 = poison
* %93 = poison
i64 %94 = poison
* %95 = poison
i64 %call42 = poison
i64 %96 = poison
i64 %97 = poison
i32 %98 = poison
i32 %99 = poison
i32 %call43 = poison
i32 %100 = poison
i32 %101 = poison
i32 %call44 = poison
i32 %102 = poison
i32 %call45 = poison
i32 %103 = 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: 4611686018427387904	alloc type: 0
Block 3 >	size: 0	align: 4611686018427387904	alloc type: 0
Block 4 >	size: 0	align: 8589934592	alloc type: 0
Block 5 >	size: 0	align: 562949953421312	alloc type: 0
Block 6 >	size: 0	align: 8589934592	alloc type: 0
Block 7 >	size: 0	align: 4611686018427387904	alloc type: 0
Block 8 >	size: 0	align: 4611686018427387904	alloc type: 0
Block 9 >	size: 0	align: 2	alloc type: 0

LOCAL BLOCKS:
Block 16 >	size: 4	align: 4	alloc type: 1
Block 17 >	size: 8	align: 8	alloc type: 1
Block 18 >	size: 4	align: 4	alloc type: 1
Block 19 >	size: 8	align: 8	alloc type: 1
Block 20 >	size: 4	align: 4	alloc type: 1
Block 21 >	size: 8	align: 8	alloc type: 1
Block 22 >	size: 8	align: 8	alloc type: 1
Block 23 >	size: 8	align: 8	alloc type: 1
Block 24 >	size: 8	align: 8	alloc type: 1
Block 25 >	size: 4	align: 4	alloc type: 1
Block 26 >	size: 8	align: 8	alloc type: 1
Block 27 >	size: 8	align: 8	alloc type: 1
Block 28 >	size: 8	align: 8	alloc type: 1
Block 29 >	size: 4	align: 4	alloc type: 1

Target:
* %schedule.addr = pointer(local, block_id=16, offset=0)
* %lock.addr = pointer(local, block_id=17, offset=0)
* %lock_hint.addr = pointer(local, block_id=18, offset=0)
* %nest_lock.addr = pointer(local, block_id=19, offset=0)
* %i.addr = pointer(local, block_id=20, offset=0)
* %s.addr = pointer(local, block_id=21, offset=0)
* %st.addr = pointer(local, block_id=22, offset=0)
* %vp.addr = pointer(local, block_id=23, offset=0)
* %d.addr = pointer(local, block_id=24, offset=0)
* %proc_bind.addr = pointer(local, block_id=25, offset=0)
* %allocator_handle.addr = pointer(local, block_id=26, offset=0)
* %cp.addr = pointer(local, block_id=27, offset=0)
* %event_handle.addr = pointer(local, block_id=28, offset=0)
* %pause_resource.addr = pointer(local, block_id=29, offset=0)
i32 %0 = poison
i32 %call = poison
i32 %1 = poison
i32 %call1 = poison
i32 %2 = poison
i32 %call2 = poison
i32 %3 = poison
i32 %call3 = poison
i32 %4 = poison
i32 %call4 = poison
i32 %5 = poison
i32 %call5 = poison
i32 %6 = poison
i32 %call6 = poison
i32 %7 = poison
i32 %call7 = poison
i32 %8 = poison
i32 %call8 = poison
i32 %9 = poison
i32 %call9 = poison
i32 %10 = poison
i32 %call10 = poison
i32 %11 = poison
i32 %call11 = poison
i32 %12 = poison
i32 %call12 = poison
i32 %13 = poison
i32 %call13 = poison
i32 %14 = poison
i32 %call14 = poison
i32 %15 = poison
* %16 = poison
* %17 = poison
* %18 = poison
* %19 = poison
* %20 = poison
i32 %call15 = poison
i32 %21 = poison
* %22 = poison
* %23 = poison
* %24 = poison
* %25 = poison
* %26 = poison
i32 %call16 = poison
i32 %27 = poison
* %28 = poison
i32 %29 = poison
* %30 = poison
i32 %31 = poison
double %call17 = poison
double %32 = poison
double %call18 = poison
double %33 = poison
i32 %call19 = poison
i32 %34 = poison
i32 %call20 = poison
i32 %35 = poison
i32 %call21 = poison
i32 %36 = poison
i32 %call22 = poison
i32 %37 = poison
i32 %call23 = poison
i32 %38 = poison
i32 %call24 = poison
i32 %39 = poison
i32 %call25 = poison
i32 %40 = poison
i64 %41 = poison
i32 %42 = poison
* %call26 = pointer(non-local, block_id=2, offset=0)
* %43 = pointer(non-local, block_id=2, offset=0)
* %44 = pointer(non-local, block_id=2, offset=0)
i32 %45 = poison
* %46 = pointer(non-local, block_id=2, offset=0)
i32 %47 = poison
i32 %call27 = poison
i32 %48 = poison
* %49 = pointer(non-local, block_id=2, offset=0)
* %50 = pointer(non-local, block_id=2, offset=0)
i64 %51 = poison
i64 %52 = poison
i64 %53 = poison
i32 %54 = poison
i32 %55 = poison
i32 %call28 = poison
i32 %56 = poison
* %57 = pointer(non-local, block_id=2, offset=0)
* %58 = pointer(non-local, block_id=2, offset=0)
i64 %59 = poison
i64 %60 = poison
i32 %61 = poison
i32 %call29 = poison
i32 %62 = poison
* %63 = pointer(non-local, block_id=2, offset=0)
i32 %64 = poison
i32 %call30 = poison
i32 %65 = poison
i32 %call31 = poison
i32 %66 = poison
i32 %call32 = poison
i32 %call33 = poison
i32 %67 = poison
i32 %call34 = poison
i32 %68 = poison
i32 %69 = poison
i32 %call35 = poison
i32 %70 = poison
i32 %call36 = poison
i32 %71 = poison
i32 %72 = poison
i32 %73 = poison
* %74 = pointer(non-local, block_id=2, offset=0)
i32 %call37 = poison
i32 %75 = poison
i64 %76 = poison
i64 %77 = poison
i64 %call38 = poison
i64 %78 = poison
i64 %79 = poison
* %call39 = pointer(local, block_id=26, offset=0)
* %80 = pointer(local, block_id=26, offset=0)
* %81 = pointer(local, block_id=26, offset=0)
i64 %82 = poison
i64 %83 = poison
i64 %84 = poison
* %call40 = pointer(local, block_id=25, offset=0)
* %85 = pointer(local, block_id=25, offset=0)
* %86 = pointer(local, block_id=25, offset=0)
i64 %87 = poison
* %88 = poison
* %89 = poison
i64 %90 = poison
i64 %call41 = poison
i64 %91 = poison
* %92 = poison
* %93 = poison
i64 %94 = poison
* %95 = poison
i64 %call42 = poison
i64 %96 = poison
i64 %97 = poison
i32 %98 = poison
i32 %99 = poison
i32 %call43 = poison
i32 %100 = poison
i32 %101 = poison
i32 %call44 = poison
i32 %102 = poison
i32 %call45 = poison
i32 %103 = poison

TARGET MEMORY STATE
===================
LOCAL BLOCKS:
Block 16 >	size: 4	align: 4	alloc type: 1
Block 17 >	size: 8	align: 8	alloc type: 1
Block 18 >	size: 4	align: 4	alloc type: 1
Block 19 >	size: 8	align: 8	alloc type: 1
Block 20 >	size: 4	align: 4	alloc type: 1
Block 21 >	size: 8	align: 8	alloc type: 1
Block 22 >	size: 8	align: 8	alloc type: 1
Block 23 >	size: 8	align: 8	alloc type: 1
Block 24 >	size: 8	align: 8	alloc type: 1
Block 25 >	size: 4	align: 4	alloc type: 1
Block 26 >	size: 8	align: 8	alloc type: 1
Block 27 >	size: 8	align: 8	alloc type: 1
Block 28 >	size: 8	align: 8	alloc type: 1
Block 29 >	size: 4	align: 4	alloc type: 1



------------------- SMT STATS -------------------
Num queries: 284
Num invalid: 0
Num skips:   0
Num trivial: 60 (17.4%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     284 (100.0%)
Num UNSAT:   0 (0.0%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 1'
+ /home/nlopes/alive2/build/opt-alive.sh -S -openmp-opt-cgscc
+ /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/OpenMP/add_attributes.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/OpenMP/add_attributes.ll

 

<-- Back