[PATCH] D65475: Fix __clang_call_termiante's argument for foreign exceptions

Heejin Ahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 10 23:23:29 PDT 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rL368527: Fix __clang_call_termiante's argument for foreign exceptions (authored by aheejin, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D65475?vs=212422&id=214553#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65475/new/

https://reviews.llvm.org/D65475

Files:
  llvm/trunk/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp
  llvm/trunk/test/CodeGen/WebAssembly/exception.ll


Index: llvm/trunk/test/CodeGen/WebAssembly/exception.ll
===================================================================
--- llvm/trunk/test/CodeGen/WebAssembly/exception.ll
+++ llvm/trunk/test/CodeGen/WebAssembly/exception.ll
@@ -138,7 +138,8 @@
 ; CHECK:     catch
 ; CHECK:       block     i32
 ; CHECK:         br_on_exn   0, __cpp_exception
-; CHECK:         call      __clang_call_terminate, 0
+; CHECK:         i32.const  ${{.*}}=, 0
+; CHECK:         call      __clang_call_terminate
 ; CHECK:         unreachable
 ; CHECK:       end_block
 ; CHECK:       call      __clang_call_terminate
Index: llvm/trunk/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp
===================================================================
--- llvm/trunk/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp
+++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyLateEHPrepare.cpp
@@ -233,6 +233,7 @@
 // it. The pseudo instruction will be deleted later.
 bool WebAssemblyLateEHPrepare::addExceptionExtraction(MachineFunction &MF) {
   const auto &TII = *MF.getSubtarget<WebAssemblySubtarget>().getInstrInfo();
+  MachineRegisterInfo &MRI = MF.getRegInfo();
   auto *EHInfo = MF.getWasmEHFuncInfo();
   SmallVector<MachineInstr *, 16> ExtractInstrs;
   SmallVector<MachineInstr *, 8> ToDelete;
@@ -339,9 +340,11 @@
               WebAssembly::ClangCallTerminateFn);
       assert(ClangCallTerminateFn &&
              "There is no __clang_call_terminate() function");
+      unsigned Reg = MRI.createVirtualRegister(&WebAssembly::I32RegClass);
+      BuildMI(ElseMBB, DL, TII.get(WebAssembly::CONST_I32), Reg).addImm(0);
       BuildMI(ElseMBB, DL, TII.get(WebAssembly::CALL_VOID))
           .addGlobalAddress(ClangCallTerminateFn)
-          .addImm(0);
+          .addReg(Reg);
       BuildMI(ElseMBB, DL, TII.get(WebAssembly::UNREACHABLE));
 
     } else {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65475.214553.patch
Type: text/x-patch
Size: 1852 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190811/ab093cfd/attachment.bin>


More information about the llvm-commits mailing list