--- source: tests/guppy.rs expression: module_string --- ; ModuleID = 'test_context' source_filename = "test_context" define i16 @_hl.teleport.25(i16 %0, i16 %1) { alloca_block: br label %entry_block entry_block: ; preds = %alloca_block br label %6 2: ; preds = %6 %3 = extractvalue { i32, {}, {} } %30, 1 br label %38 4: ; preds = %6 %5 = extractvalue { i32, {}, {} } %30, 2 br label %34 6: ; preds = %entry_block %7 = call i16 @QAlloc() %8 = call i16 @H(i16 %7) %9 = call { i16, i16 } @CX(i16 %8, i16 %1) %10 = extractvalue { i16, i16 } %9, 0 %11 = extractvalue { i16, i16 } %9, 1 %12 = insertvalue { i16, i16 } undef, i16 %10, 0 %13 = insertvalue { i16, i16 } %12, i16 %11, 1 %14 = insertvalue { { i16, i16 } } poison, { i16, i16 } %13, 0 %15 = extractvalue { { i16, i16 } } %14, 0 %16 = extractvalue { i16, i16 } %15, 0 %17 = extractvalue { i16, i16 } %15, 1 %18 = call { i16, i16 } @CX(i16 %0, i16 %16) %19 = extractvalue { i16, i16 } %18, 0 %20 = extractvalue { i16, i16 } %18, 1 %21 = insertvalue { i16, i16 } undef, i16 %19, 0 %22 = insertvalue { i16, i16 } %21, i16 %20, 1 %23 = insertvalue { { i16, i16 } } poison, { i16, i16 } %22, 0 %24 = extractvalue { { i16, i16 } } %23, 0 %25 = extractvalue { i16, i16 } %24, 0 %26 = extractvalue { i16, i16 } %24, 1 %27 = call i16 @H(i16 %25) %28 = call { i16, { i32, {}, {} } } @Measure(i16 %27) %29 = extractvalue { i16, { i32, {}, {} } } %28, 0 %30 = extractvalue { i16, { i32, {}, {} } } %28, 1 call void @QFree(i16 %29) %31 = extractvalue { i32, {}, {} } %30, 0 switch i32 %31, label %2 [ i32 1, label %4 ] 32: ; preds = %34 %33 = extractvalue { {} } undef, 0 br label %43 34: ; preds = %4 %35 = call i16 @Z(i16 %17) switch i32 0, label %32 [ ] 36: ; preds = %38 %37 = extractvalue { {} } undef, 0 br label %43 38: ; preds = %2 switch i32 0, label %36 [ ] 39: ; preds = %43 %40 = extractvalue { i32, {}, {} } %46, 1 br label %54 41: ; preds = %43 %42 = extractvalue { i32, {}, {} } %46, 2 br label %50 43: ; preds = %36, %32 %"9_0.0" = phi i16 [ %17, %36 ], [ %35, %32 ] %44 = call { i16, { i32, {}, {} } } @Measure(i16 %26) %45 = extractvalue { i16, { i32, {}, {} } } %44, 0 %46 = extractvalue { i16, { i32, {}, {} } } %44, 1 call void @QFree(i16 %45) %47 = extractvalue { i32, {}, {} } %46, 0 switch i32 %47, label %39 [ i32 1, label %41 ] 48: ; preds = %50 %49 = extractvalue { {} } undef, 0 br label %57 50: ; preds = %41 %51 = call i16 @X(i16 %"9_0.0") switch i32 0, label %48 [ ] 52: ; preds = %54 %53 = extractvalue { {} } undef, 0 br label %57 54: ; preds = %39 switch i32 0, label %52 [ ] 55: ; preds = %57 %56 = extractvalue { {} } undef, 0 br label %58 57: ; preds = %52, %48 %"12_0.0" = phi i16 [ %"9_0.0", %52 ], [ %51, %48 ] switch i32 0, label %55 [ ] 58: ; preds = %55 ret i16 %"12_0.0" } declare i16 @QAlloc() declare i16 @H(i16) declare { i16, i16 } @CX(i16, i16) declare { i16, { i32, {}, {} } } @Measure(i16) declare void @QFree(i16) declare i16 @Z(i16) declare i16 @X(i16) define { i32, {}, {} } @_hl.main.26() { alloca_block: br label %entry_block entry_block: ; preds = %alloca_block br label %2 0: ; preds = %2 %1 = extractvalue { {} } undef, 0 br label %15 2: ; preds = %entry_block %3 = call i16 @QAlloc() %4 = call i16 @QAlloc() %5 = insertvalue { i16, i16 } undef, i16 %4, 0 %6 = insertvalue { i16, i16 } %5, i16 %3, 1 %7 = insertvalue { { i16, i16 } } poison, { i16, i16 } %6, 0 %8 = extractvalue { { i16, i16 } } %7, 0 %9 = extractvalue { i16, i16 } %8, 0 %10 = extractvalue { i16, i16 } %8, 1 %11 = call i16 @_hl.teleport.25(i16 %9, i16 %10) %12 = call { i16, { i32, {}, {} } } @Measure(i16 %11) %13 = extractvalue { i16, { i32, {}, {} } } %12, 0 %14 = extractvalue { i16, { i32, {}, {} } } %12, 1 call void @QFree(i16 %13) switch i32 0, label %0 [ ] 15: ; preds = %0 ret { i32, {}, {} } %14 }