Skip to content

Instantly share code, notes, and snippets.

@kwk
Created August 29, 2023 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kwk/31de55c0a03b0eb62e78aee0bab74d01 to your computer and use it in GitHub Desktop.
Save kwk/31de55c0a03b0eb62e78aee0bab74d01 to your computer and use it in GitHub Desktop.
Test diff
--- a/llvm/test/CodeGen/WebAssembly/lower-wasm-sjlj.ll
+++ b/llvm/test/CodeGen/WebAssembly/lower-wasm-sjlj.ll
@@ -2,6 +2,7 @@
; RUN: opt < %s -wasm-lower-em-ehsjlj -wasm-enable-sjlj -S --mattr=+atomics,+bulk-memory | FileCheck %s -DPTR=i32
; RUN: opt < %s -wasm-lower-em-ehsjlj -wasm-enable-sjlj --mtriple=wasm64-unknown-unknown -data-layout="e-m:e-p:64:64-i64:64-n32:64-S128" -S | FileCheck %s -DPTR=i64
+
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
target triple = "wasm32-unknown-unknown"
@@ -25,16 +26,16 @@ entry:
unreachable
; CHECK: entry:
-; CHECK-NEXT: %malloccall = tail call ptr @malloc([[PTR]] 40)
-; CHECK-NEXT: store i32 0, ptr %malloccall, align 4
+; CHECK-NEXT: %setjmpTable = tail call ptr @malloc([[PTR]] 40)
+; CHECK-NEXT: store i32 0, ptr %setjmpTable, align 4
; CHECK-NEXT: %setjmpTableSize = add i32 4, 0
; CHECK-NEXT: br label %setjmp.dispatch
-; CHECK: setjmp.dispatch:
-; CHECK-NEXT: %val8 = phi i32 [ %val, %if.end ], [ undef, %entry ]
-; CHECK-NEXT: %buf7 = phi ptr [ %buf6, %if.end ], [ undef, %entry ]
-; CHECK-NEXT: %setjmpTableSize4 = phi i32 [ %setjmpTableSize5, %if.end ], [ %setjmpTableSize, %entry ]
-; CHECK-NEXT: %setjmpTable2 = phi ptr [ %setjmpTable3, %if.end ], [ %malloccall, %entry ]
+; CHECK: setjmp.dispatch: ; preds = %if.end, %entry
+; CHECK-NEXT: %val9 = phi i32 [ %val, %if.end ], [ undef, %entry ]
+; CHECK-NEXT: %buf8 = phi ptr [ %buf7, %if.end ], [ undef, %entry ]
+; CHECK-NEXT: %setjmpTableSize5 = phi i32 [ %setjmpTableSize6, %if.end ], [ %setjmpTableSize, %entry
+; CHECK-NEXT: %setjmpTable3 = phi ptr [ %setjmpTable4, %if.end ], [ %setjmpTable, %entry ]
; CHECK-NEXT: %label.phi = phi i32 [ %label, %if.end ], [ -1, %entry ]
; CHECK-NEXT: switch i32 %label.phi, label %entry.split [
; CHECK-NEXT: i32 1, label %entry.split.split
@@ -42,19 +43,19 @@ entry:
; CHECK: entry.split:
; CHECK-NEXT: %buf = alloca [1 x %struct.__jmp_buf_tag], align 16
-; CHECK-NEXT: %setjmpTable = call ptr @saveSetjmp(ptr %buf, i32 1, ptr %setjmpTable2, i32 %setjmpTableSize4)
-; CHECK-NEXT: %setjmpTableSize1 = call i32 @getTempRet0()
+; CHECK-NEXT: %setjmpTable1 = call ptr @saveSetjmp(ptr %buf, i32 1, ptr %setjmpTable3, i32 %setjmpTableSize5)
+; CHECK-NEXT: %setjmpTableSize2 = call i32 @getTempRet0()
; CHECK-NEXT: br label %entry.split.split
-; CHECK: entry.split.split:
-; CHECK-NEXT: %buf6 = phi ptr [ %buf7, %setjmp.dispatch ], [ %buf, %entry.split ]
-; CHECK-NEXT: %setjmpTableSize5 = phi i32 [ %setjmpTableSize1, %entry.split ], [ %setjmpTableSize4, %setjmp.dispatch ]
-; CHECK-NEXT: %setjmpTable3 = phi ptr [ %setjmpTable, %entry.split ], [ %setjmpTable2, %setjmp.dispatch ]
-; CHECK-NEXT: %setjmp.ret = phi i32 [ 0, %entry.split ], [ %val8, %setjmp.dispatch ]
-; CHECK-NEXT: invoke void @__wasm_longjmp(ptr %buf6, i32 1)
+; CHECK: entry.split.split: ; preds = %setjmp.dispatch, %entry.split
+; CHECK-NEXT: %buf7 = phi ptr [ %buf8, %setjmp.dispatch ], [ %buf, %entry.split ]
+; CHECK-NEXT: %setjmpTableSize6 = phi i32 [ %setjmpTableSize2, %entry.split ], [ %setjmpTableSize5, %setjmp.dispatch ]
+; CHECK-NEXT: %setjmpTable4 = phi ptr [ %setjmpTable1, %entry.split ], [ %setjmpTable3, %setjmp.dispatch ]
+; CHECK-NEXT: %setjmp.ret = phi i32 [ 0, %entry.split ], [ %val9, %setjmp.dispatch ]
+; CHECK-NEXT: invoke void @__wasm_longjmp(ptr %buf7, i32 1)
; CHECK-NEXT: to label %.noexc unwind label %catch.dispatch.longjmp
-; CHECK: .noexc:
+; CHECK: .noexc: ; preds = %entry.split.split
; CHECK-NEXT: unreachable
; CHECK: catch.dispatch.longjmp:
@@ -68,12 +69,12 @@ entry:
; CHECK-NEXT: %env = load ptr, ptr %env_gep, align {{.*}}
; CHECK-NEXT: %val = load i32, ptr %val_gep, align 4
; CHECK-NEXT: %setjmp.id = load [[PTR]], ptr %env, align {{.*}}
-; CHECK-NEXT: %label = call i32 @testSetjmp([[PTR]] %setjmp.id, ptr %setjmpTable3, i32 %setjmpTableSize5) [ "funclet"(token %1) ]
+; CHECK-NEXT: %label = call i32 @testSetjmp([[PTR]] %setjmp.id, ptr %setjmpTable4, i32 %setjmpTableSize6) [ "funclet"(token %1) ]
; CHECK-NEXT: %2 = icmp eq i32 %label, 0
; CHECK-NEXT: br i1 %2, label %if.then, label %if.end
-; CHECK: if.then:
-; CHECK-NEXT: tail call void @free(ptr %setjmpTable3) [ "funclet"(token %1) ]
+; CHECK: if.then: ; preds = %catch.longjmp
+; CHECK-NEXT: tail call void @free(ptr %setjmpTable4) [ "funclet"(token %1) ]
; CHECK-NEXT: call void @__wasm_longjmp(ptr %env, i32 %val) [ "funclet"(token %1) ]
; CHECK-NEXT: unreachable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment