Skip to content

[WebAssembly] Merge eh-assembly-legacy.s into eh-assembly.s #111411

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 7, 2024

Conversation

aheejin
Copy link
Member

@aheejin aheejin commented Oct 7, 2024

Now that we don't need to specify --no-type-check on eh-assembly.s, we can test the two modes in the same file.

Now that we don't need to specify `--no-type-check` on `eh-assembly.s`,
we can test the two modes in the same file.
@aheejin aheejin requested a review from dschuff October 7, 2024 17:34
@llvmbot llvmbot added backend:WebAssembly mc Machine (object) code labels Oct 7, 2024
@llvmbot
Copy link
Member

llvmbot commented Oct 7, 2024

@llvm/pr-subscribers-mc

@llvm/pr-subscribers-backend-webassembly

Author: Heejin Ahn (aheejin)

Changes

Now that we don't need to specify --no-type-check on eh-assembly.s, we can test the two modes in the same file.


Full diff: https://github.com/llvm/llvm-project/pull/111411.diff

2 Files Affected:

  • (removed) llvm/test/MC/WebAssembly/eh-assembly-legacy.s (-99)
  • (modified) llvm/test/MC/WebAssembly/eh-assembly.s (+90)
diff --git a/llvm/test/MC/WebAssembly/eh-assembly-legacy.s b/llvm/test/MC/WebAssembly/eh-assembly-legacy.s
deleted file mode 100644
index deba6cc683f035..00000000000000
--- a/llvm/test/MC/WebAssembly/eh-assembly-legacy.s
+++ /dev/null
@@ -1,99 +0,0 @@
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+exception-handling < %s | FileCheck %s
-# Check that it converts to .o without errors, but don't check any output:
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj -mattr=+exception-handling -o %t.o < %s
-
-  .tagtype  __cpp_exception i32
-  .tagtype  __c_longjmp i32
-  .functype  foo () -> ()
-
-eh_legacy_test:
-  .functype  eh_legacy_test () -> ()
-
-  # try-catch with catch, catch_all, throw, and rethrow
-  try
-    i32.const 3
-    throw     __cpp_exception
-  catch       __cpp_exception
-    drop
-    rethrow 0
-  catch       __c_longjmp
-    drop
-  catch_all
-    rethrow 0
-  end_try
-
-  # Nested try-catch with a rethrow
-  try
-    call  foo
-  catch_all
-    try
-    catch_all
-      rethrow 1
-    end_try
-  end_try
-
-  # try-catch with a single return value
-  try i32
-    i32.const 0
-  catch       __cpp_exception
-  end_try
-  drop
-
-  # try-catch with a mulvivalue return
-  try () -> (i32, f32)
-    i32.const 0
-    f32.const 0.0
-  catch       __cpp_exception
-    f32.const 1.0
-  end_try
-  drop
-  drop
-
-  # Catch-less try
-  try
-    call  foo
-  end_try
-  end_function
-
-# CHECK-LABEL: eh_legacy_test:
-# CHECK:         try
-# CHECK-NEXT:    i32.const       3
-# CHECK-NEXT:    throw           __cpp_exception
-# CHECK-NEXT:    catch           __cpp_exception
-# CHECK-NEXT:    drop
-# CHECK-NEXT:    rethrow         0
-# CHECK-NEXT:    catch           __c_longjmp
-# CHECK-NEXT:    drop
-# CHECK-NEXT:    catch_all
-# CHECK-NEXT:    rethrow         0
-# CHECK-NEXT:    end_try
-
-# CHECK:         try
-# CHECK-NEXT:    call    foo
-# CHECK-NEXT:    catch_all
-# CHECK-NEXT:    try
-# CHECK-NEXT:    catch_all
-# CHECK-NEXT:    rethrow         1
-# CHECK-NEXT:    end_try
-# CHECK-NEXT:    end_try
-
-# CHECK:         try             i32
-# CHECK-NEXT:    i32.const       0
-# CHECK-NEXT:    catch           __cpp_exception
-# CHECK-NEXT:    end_try
-# CHECK-NEXT:    drop
-
-# CHECK:         try             () -> (i32, f32)
-# CHECK-NEXT:    i32.const       0
-# CHECK-NEXT:    f32.const       0x0p0
-# CHECK-NEXT:    catch           __cpp_exception
-# CHECK-NEXT:    f32.const       0x1p0
-# CHECK-NEXT:    end_try
-# CHECK-NEXT:    drop
-# CHECK-NEXT:    drop
-
-# CHECK:         try
-# CHECK-NEXT:    call    foo
-# CHECK-NEXT:    end_try
-# CHECK-NEXT:    end_function
-
diff --git a/llvm/test/MC/WebAssembly/eh-assembly.s b/llvm/test/MC/WebAssembly/eh-assembly.s
index d28a7048fb6114..38cda10a387a3b 100644
--- a/llvm/test/MC/WebAssembly/eh-assembly.s
+++ b/llvm/test/MC/WebAssembly/eh-assembly.s
@@ -82,9 +82,58 @@ eh_test:
   end_try_table
   drop
   drop
+  end_function
+
+eh_legacy_test:
+  .functype  eh_legacy_test () -> ()
+
+  # try-catch with catch, catch_all, throw, and rethrow
+  try
+    i32.const 3
+    throw     __cpp_exception
+  catch       __cpp_exception
+    drop
+    rethrow 0
+  catch       __c_longjmp
+    drop
+  catch_all
+    rethrow 0
+  end_try
+
+  # Nested try-catch with a rethrow
+  try
+    call  foo
+  catch_all
+    try
+    catch_all
+      rethrow 1
+    end_try
+  end_try
+
+  # try-catch with a single return value
+  try i32
+    i32.const 0
+  catch       __cpp_exception
+  end_try
+  drop
+
+  # try-catch with a mulvivalue return
+  try () -> (i32, f32)
+    i32.const 0
+    f32.const 0.0
+  catch       __cpp_exception
+    f32.const 1.0
+  end_try
+  drop
+  drop
 
+  # Catch-less try
+  try
+    call  foo
+  end_try
   end_function
 
+
 # CHECK-LABEL: eh_test:
 # CHECK:         block           exnref
 # CHECK-NEXT:    block
@@ -153,3 +202,44 @@ eh_test:
 # CHECK-NEXT:    end_try_table
 # CHECK-NEXT:    drop
 # CHECK-NEXT:    drop
+
+# CHECK:       eh_legacy_test:
+# CHECK:         try
+# CHECK-NEXT:    i32.const       3
+# CHECK-NEXT:    throw           __cpp_exception
+# CHECK-NEXT:    catch           __cpp_exception
+# CHECK-NEXT:    drop
+# CHECK-NEXT:    rethrow         0
+# CHECK-NEXT:    catch           __c_longjmp
+# CHECK-NEXT:    drop
+# CHECK-NEXT:    catch_all
+# CHECK-NEXT:    rethrow         0
+# CHECK-NEXT:    end_try
+
+# CHECK:         try
+# CHECK-NEXT:    call    foo
+# CHECK-NEXT:    catch_all
+# CHECK-NEXT:    try
+# CHECK-NEXT:    catch_all
+# CHECK-NEXT:    rethrow         1
+# CHECK-NEXT:    end_try
+# CHECK-NEXT:    end_try
+
+# CHECK:         try             i32
+# CHECK-NEXT:    i32.const       0
+# CHECK-NEXT:    catch           __cpp_exception
+# CHECK-NEXT:    end_try
+# CHECK-NEXT:    drop
+
+# CHECK:         try             () -> (i32, f32)
+# CHECK-NEXT:    i32.const       0
+# CHECK-NEXT:    f32.const       0x0p0
+# CHECK-NEXT:    catch           __cpp_exception
+# CHECK-NEXT:    f32.const       0x1p0
+# CHECK-NEXT:    end_try
+# CHECK-NEXT:    drop
+# CHECK-NEXT:    drop
+
+# CHECK:         try
+# CHECK-NEXT:    call    foo
+# CHECK-NEXT:    end_try

@aheejin
Copy link
Member Author

aheejin commented Oct 7, 2024

The CI failures don't seem relevant. Merging.

@aheejin aheejin merged commit a98466a into llvm:main Oct 7, 2024
10 of 12 checks passed
@aheejin aheejin deleted the merge_eh_tests branch October 7, 2024 20:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:WebAssembly mc Machine (object) code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants