Closed Laeeth closed 6 years ago
Which ldc version do you use? (Output of ldc2 -version
).
oh - hadn't thought system used beta. sorry for not noticing. I can try with the stable before that if helpful. LDC - the LLVM D compiler (0.15.2-beta2): based on DMD v2.066.1 and LLVM 3.6.1 Default target: x86_64-unknown-linux-gnu Host CPU: core-avx2 http://dlang.org - http://wiki.dlang.org/LDC Registered Targets: x86 - 32-bit X86: Pentium-Pro and above x86-64 - 64-bit X86: EM64T and AMD64 On Sun, 2015-08-16 at 07:36 -0700, Kai Nacke wrote:
Which ldc version do you use? (Output of ldc2 -version). — Reply to this email directly or view it on GitHub.
Confirmed. Happens with version from master, too.
I am trying to check this with ldc2 0.16.0-alpha4 but I get a compile error:
no property `chunkBy` for type `const(BlogPost[])`
You will need to copy and paste chunkBy from Phobos since it isn't yet in the library for LDC, I think. That should have been included in my commit (along with version(LDC) which calls that code rather than Phobos if dmd is not used).
Using ldc alpha 3 and git head for mood. I think it's alpha 3 and misreporting its version as 0.15.1, but I could be wrong.
Fast-forward
LICENSE | 23 +++
source/mood/api/implementation.d | 6 +-
source/mood/util/compat.d | 364 +++++++++++++++++++++++++++++++++++++++
views/blocks/aside.dt | 2 +-
4 files changed, 391 insertions(+), 4 deletions(-)
create mode 100644 LICENSE
create mode 100644 source/mood/util/compat.d
[laeeth@engine mood]$ dub build --compiler=ldc
Performing "debug" build using ldc for x86_64.
vibe-d 0.7.24: target for configuration "libevent" is up to date.
mood 1.0.0+commit.2.g905fc78: building configuration "application"...
Compiling diet template 'pages/new_post.dt'...
Compiling diet template 'pages/index.dt'...
Compiling diet template 'pages/single_post.dt'...
0 ldc 0x0000000001641b82 llvm::sys::PrintStackTrace(_IOFILE) + 50
1 ldc 0x00000000016415b4
2 libpthread.so.0 0x00007f14da590d60
3 ldc 0x0000000000789a4f
4 ldc 0x000000000078b093 IrAggr::addFieldInitializers(llvm::SmallVectorImpl
upgraded to ldc alpha 4. master of this link https://github.com/dprop-developers/mood.git had to hack the code a bit as LDC stiill doesn't have chunkyby but it does now have split function that conflicts with the compatibility code.
I also put in the align(16) for atomicStore and used vibe master as release notes suggest. not sure if I did it right.
still compiler crash:
[laeeth@engine mood]$ dub build --compiler=ldc2
Package vibe-d can be upgraded from ~master to 0.7.24.
Use "dub upgrade" to perform those changes.
WARNING: A deprecated branch based version specification is used for the dependency vibe-d. Please use numbered versions instead. Also note that you can still use the dub.selections.json file to override a certain dependency to use a branch instead.
Performing "debug" build using ldc2 for x86_64.
vibe-d ~master: target for configuration "libevent" is up to date.
mood 1.0.0+commit.3.g9f84d46: building configuration "application"...
Compiling diet template 'pages/new_post.dt'...
Compiling diet template 'pages/index.dt'...
Compiling diet template 'pages/single_post.dt'...
0 ldc2 0x00000000012716e2 llvm::sys::PrintStackTrace(_IOFILE) + 34
1 ldc2 0x000000000126f793
2 libpthread.so.0 0x00007f92a117fd60
3 ldc2 0x0000000000728c3f
4 ldc2 0x00000000007296ff IrAggr::addFieldInitializers(llvm::SmallVectorImpl
After the library update I get the error again.
This is somewhat complicated to reduce. My current command line is:
ldc2 -c -d-version=Have_vibe_d -Isource/ -IC:\Users\Kai\AppData\Roaming\dub\packages\vibe-d-0.7.24\source source/mood/api/implementation.d source/mood/storage/generic_cache.d
The problem is related to initialization of Cache
. The initializer has no type(!) and causes the error.
Sorry for my ignorance, but what does 'the initializer has no type' mean? I see the below: shared immutable(CacheData!TEntry)* data = new CacheData!TEntry;
Laeeth. On Sun, 2015-09-20 at 12:44 -0700, Kai Nacke wrote:
This is somewhat complicated to reduce. My current command line is: ldc2 -c -d-version=Have_vibe_d -Isource/ -IC:\Users\Kai\AppData\Roaming\dub\packages\vibe-d-0.7.24\source source/mood/api/implementation.d source/mood/storage/generic_cache.d The problem is related to initialization of Cache. The initializer has no type(!) and causes the error. — Reply to this email directly or view it on GitHub.
It's rather certainly a frontend bug, where it either does not run semantic analysis on the variable or does not fully resolve the type. It's not expected to occur in normal operation, and as such the error message does not make much sense.
Thanks for the colour.
Btw the code compiled with dmd often crashes, although dicebot cannot replicate. My guess is something to do with the atomic operations on the cache.
Do you properly align the data used with atomic operations?
It's his code, not mine. (I started writing my own fork to do things a bit more simply, as I don't really need the sophistication/efficiency, and it's pushing at boundaries of my knowledge at this stage - my last low level work was Z80 embedded). But I tried putting an align(16) before the relevant struct and it didn't seem to help..
Should be fixed by #1891.
Closing this as part of housekeeping, looks very much like a dead end.
Hi.
I am afraid I haven't time to minimize this or to check it compiles under dmd 2.066. It does compile under GDC 5.2.0 however. I am using 64 bit arch linux and: DUB version 0.9.24-rc.1, built on Jun 28 2015
Project is dicebot's refinement of the vibe.d blog framework. I just modified it to compile with ldc - a few changes to imports, and stuck in the source from phobos for lineSplitter and chunkBy. Possibly I have done something stupid, but I suppose it shouldn't be a compiler crash (and it does compile under gdc).
This commit: https://github.com/Laeeth/mood/commit/6d4a0cf2cd6bd9ed75cc84465ed22ac35fec2502
Error: [laeeth@engine mood]$ dub build --compiler=ldc Target vibe-d 0.7.24 is up to date. Use --force to rebuild. Building mood 1.0.0+commit.7.g6d4a0cf configuration "application", build type debug. Running ldc... Compiling diet template 'pages/new_post.dt'... Compiling diet template 'pages/index.dt'... Compiling diet template 'pages/single_post.dt'... 0 ldc 0x00000000012335f2 llvm::sys::PrintStackTrace(_IOFILE) + 34 1 ldc 0x00000000012316a3 2 libpthread.so.0 0x00007f55099a0d60 3 ldc 0x00000000006ea97f 4 ldc 0x00000000006eb6e3 IrAggr::addFieldInitializers(llvm::SmallVectorImpl&, std::map<VarDeclaration, llvm::Constant, std::less<VarDeclaration>, std::allocator<std::pair<VarDeclaration const, llvm::Constant> > > const&, AggregateDeclaration, unsigned int&, bool) + 707
5 ldc 0x00000000006ebc74 IrAggr::createInitializerConstant(std::map<VarDeclaration, llvm::Constant, std::less<VarDeclaration>, std::allocator<std::pair<VarDeclaration const, llvm::Constant> > > const&, llvm::StructType_) + 164
6 ldc 0x00000000006ec0c7 IrAggr::getDefaultInit() + 119
7 ldc 0x0000000000732ba8
8 ldc 0x0000000000732f33
9 ldc 0x0000000000732b83
10 ldc 0x000000000073373e Declarationcodegen(Dsymbol) + 46
11 ldc 0x00000000006c5b19 codegenModule(IRState, Module, bool) + 137
12 ldc 0x000000000059b631 ldc::CodeGenerator::emit(Module) + 177
13 ldc 0x000000000057690b main + 10395
14 libc.so.6 0x00007f5508b72610 __libc_start_main + 240
15 ldc 0x0000000000594365
FAIL .dub/build/application-debug-linux.posix-x86_64-ldc_0-C05D3549AE4AB8B05B0DC5D87C3AB16A/ mood executable
Error executing command build:
ldc failed with exit code -11.