--- 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: %"0" = alloca i16, align 2 %"5_0" = alloca i16, align 2 %"5_1" = alloca i16, align 2 %"27_0" = alloca i16, align 2 %"6_0" = alloca i16, align 2 %"6_1" = alloca i16, align 2 %"03" = alloca i16, align 2 %"7_0" = alloca i16, align 2 %"7_1" = alloca i16, align 2 %"8_0" = alloca i16, align 2 %"8_1" = alloca i16, align 2 %"9_0" = alloca i16, align 2 %"9_1" = alloca i16, align 2 %"10_0" = alloca i16, align 2 %"11_0" = alloca i16, align 2 %"12_0" = alloca i16, align 2 %"37_1" = alloca { i32, {}, {} }, align 8 %"32_1" = alloca i16, align 2 %"35_1" = alloca i16, align 2 %"28_0" = alloca i16, align 2 %"29_0" = alloca i16, align 2 %"30_0" = alloca i16, align 2 %"30_1" = alloca i16, align 2 %"31_0" = alloca { { i16, i16 } }, align 8 %"32_0" = alloca i16, align 2 %"33_0" = alloca i16, align 2 %"33_1" = alloca i16, align 2 %"34_0" = alloca { { i16, i16 } }, align 8 %"35_0" = alloca i16, align 2 %"36_0" = alloca i16, align 2 %"37_0" = alloca i16, align 2 %"41_0" = alloca { {} }, align 8 %"40_0" = alloca i16, align 2 %"43_0" = alloca { {} }, align 8 %"45_1" = alloca { i32, {}, {} }, align 8 %"45_0" = alloca i16, align 2 %"49_0" = alloca { {} }, align 8 %"48_0" = alloca i16, align 2 %"51_0" = alloca { {} }, align 8 %"53_0" = alloca { {} }, align 8 br label %entry_block entry_block: ; preds = %alloca_block store i16 %0, i16* %"5_0", align 2 store i16 %1, i16* %"5_1", align 2 %"5_01" = load i16, i16* %"5_0", align 2 %"5_12" = load i16, i16* %"5_1", align 2 store i16 %"5_01", i16* %"6_0", align 2 store i16 %"5_12", i16* %"6_1", align 2 br label %6 2: ; preds = %6 %3 = extractvalue { i32, {}, {} } %"37_123", 1 store i16 %"32_124", i16* %"8_0", align 2 store i16 %"35_125", i16* %"8_1", align 2 br label %38 4: ; preds = %6 %5 = extractvalue { i32, {}, {} } %"37_123", 2 store i16 %"32_124", i16* %"7_0", align 2 store i16 %"35_125", i16* %"7_1", align 2 br label %34 6: ; preds = %entry_block %"6_04" = load i16, i16* %"6_0", align 2 %"6_15" = load i16, i16* %"6_1", align 2 %7 = call i16 @QAlloc() store i16 %7, i16* %"28_0", align 2 %"28_06" = load i16, i16* %"28_0", align 2 %8 = call i16 @H(i16 %"28_06") store i16 %8, i16* %"29_0", align 2 store i16 %"6_04", i16* %"6_0", align 2 store i16 %"6_15", i16* %"6_1", align 2 %"29_07" = load i16, i16* %"29_0", align 2 %"6_18" = load i16, i16* %"6_1", align 2 %9 = call { i16, i16 } @CX(i16 %"29_07", i16 %"6_18") %10 = extractvalue { i16, i16 } %9, 0 %11 = extractvalue { i16, i16 } %9, 1 store i16 %10, i16* %"30_0", align 2 store i16 %11, i16* %"30_1", align 2 %"30_09" = load i16, i16* %"30_0", align 2 %"30_110" = load i16, i16* %"30_1", align 2 %12 = insertvalue { i16, i16 } undef, i16 %"30_09", 0 %13 = insertvalue { i16, i16 } %12, i16 %"30_110", 1 %14 = insertvalue { { i16, i16 } } poison, { i16, i16 } %13, 0 store { { i16, i16 } } %14, { { i16, i16 } }* %"31_0", align 2 %"31_011" = load { { i16, i16 } }, { { i16, i16 } }* %"31_0", align 2 %15 = extractvalue { { i16, i16 } } %"31_011", 0 %16 = extractvalue { i16, i16 } %15, 0 %17 = extractvalue { i16, i16 } %15, 1 store i16 %16, i16* %"32_0", align 2 store i16 %17, i16* %"32_1", align 2 %"6_012" = load i16, i16* %"6_0", align 2 %"32_013" = load i16, i16* %"32_0", align 2 %18 = call { i16, i16 } @CX(i16 %"6_012", i16 %"32_013") %19 = extractvalue { i16, i16 } %18, 0 %20 = extractvalue { i16, i16 } %18, 1 store i16 %19, i16* %"33_0", align 2 store i16 %20, i16* %"33_1", align 2 %"33_014" = load i16, i16* %"33_0", align 2 %"33_115" = load i16, i16* %"33_1", align 2 %21 = insertvalue { i16, i16 } undef, i16 %"33_014", 0 %22 = insertvalue { i16, i16 } %21, i16 %"33_115", 1 %23 = insertvalue { { i16, i16 } } poison, { i16, i16 } %22, 0 store { { i16, i16 } } %23, { { i16, i16 } }* %"34_0", align 2 %"34_016" = load { { i16, i16 } }, { { i16, i16 } }* %"34_0", align 2 %24 = extractvalue { { i16, i16 } } %"34_016", 0 %25 = extractvalue { i16, i16 } %24, 0 %26 = extractvalue { i16, i16 } %24, 1 store i16 %25, i16* %"35_0", align 2 store i16 %26, i16* %"35_1", align 2 %"35_017" = load i16, i16* %"35_0", align 2 %27 = call i16 @H(i16 %"35_017") store i16 %27, i16* %"36_0", align 2 %"36_018" = load i16, i16* %"36_0", align 2 %28 = call { i16, { i32, {}, {} } } @Measure(i16 %"36_018") %29 = extractvalue { i16, { i32, {}, {} } } %28, 0 %30 = extractvalue { i16, { i32, {}, {} } } %28, 1 store i16 %29, i16* %"37_0", align 2 store { i32, {}, {} } %30, { i32, {}, {} }* %"37_1", align 4 %"37_119" = load { i32, {}, {} }, { i32, {}, {} }* %"37_1", align 4 %"32_120" = load i16, i16* %"32_1", align 2 %"35_121" = load i16, i16* %"35_1", align 2 store { i32, {}, {} } %"37_119", { i32, {}, {} }* %"37_1", align 4 store i16 %"32_120", i16* %"32_1", align 2 store i16 %"35_121", i16* %"35_1", align 2 %"37_022" = load i16, i16* %"37_0", align 2 call void @QFree(i16 %"37_022") %"37_123" = load { i32, {}, {} }, { i32, {}, {} }* %"37_1", align 4 %"32_124" = load i16, i16* %"32_1", align 2 %"35_125" = load i16, i16* %"35_1", align 2 %31 = extractvalue { i32, {}, {} } %"37_123", 0 switch i32 %31, label %2 [ i32 1, label %4 ] 32: ; preds = %34 %33 = extractvalue { {} } %"41_033", 0 store i16 %"40_034", i16* %"9_0", align 2 store i16 %"7_135", i16* %"9_1", align 2 br label %43 34: ; preds = %4 %"7_027" = load i16, i16* %"7_0", align 2 %"7_128" = load i16, i16* %"7_1", align 2 store { {} } undef, { {} }* %"41_0", align 1 store i16 %"7_027", i16* %"7_0", align 2 store i16 %"7_128", i16* %"7_1", align 2 %"7_029" = load i16, i16* %"7_0", align 2 %35 = call i16 @Z(i16 %"7_029") store i16 %35, i16* %"40_0", align 2 %"41_030" = load { {} }, { {} }* %"41_0", align 1 %"40_031" = load i16, i16* %"40_0", align 2 %"7_132" = load i16, i16* %"7_1", align 2 store { {} } %"41_030", { {} }* %"41_0", align 1 store i16 %"40_031", i16* %"40_0", align 2 store i16 %"7_132", i16* %"7_1", align 2 %"41_033" = load { {} }, { {} }* %"41_0", align 1 %"40_034" = load i16, i16* %"40_0", align 2 %"7_135" = load i16, i16* %"7_1", align 2 switch i32 0, label %32 [ ] 36: ; preds = %38 %37 = extractvalue { {} } %"43_041", 0 store i16 %"8_042", i16* %"9_0", align 2 store i16 %"8_143", i16* %"9_1", align 2 br label %43 38: ; preds = %2 %"8_036" = load i16, i16* %"8_0", align 2 %"8_137" = load i16, i16* %"8_1", align 2 store { {} } undef, { {} }* %"43_0", align 1 store i16 %"8_036", i16* %"8_0", align 2 store i16 %"8_137", i16* %"8_1", align 2 %"43_038" = load { {} }, { {} }* %"43_0", align 1 %"8_039" = load i16, i16* %"8_0", align 2 %"8_140" = load i16, i16* %"8_1", align 2 store { {} } %"43_038", { {} }* %"43_0", align 1 store i16 %"8_039", i16* %"8_0", align 2 store i16 %"8_140", i16* %"8_1", align 2 %"43_041" = load { {} }, { {} }* %"43_0", align 1 %"8_042" = load i16, i16* %"8_0", align 2 %"8_143" = load i16, i16* %"8_1", align 2 switch i32 0, label %36 [ ] 39: ; preds = %43 %40 = extractvalue { i32, {}, {} } %"45_150", 1 store i16 %"9_051", i16* %"11_0", align 2 br label %54 41: ; preds = %43 %42 = extractvalue { i32, {}, {} } %"45_150", 2 store i16 %"9_051", i16* %"10_0", align 2 br label %50 43: ; preds = %36, %32 %"9_044" = load i16, i16* %"9_0", align 2 %"9_145" = load i16, i16* %"9_1", align 2 store i16 %"9_044", i16* %"9_0", align 2 store i16 %"9_145", i16* %"9_1", align 2 %"9_146" = load i16, i16* %"9_1", align 2 %44 = call { i16, { i32, {}, {} } } @Measure(i16 %"9_146") %45 = extractvalue { i16, { i32, {}, {} } } %44, 0 %46 = extractvalue { i16, { i32, {}, {} } } %44, 1 store i16 %45, i16* %"45_0", align 2 store { i32, {}, {} } %46, { i32, {}, {} }* %"45_1", align 4 %"45_147" = load { i32, {}, {} }, { i32, {}, {} }* %"45_1", align 4 %"9_048" = load i16, i16* %"9_0", align 2 store { i32, {}, {} } %"45_147", { i32, {}, {} }* %"45_1", align 4 store i16 %"9_048", i16* %"9_0", align 2 %"45_049" = load i16, i16* %"45_0", align 2 call void @QFree(i16 %"45_049") %"45_150" = load { i32, {}, {} }, { i32, {}, {} }* %"45_1", align 4 %"9_051" = load i16, i16* %"9_0", align 2 %47 = extractvalue { i32, {}, {} } %"45_150", 0 switch i32 %47, label %39 [ i32 1, label %41 ] 48: ; preds = %50 %49 = extractvalue { {} } %"49_056", 0 store i16 %"48_057", i16* %"12_0", align 2 br label %57 50: ; preds = %41 %"10_052" = load i16, i16* %"10_0", align 2 store { {} } undef, { {} }* %"49_0", align 1 store i16 %"10_052", i16* %"10_0", align 2 %"10_053" = load i16, i16* %"10_0", align 2 %51 = call i16 @X(i16 %"10_053") store i16 %51, i16* %"48_0", align 2 %"49_054" = load { {} }, { {} }* %"49_0", align 1 %"48_055" = load i16, i16* %"48_0", align 2 store { {} } %"49_054", { {} }* %"49_0", align 1 store i16 %"48_055", i16* %"48_0", align 2 %"49_056" = load { {} }, { {} }* %"49_0", align 1 %"48_057" = load i16, i16* %"48_0", align 2 switch i32 0, label %48 [ ] 52: ; preds = %54 %53 = extractvalue { {} } %"51_061", 0 store i16 %"11_062", i16* %"12_0", align 2 br label %57 54: ; preds = %39 %"11_058" = load i16, i16* %"11_0", align 2 store { {} } undef, { {} }* %"51_0", align 1 store i16 %"11_058", i16* %"11_0", align 2 %"51_059" = load { {} }, { {} }* %"51_0", align 1 %"11_060" = load i16, i16* %"11_0", align 2 store { {} } %"51_059", { {} }* %"51_0", align 1 store i16 %"11_060", i16* %"11_0", align 2 %"51_061" = load { {} }, { {} }* %"51_0", align 1 %"11_062" = load i16, i16* %"11_0", align 2 switch i32 0, label %52 [ ] 55: ; preds = %57 %56 = extractvalue { {} } %"53_066", 0 store i16 %"12_067", i16* %"03", align 2 br label %58 57: ; preds = %52, %48 %"12_063" = load i16, i16* %"12_0", align 2 store { {} } undef, { {} }* %"53_0", align 1 store i16 %"12_063", i16* %"12_0", align 2 %"53_064" = load { {} }, { {} }* %"53_0", align 1 %"12_065" = load i16, i16* %"12_0", align 2 store { {} } %"53_064", { {} }* %"53_0", align 1 store i16 %"12_065", i16* %"12_0", align 2 %"53_066" = load { {} }, { {} }* %"53_0", align 1 %"12_067" = load i16, i16* %"12_0", align 2 switch i32 0, label %55 [ ] 58: ; preds = %55 %"026" = load i16, i16* %"03", align 2 store i16 %"026", i16* %"27_0", align 2 %"27_068" = load i16, i16* %"27_0", align 2 store i16 %"27_068", i16* %"0", align 2 %"069" = load i16, i16* %"0", align 2 ret i16 %"069" } 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: %"0" = alloca { i32, {}, {} }, align 8 %"54_0" = alloca { i32, {}, {} }, align 8 %"01" = alloca { i32, {}, {} }, align 8 %"62_0" = alloca { {} }, align 8 %"60_1" = alloca { i32, {}, {} }, align 8 %"56_0" = alloca i16, align 2 %"55_0" = alloca i16, align 2 %"57_0" = alloca { { i16, i16 } }, align 8 %"58_0" = alloca i16, align 2 %"58_1" = alloca i16, align 2 %"59_0" = alloca i16, align 2 %"60_0" = alloca i16, align 2 br label %entry_block entry_block: ; preds = %alloca_block br label %2 0: ; preds = %2 %1 = extractvalue { {} } %"62_011", 0 store { i32, {}, {} } %"60_112", { i32, {}, {} }* %"01", align 4 br label %15 2: ; preds = %entry_block store { {} } undef, { {} }* %"62_0", align 1 %3 = call i16 @QAlloc() store i16 %3, i16* %"56_0", align 2 %4 = call i16 @QAlloc() store i16 %4, i16* %"55_0", align 2 %"55_02" = load i16, i16* %"55_0", align 2 %"56_03" = load i16, i16* %"56_0", align 2 %5 = insertvalue { i16, i16 } undef, i16 %"55_02", 0 %6 = insertvalue { i16, i16 } %5, i16 %"56_03", 1 %7 = insertvalue { { i16, i16 } } poison, { i16, i16 } %6, 0 store { { i16, i16 } } %7, { { i16, i16 } }* %"57_0", align 2 %"57_04" = load { { i16, i16 } }, { { i16, i16 } }* %"57_0", align 2 %8 = extractvalue { { i16, i16 } } %"57_04", 0 %9 = extractvalue { i16, i16 } %8, 0 %10 = extractvalue { i16, i16 } %8, 1 store i16 %9, i16* %"58_0", align 2 store i16 %10, i16* %"58_1", align 2 %"58_05" = load i16, i16* %"58_0", align 2 %"58_16" = load i16, i16* %"58_1", align 2 %11 = call i16 @_hl.teleport.25(i16 %"58_05", i16 %"58_16") store i16 %11, i16* %"59_0", align 2 %"59_07" = load i16, i16* %"59_0", align 2 %12 = call { i16, { i32, {}, {} } } @Measure(i16 %"59_07") %13 = extractvalue { i16, { i32, {}, {} } } %12, 0 %14 = extractvalue { i16, { i32, {}, {} } } %12, 1 store i16 %13, i16* %"60_0", align 2 store { i32, {}, {} } %14, { i32, {}, {} }* %"60_1", align 4 %"62_08" = load { {} }, { {} }* %"62_0", align 1 %"60_19" = load { i32, {}, {} }, { i32, {}, {} }* %"60_1", align 4 store { {} } %"62_08", { {} }* %"62_0", align 1 store { i32, {}, {} } %"60_19", { i32, {}, {} }* %"60_1", align 4 %"60_010" = load i16, i16* %"60_0", align 2 call void @QFree(i16 %"60_010") %"62_011" = load { {} }, { {} }* %"62_0", align 1 %"60_112" = load { i32, {}, {} }, { i32, {}, {} }* %"60_1", align 4 switch i32 0, label %0 [ ] 15: ; preds = %0 %"013" = load { i32, {}, {} }, { i32, {}, {} }* %"01", align 4 store { i32, {}, {} } %"013", { i32, {}, {} }* %"54_0", align 4 %"54_014" = load { i32, {}, {} }, { i32, {}, {} }* %"54_0", align 4 store { i32, {}, {} } %"54_014", { i32, {}, {} }* %"0", align 4 %"015" = load { i32, {}, {} }, { i32, {}, {} }* %"0", align 4 ret { i32, {}, {} } %"015" }