mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-11 22:08:54 +00:00
Codegen fix for function pointers marked inline (#8866)
Fixes #5345 Fixes #5701
This commit is contained in:
@@ -107,6 +107,8 @@ __clang__
|
||||
# define N_INLINE(rettype, name) rettype __inline name
|
||||
#endif
|
||||
|
||||
#define N_INLINE_PTR(rettype, name) rettype (*name)
|
||||
|
||||
#if defined(__POCC__)
|
||||
# define NIM_CONST /* PCC is really picky with const modifiers */
|
||||
# undef _MSC_VER /* Yeah, right PCC defines _MSC_VER even if it is
|
||||
|
||||
10
tests/ccgbugs/t5345.nim
Normal file
10
tests/ccgbugs/t5345.nim
Normal file
@@ -0,0 +1,10 @@
|
||||
discard """
|
||||
output: true
|
||||
"""
|
||||
|
||||
proc cmpx(d: int): bool {.inline.} = d > 0
|
||||
|
||||
proc abc[C](cx: C, d: int) =
|
||||
echo cx(d)
|
||||
|
||||
abc(cmpx, 10)
|
||||
17
tests/ccgbugs/t5701.nim
Normal file
17
tests/ccgbugs/t5701.nim
Normal file
@@ -0,0 +1,17 @@
|
||||
discard """
|
||||
output: '''(Field0: 1, Field1: 1)
|
||||
(Field0: 2, Field1: 2)
|
||||
(Field0: 3, Field1: 3)
|
||||
'''
|
||||
"""
|
||||
|
||||
iterator zip[T1, T2](a: openarray[T1], b: openarray[T2]): iterator() {.inline.} =
|
||||
let len = min(a.len, b.len)
|
||||
for i in 0..<len:
|
||||
echo (a[i], b[i])
|
||||
|
||||
proc foo(args: varargs[int]) =
|
||||
for i in zip(args,args):
|
||||
discard
|
||||
|
||||
foo(1,2,3)
|
||||
Reference in New Issue
Block a user