summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorheterodoxic <122719743+heterodoxic@users.noreply.github.com>2023-06-07 15:15:08 +0200
committerGitHub <noreply@github.com>2023-06-07 15:15:08 +0200
commit7fad6e5c701ef81c443871ec61fdca0c19c9f588 (patch)
treef7554ac1f43aeba3587e5ea16f9a8dce51f9ccce
parent47fa7506ab8105eac80fac50a9f01ef89ba95cc3 (diff)
downloadNim-7fad6e5c701ef81c443871ec61fdca0c19c9f588.tar.gz
fixes #21995: align C++ with C backend behavior for empty raise state… (#21998)
* fixes #21995: align C with C++ backend behavior for empty raise statements

* make runtime behavior match across both C and C++ backend and all exception modes
-rw-r--r--compiler/ccgstmts.nim6
-rw-r--r--tests/ccgbugs/t21995.nim9
2 files changed, 10 insertions, 5 deletions
diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim
index 09350c034..f536a82c1 100644
--- a/compiler/ccgstmts.nim
+++ b/compiler/ccgstmts.nim
@@ -779,11 +779,7 @@ proc genRaiseStmt(p: BProc, t: PNode) =
   else:
     finallyActions(p)
     genLineDir(p, t)
-    # reraise the last exception:
-    if p.config.exc == excCpp:
-      line(p, cpsStmts, "throw;\n")
-    else:
-      linefmt(p, cpsStmts, "#reraiseException();$n", [])
+    linefmt(p, cpsStmts, "#reraiseException();$n", [])
   raiseInstr(p, p.s(cpsStmts))
 
 template genCaseGenericBranch(p: BProc, b: PNode, e: TLoc,
diff --git a/tests/ccgbugs/t21995.nim b/tests/ccgbugs/t21995.nim
new file mode 100644
index 000000000..0ec88aa59
--- /dev/null
+++ b/tests/ccgbugs/t21995.nim
@@ -0,0 +1,9 @@
+discard """
+    targets: "c cpp"
+    output: "Hi!"
+"""
+
+try:
+  raise
+except:
+  echo "Hi!"
\ No newline at end of file