diff options
author | Daniel Clarke <dan137clarke@gmail.com> | 2022-07-13 22:55:33 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-13 20:55:33 +0800 |
commit | 489f6ddfefc4993af97eb2884b6d8173a4ee8b9d (patch) | |
tree | b06d5e17a633d54f4eed813eb3ccaa732800f77f | |
parent | af140966ea5b58ea248459acb74bf84537deb423 (diff) | |
download | Nim-489f6ddfefc4993af97eb2884b6d8173a4ee8b9d.tar.gz |
fix #20012 (#20013)
* replace gcc asm with __asm__ and add a test * update test case to specify gcc or clang and not cpp Co-authored-by: daniel <danielclarke@wearepopgun.com>
-rw-r--r-- | compiler/extccomp.nim | 2 | ||||
-rw-r--r-- | tests/compiler/tasm.nim | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/compiler/extccomp.nim b/compiler/extccomp.nim index f1dc01f44..23c43cb67 100644 --- a/compiler/extccomp.nim +++ b/compiler/extccomp.nim @@ -86,7 +86,7 @@ compiler gcc: linkLibCmd: " -l$1", debug: "", pic: "-fPIC", - asmStmtFrmt: "asm($1);$n", + asmStmtFrmt: "__asm__($1);$n", structStmtFmt: "$1 $3 $2 ", # struct|union [packed] $name produceAsm: gnuAsmListing, cppXsupport: "-std=gnu++14 -funsigned-char", diff --git a/tests/compiler/tasm.nim b/tests/compiler/tasm.nim new file mode 100644 index 000000000..9f60231e0 --- /dev/null +++ b/tests/compiler/tasm.nim @@ -0,0 +1,15 @@ +proc testAsm() = + let src = 41 + var dst = 0 + + asm """ + mov %1, %0\n\t + add $1, %0 + : "=r" (`dst`) + : "r" (`src`)""" + + doAssert dst == 42 + +when defined(gcc) or defined(clang) and not defined(cpp): + {.passc: "-std=c99".} + testAsm() \ No newline at end of file |