Nim icon indicating copy to clipboard operation
Nim copied to clipboard

Compiling with --hotcodereloading:on generates clang compile errors

Open bbbscarter opened this issue 1 year ago • 4 comments

Description

Repro:

  • Create a test.nim file with e.g. echo "hello" in.
  • Compile with nim c -r --hotcodereloading:on test.nim
  • The build fails with clang errors.

Nim Version

Nim Compiler Version 2.0.1 [MacOSX: arm64] Compiled at 2023-10-09 Copyright (c) 2006-2023 by Andreas Rumpf

git hash: d30565f810ba5165ea2e5bcd91ea3dee9950051f active boot switches: -d:release

Current Output

CC: ../dev/nim/nim-source/lib/system/exceptions.nim
CC: ../dev/nim/nim-source/lib/std/private/dragonbox.nim
CC: ../dev/nim/nim-source/lib/std/private/schubfach.nim
CC: ../dev/nim/nim-source/lib/std/formatfloat.nim
CC: ../dev/nim/nim-source/lib/std/objectdollar.nim
CC: ../dev/nim/nim-source/lib/system/dollars.nim
CC: ../dev/nim/nim-source/lib/std/typedthreads.nim
CC: ../dev/nim/nim-source/lib/system/stacktraces.nim
CC: ../dev/nim/nim-source/lib/std/private/bitops_utils.nim
CC: ../dev/nim/nim-source/lib/system/countbits_impl.nim
/Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected]:150:76: error: initializer element is not a compile-time constant
N_LIB_PRIVATE TNimTypeV2 NTIv2__NGi9coTMIImwEn9bbid4fqyA_ = {.destructor = (void*)rttiDestroy__systemZexceptions_u56___grOaF4HD6uomto1opDGctg, .size = sizeof(tyObject_IndexDefect__NGi9coTMIImwEn9bbid4fqyA), .align = (NI16) NIM_ALIGNOF(tyObject_IndexDefect__NGi9coTMIImwEn9bbid4fqyA), .depth = 3, .display = TM__TzI3paKQY09cLjc9cmCvur3A_2, .traceImpl = (void*)eqtrace___system_u4614___o4n9cZBHzw1IHR5fm4fPePA, .flags = 0};
                                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected]:152:76: error: initializer element is not a compile-time constant
N_LIB_PRIVATE TNimTypeV2 NTIv2__aIK9b0jMDtIHpNwgmCTcc9bQ_ = {.destructor = (void*)rttiDestroy__systemZexceptions_u58___grOaF4HD6uomto1opDGctg_2, .size = sizeof(tyObject_OverflowDefect__aIK9b0jMDtIHpNwgmCTcc9bQ), .align = (NI16) NIM_ALIGNOF(tyObject_OverflowDefect__aIK9b0jMDtIHpNwgmCTcc9bQ), .depth = 4, .display = TM__TzI3paKQY09cLjc9cmCvur3A_3, .traceImpl = (void*)eqtrace___system_u5009___Ec9cY8mQrpjwZoTV9aw9aOu1g, .flags = 0};
                                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected]:154:74: error: initializer element is not a compile-time constant
N_LIB_PRIVATE TNimTypeV2 NTIv2__sLkvReWT178tWm5f6a1NSQ_ = {.destructor = (void*)rttiDestroy__systemZexceptions_u60___grOaF4HD6uomto1opDGctg_3, .size = sizeof(tyObject_RangeDefect__sLkvReWT178tWm5f6a1NSQ), .align = (NI16) NIM_ALIGNOF(tyObject_RangeDefect__sLkvReWT178tWm5f6a1NSQ), .depth = 3, .display = TM__TzI3paKQY09cLjc9cmCvur3A_4, .traceImpl = (void*)eqtrace___system_u4545___Hx1ZqdfqfHhcaX3KdyUbmw, .flags = 0};
                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 errors generated.
CC: ../dev/nim/nim-source/lib/system/repr_v2.nim
Error: execution of an external compiler program 'clang -c  -w -ferror-limit=3 -pthread  -fPIC  -I/Users/scarter/dev/nim/nim-source/lib -I/Users/scarter/temp -o /Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected] /Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected]' failed with exit code: 1

Expected Output

File should compile.

Possible Solution

No response

Additional Information

Curiosities:

  • Compiling the empty nim file with cpp works.
  • However, adding and raising custom exception does fail (and only with --hotcodereloading:on) e.g.
type TT = object of Defect 
TT.newException("Test")

and compiling it with: nim cpp -r --hotcodereloading:on test.nim

fails with:

......................................................................
/Users/scarter/temp/test.nim(4, 1) Warning: unreachable code after 'return' statement or '{.noReturn.}' proc [UnreachableCode]
CC: ../dev/nim/nim-source/lib/system/exceptions.nim
CC: ../dev/nim/nim-source/lib/std/private/since.nim
CC: ../dev/nim/nim-source/lib/system/ctypes.nim
CC: ../dev/nim/nim-source/lib/std/sysatomics.nim
CC: ../dev/nim/nim-source/lib/system/ansi_c.nim
CC: ../dev/nim/nim-source/lib/system/memory.nim
CC: ../dev/nim/nim-source/lib/std/private/syslocks.nim
CC: ../dev/nim/nim-source/lib/std/private/threadtypes.nim
CC: ../dev/nim/nim-source/lib/std/private/digitsutils.nim
CC: ../dev/nim/nim-source/lib/std/private/miscdollars.nim
CC: ../dev/nim/nim-source/lib/std/assertions.nim
CC: ../dev/nim/nim-source/lib/system/iterators.nim
CC: ../dev/nim/nim-source/lib/system/coro_detection.nim
CC: ../dev/nim/nim-source/lib/std/private/dragonbox.nim
CC: ../dev/nim/nim-source/lib/std/private/schubfach.nim
CC: ../dev/nim/nim-source/lib/std/formatfloat.nim
CC: ../dev/nim/nim-source/lib/std/objectdollar.nim
CC: ../dev/nim/nim-source/lib/system/dollars.nim
CC: ../dev/nim/nim-source/lib/std/typedthreads.nim
CC: ../dev/nim/nim-source/lib/system/stacktraces.nim
CC: ../dev/nim/nim-source/lib/std/private/bitops_utils.nim
CC: ../dev/nim/nim-source/lib/system/countbits_impl.nim
CC: ../dev/nim/nim-source/lib/system/repr_v2.nim
CC: ../dev/nim/nim-source/lib/std/widestrs.nim
CC: ../dev/nim/nim-source/lib/std/syncio.nim
CC: ../dev/nim/nim-source/lib/system.nim
CC: test.nim
/Users/scarter/.cache/nim/test_d/@mtest.nim.cpp:338:19: error: assigning to 'TNimTypeV2 *' from incompatible type 'TNimTypeV2'; take the address with &
                (*T2_).m_type = (NTIv2__CAcjV9bDJGOM79bve11d5T9aA_);
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                &
1 error generated.
Error: execution of an external compiler program 'clang++ -c -std=gnu++17 -funsigned-char  -pthread   -I/Users/scarter/dev/nim/nim-source/lib -I/Users/scarter/temp -o /Users/scarter/.cache/nim/test_d/@mtest.nim.cpp.o /Users/scarter/.cache/nim/test_d/@mtest.nim.cpp' failed with exit code: 1

bbbscarter avatar Oct 13 '23 16:10 bbbscarter