Skip to content

Commit

Permalink
Merge pull request #18 from CQCL/doug/fix-sum-tag-elision
Browse files Browse the repository at this point in the history
fix: sum type tag elision logic reversed
  • Loading branch information
doug-q authored Jun 14, 2024
2 parents c079b7f + b00683a commit b63c619
Show file tree
Hide file tree
Showing 24 changed files with 254 additions and 252 deletions.
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1 @@
snapshots/*.snap -diff
**/snapshots/*.snap -diff
20 changes: 10 additions & 10 deletions src/emit/snapshots/[email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,24 @@ entry_block: ; preds = %alloca_block
ret void
}

define { {}, {} } @_hl.main_unary.5({ {}, {} } %0) {
define { i32, {}, {} } @_hl.main_unary.5({ i32, {}, {} } %0) {
alloca_block:
br label %entry_block

entry_block: ; preds = %alloca_block
%1 = call { {}, {} } @_hl.main_unary.5({ {}, {} } %0)
ret { {}, {} } %1
%1 = call { i32, {}, {} } @_hl.main_unary.5({ i32, {}, {} } %0)
ret { i32, {}, {} } %1
}

define { { {}, {} }, { {}, {} } } @_hl.main_binary.9({ {}, {} } %0, { {}, {} } %1) {
define { { i32, {}, {} }, { i32, {}, {} } } @_hl.main_binary.9({ i32, {}, {} } %0, { i32, {}, {} } %1) {
alloca_block:
br label %entry_block

entry_block: ; preds = %alloca_block
%2 = call { { {}, {} }, { {}, {} } } @_hl.main_binary.9({ {}, {} } %0, { {}, {} } %1)
%3 = extractvalue { { {}, {} }, { {}, {} } } %2, 0
%4 = extractvalue { { {}, {} }, { {}, {} } } %2, 1
%mrv = insertvalue { { {}, {} }, { {}, {} } } undef, { {}, {} } %3, 0
%mrv7 = insertvalue { { {}, {} }, { {}, {} } } %mrv, { {}, {} } %4, 1
ret { { {}, {} }, { {}, {} } } %mrv7
%2 = call { { i32, {}, {} }, { i32, {}, {} } } @_hl.main_binary.9({ i32, {}, {} } %0, { i32, {}, {} } %1)
%3 = extractvalue { { i32, {}, {} }, { i32, {}, {} } } %2, 0
%4 = extractvalue { { i32, {}, {} }, { i32, {}, {} } } %2, 1
%mrv = insertvalue { { i32, {}, {} }, { i32, {}, {} } } undef, { i32, {}, {} } %3, 0
%mrv7 = insertvalue { { i32, {}, {} }, { i32, {}, {} } } %mrv, { i32, {}, {} } %4, 1
ret { { i32, {}, {} }, { i32, {}, {} } } %mrv7
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,51 +14,51 @@ entry_block: ; preds = %alloca_block
ret void
}

define { {}, {} } @_hl.main_unary.5({ {}, {} } %0) {
define { i32, {}, {} } @_hl.main_unary.5({ i32, {}, {} } %0) {
alloca_block:
%"0" = alloca { {}, {} }, align 8
%"6_0" = alloca { {}, {} }, align 8
%"8_0" = alloca { {}, {} }, align 8
%"0" = alloca { i32, {}, {} }, align 8
%"6_0" = alloca { i32, {}, {} }, align 8
%"8_0" = alloca { i32, {}, {} }, align 8
br label %entry_block

entry_block: ; preds = %alloca_block
store { {}, {} } %0, { {}, {} }* %"6_0", align 1
%"6_01" = load { {}, {} }, { {}, {} }* %"6_0", align 1
%1 = call { {}, {} } @_hl.main_unary.5({ {}, {} } %"6_01")
store { {}, {} } %1, { {}, {} }* %"8_0", align 1
%"8_02" = load { {}, {} }, { {}, {} }* %"8_0", align 1
store { {}, {} } %"8_02", { {}, {} }* %"0", align 1
%"03" = load { {}, {} }, { {}, {} }* %"0", align 1
ret { {}, {} } %"03"
store { i32, {}, {} } %0, { i32, {}, {} }* %"6_0", align 4
%"6_01" = load { i32, {}, {} }, { i32, {}, {} }* %"6_0", align 4
%1 = call { i32, {}, {} } @_hl.main_unary.5({ i32, {}, {} } %"6_01")
store { i32, {}, {} } %1, { i32, {}, {} }* %"8_0", align 4
%"8_02" = load { i32, {}, {} }, { i32, {}, {} }* %"8_0", align 4
store { i32, {}, {} } %"8_02", { i32, {}, {} }* %"0", align 4
%"03" = load { i32, {}, {} }, { i32, {}, {} }* %"0", align 4
ret { i32, {}, {} } %"03"
}

define { { {}, {} }, { {}, {} } } @_hl.main_binary.9({ {}, {} } %0, { {}, {} } %1) {
define { { i32, {}, {} }, { i32, {}, {} } } @_hl.main_binary.9({ i32, {}, {} } %0, { i32, {}, {} } %1) {
alloca_block:
%"0" = alloca { {}, {} }, align 8
%"1" = alloca { {}, {} }, align 8
%"10_0" = alloca { {}, {} }, align 8
%"10_1" = alloca { {}, {} }, align 8
%"12_0" = alloca { {}, {} }, align 8
%"12_1" = alloca { {}, {} }, align 8
%"0" = alloca { i32, {}, {} }, align 8
%"1" = alloca { i32, {}, {} }, align 8
%"10_0" = alloca { i32, {}, {} }, align 8
%"10_1" = alloca { i32, {}, {} }, align 8
%"12_0" = alloca { i32, {}, {} }, align 8
%"12_1" = alloca { i32, {}, {} }, align 8
br label %entry_block

entry_block: ; preds = %alloca_block
store { {}, {} } %0, { {}, {} }* %"10_0", align 1
store { {}, {} } %1, { {}, {} }* %"10_1", align 1
%"10_01" = load { {}, {} }, { {}, {} }* %"10_0", align 1
%"10_12" = load { {}, {} }, { {}, {} }* %"10_1", align 1
%2 = call { { {}, {} }, { {}, {} } } @_hl.main_binary.9({ {}, {} } %"10_01", { {}, {} } %"10_12")
%3 = extractvalue { { {}, {} }, { {}, {} } } %2, 0
%4 = extractvalue { { {}, {} }, { {}, {} } } %2, 1
store { {}, {} } %3, { {}, {} }* %"12_0", align 1
store { {}, {} } %4, { {}, {} }* %"12_1", align 1
%"12_03" = load { {}, {} }, { {}, {} }* %"12_0", align 1
%"12_14" = load { {}, {} }, { {}, {} }* %"12_1", align 1
store { {}, {} } %"12_03", { {}, {} }* %"0", align 1
store { {}, {} } %"12_14", { {}, {} }* %"1", align 1
%"05" = load { {}, {} }, { {}, {} }* %"0", align 1
%"16" = load { {}, {} }, { {}, {} }* %"1", align 1
%mrv = insertvalue { { {}, {} }, { {}, {} } } undef, { {}, {} } %"05", 0
%mrv7 = insertvalue { { {}, {} }, { {}, {} } } %mrv, { {}, {} } %"16", 1
ret { { {}, {} }, { {}, {} } } %mrv7
store { i32, {}, {} } %0, { i32, {}, {} }* %"10_0", align 4
store { i32, {}, {} } %1, { i32, {}, {} }* %"10_1", align 4
%"10_01" = load { i32, {}, {} }, { i32, {}, {} }* %"10_0", align 4
%"10_12" = load { i32, {}, {} }, { i32, {}, {} }* %"10_1", align 4
%2 = call { { i32, {}, {} }, { i32, {}, {} } } @_hl.main_binary.9({ i32, {}, {} } %"10_01", { i32, {}, {} } %"10_12")
%3 = extractvalue { { i32, {}, {} }, { i32, {}, {} } } %2, 0
%4 = extractvalue { { i32, {}, {} }, { i32, {}, {} } } %2, 1
store { i32, {}, {} } %3, { i32, {}, {} }* %"12_0", align 4
store { i32, {}, {} } %4, { i32, {}, {} }* %"12_1", align 4
%"12_03" = load { i32, {}, {} }, { i32, {}, {} }* %"12_0", align 4
%"12_14" = load { i32, {}, {} }, { i32, {}, {} }* %"12_1", align 4
store { i32, {}, {} } %"12_03", { i32, {}, {} }* %"0", align 4
store { i32, {}, {} } %"12_14", { i32, {}, {} }* %"1", align 4
%"05" = load { i32, {}, {} }, { i32, {}, {} }* %"0", align 4
%"16" = load { i32, {}, {} }, { i32, {}, {} }* %"1", align 4
%mrv = insertvalue { { i32, {}, {} }, { i32, {}, {} } } undef, { i32, {}, {} } %"05", 0
%mrv7 = insertvalue { { i32, {}, {} }, { i32, {}, {} } } %mrv, { i32, {}, {} } %"16", 1
ret { { i32, {}, {} }, { i32, {}, {} } } %mrv7
}
37 changes: 19 additions & 18 deletions src/emit/snapshots/[email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,41 @@ expression: module.to_string()
; ModuleID = 'test_context'
source_filename = "test_context"

define { { { { {}, {} } }, { { i32, {} } }, { { i32 } } }, { i32, {} } } @_hl.main.1({ { { i32 } }, { { i32, {} } }, { { {}, {} } } } %0, { i32, {} } %1) {
define { { i32, { { i32, {}, {} } }, { { {} } }, { {} } }, { {} } } @_hl.main.1({ i32, { {} }, { { {} } }, { { i32, {}, {} } } } %0, { {} } %1) {
alloca_block:
br label %entry_block

entry_block: ; preds = %alloca_block
%2 = extractvalue { { { i32 } }, { { i32, {} } }, { { {}, {} } } } %0, 0
%3 = extractvalue { { i32 } } %2, 0
%4 = extractvalue { { { i32 } }, { { i32, {} } }, { { {}, {} } } } %0, 1
%5 = extractvalue { { i32, {} } } %4, 0
%6 = extractvalue { { { i32 } }, { { i32, {} } }, { { {}, {} } } } %0, 2
%7 = extractvalue { { {}, {} } } %6, 0
switch i32 0, label %cond_4_case_0 [
%2 = extractvalue { i32, { {} }, { { {} } }, { { i32, {}, {} } } } %0, 0
%3 = extractvalue { i32, { {} }, { { {} } }, { { i32, {}, {} } } } %0, 1
%4 = extractvalue { {} } %3, 0
%5 = extractvalue { i32, { {} }, { { {} } }, { { i32, {}, {} } } } %0, 2
%6 = extractvalue { { {} } } %5, 0
%7 = extractvalue { i32, { {} }, { { {} } }, { { i32, {}, {} } } } %0, 3
%8 = extractvalue { { i32, {}, {} } } %7, 0
switch i32 %2, label %cond_4_case_0 [
i32 1, label %cond_4_case_1
i32 2, label %cond_4_case_2
]

cond_4_case_0: ; preds = %entry_block
%8 = insertvalue { { i32 } } undef, { i32 } %3, 0
%9 = insertvalue { { { {}, {} } }, { { i32, {} } }, { { i32 } } } poison, { { i32 } } %8, 2
%9 = insertvalue { {} } undef, {} %4, 0
%10 = insertvalue { i32, { { i32, {}, {} } }, { { {} } }, { {} } } { i32 2, { { i32, {}, {} } } poison, { { {} } } poison, { {} } poison }, { {} } %9, 3
br label %cond_exit_4

cond_4_case_1: ; preds = %entry_block
%10 = insertvalue { { i32, {} } } undef, { i32, {} } %5, 0
%11 = insertvalue { { { {}, {} } }, { { i32, {} } }, { { i32 } } } poison, { { i32, {} } } %10, 1
%11 = insertvalue { { {} } } undef, { {} } %6, 0
%12 = insertvalue { i32, { { i32, {}, {} } }, { { {} } }, { {} } } { i32 1, { { i32, {}, {} } } poison, { { {} } } poison, { {} } poison }, { { {} } } %11, 2
br label %cond_exit_4

cond_4_case_2: ; preds = %entry_block
%12 = insertvalue { { {}, {} } } undef, { {}, {} } %7, 0
%13 = insertvalue { { { {}, {} } }, { { i32, {} } }, { { i32 } } } poison, { { {}, {} } } %12, 0
%13 = insertvalue { { i32, {}, {} } } undef, { i32, {}, {} } %8, 0
%14 = insertvalue { i32, { { i32, {}, {} } }, { { {} } }, { {} } } { i32 0, { { i32, {}, {} } } poison, { { {} } } poison, { {} } poison }, { { i32, {}, {} } } %13, 1
br label %cond_exit_4

cond_exit_4: ; preds = %cond_4_case_2, %cond_4_case_1, %cond_4_case_0
%"03.0" = phi { { { {}, {} } }, { { i32, {} } }, { { i32 } } } [ %9, %cond_4_case_0 ], [ %13, %cond_4_case_2 ], [ %11, %cond_4_case_1 ]
%mrv = insertvalue { { { { {}, {} } }, { { i32, {} } }, { { i32 } } }, { i32, {} } } undef, { { { {}, {} } }, { { i32, {} } }, { { i32 } } } %"03.0", 0
%mrv32 = insertvalue { { { { {}, {} } }, { { i32, {} } }, { { i32 } } }, { i32, {} } } %mrv, { i32, {} } %1, 1
ret { { { { {}, {} } }, { { i32, {} } }, { { i32 } } }, { i32, {} } } %mrv32
%"03.0" = phi { i32, { { i32, {}, {} } }, { { {} } }, { {} } } [ %10, %cond_4_case_0 ], [ %14, %cond_4_case_2 ], [ %12, %cond_4_case_1 ]
%mrv = insertvalue { { i32, { { i32, {}, {} } }, { { {} } }, { {} } }, { {} } } undef, { i32, { { i32, {}, {} } }, { { {} } }, { {} } } %"03.0", 0
%mrv32 = insertvalue { { i32, { { i32, {}, {} } }, { { {} } }, { {} } }, { {} } } %mrv, { {} } %1, 1
ret { { i32, { { i32, {}, {} } }, { { {} } }, { {} } }, { {} } } %mrv32
}
Loading

0 comments on commit b63c619

Please sign in to comment.