Thread overview
Branch merge-2.064 is at DMD 2.064-RC1 level
Nov 04, 2013
Kai Nacke
Nov 04, 2013
Temtaime
Nov 04, 2013
Temtaime
Nov 04, 2013
Kai Nacke
Nov 12, 2013
bearophile
Nov 12, 2013
Kai Nacke
Nov 18, 2013
bearophile
Nov 19, 2013
Kai Nacke
Compiler Runtime Error
Nov 21, 2013
tae hoo
Nov 22, 2013
Kai Nacke
November 04, 2013
Hi,

for the adventurous souls: branch merge-2.064 in the ldc repository is at the RC1 level of DMD 2.064!
There are still some unit test failures, but I am sure that there more bugs lurking in the background.

Please try out! Every bug report/feedback is welcome!

BTW: If you have all prerequisites installed (LLVM, cmake, libconfig) then this is as easy as:

git clone --recursive https://github.com/ldc-developers/ldc.git
cd ldc
git checkout merge-2.064
cd runtime/druntime
git checkout ldc-merge-2.064
cd ../phobos
git checkout ldc-merge-2.064
cd ../../..
mkdir build-ldc
cd build-ldc
cmake ../ldc
make

Regards
Kai

November 04, 2013
Hi, Kai.

Please, drop libconfig from LLVM.
LDC doesn't have too big configuration part. One can hardcode config paths to ldc.
November 04, 2013
*from LDC, of course
November 04, 2013
On Monday, 4 November 2013 at 13:39:29 UTC, Temtaime wrote:
>
> Please, drop libconfig from LLVM.

Hi Temtaime!

I know that libconfig is an unwanted dependency. I had trouble with the library on
different platforms, too.

But before dropping libconfig we need a concept for a cross compiling tool chain which can be realized without a complex config file. This could be a real use case for libconfig...

Regards,
Kai
November 12, 2013
Do you know if ldc2 has a command line switch to strip the executable (like the -s in GCC)?

Bye,
bearophile
November 12, 2013
On Tuesday, 12 November 2013 at 11:08:46 UTC, bearophile wrote:
> Do you know if ldc2 has a command line switch to strip the executable (like the -s in GCC)?
>
> Bye,
> bearophile

Hi bearophile,

I am not sure what is stripped by -s option. With ldc, you can try -strip-debug, -strip-externals or pass -s to the linker.

Regards,
Kai
November 18, 2013
If I compile this wrong program:

import core.stdc.stdio: printf;
void main() {
    double d = 1.5;
    printf("%d", d);
}


Using:

ldc2 -check-printf-calls test.d

I see no errors, despite that switch is supposed to "Validate printf call format strings against arguments". Is that feature not yet implemented?

Bye,
bearophile
November 19, 2013
Hi bearophile!

On Monday, 18 November 2013 at 17:50:05 UTC, bearophile wrote:
> I see no errors, despite that switch is supposed to "Validate printf call format strings against arguments". Is that feature not yet implemented?

The feature is implemented, but I see no warning, too. Have to check this.

Regards,
Kai
November 21, 2013
Branch merge-2.064 is at DMD 2.064-RC1 level

ldc2_kai:
   C:\LDC2\ldc_kai\buld\bin\Debug\ldc2.exe
   --output-o
   -c
   -IC:/LDC2/ldc_kai/ldc/runtime/druntime/src
   -IC:/LDC2/ldc_kai/ldc/runtime/druntime/src/gc
   C:/LDC2/ldc_kai/ldc/runtime/phobos/std/algorithm.d
   -ofC:/LDC2/ldc_kai/build/runtime/std/algorithm.obj
   -w
   -d
   -O3
   -release
   -IC:/LDC2/ldc_kai/ldc/runtime/phobos

0x000007FAD4B4309D (0x000000AF1D49C910 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), ?_Orphan_all@_Container_base12@std@@QEAAXXZ() + 0x5D bytes(s)
0x000007F71A030613 (0x000000AF1D49C910 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), std::_Vector_alloc<0,std::_Vec_base_types<IrFuncTyArg * __ptr6
4,std::allocator<IrFuncTyArg * __ptr64> > >::_Free_proxy() + 0x33 bytes(s), c:\p
rogram files (x86)\microsoft visual studio 11.0\vc\include\vector, line 639
0x000007F71A02F6D8 (0x000000AF1D49C910 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), std::_Vector_alloc<0,std::_Vec_base_types<IrFuncTyArg * __ptr6
4,std::allocator<IrFuncTyArg * __ptr64> > >::~_Vector_alloc<0,std::_Vec_base_typ
es<IrFuncTyArg * __ptr64,std::allocator<IrFuncTyArg * __ptr64> > >() + 0x28 byte
s(s), c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector, lin
e 614
0x000007F71A02F752 (0x000000AF1D49C910 0x000000AF1D49C910 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), std::vector<IrFuncTyArg * __ptr64,std::allocator<IrFuncTyArg *
 __ptr64> >::~vector<IrFuncTyArg * __ptr64,std::allocator<IrFuncTyArg * __ptr64>
 >() + 0x32 bytes(s), c:\program files (x86)\microsoft visual studio 11.0\vc\inc
lude\vector, line 901 + 0xA byte(s)
0x000007F71A1D1462 (0x000000AF29967958 0x000000AF1D49C9D0 0x0000000000000000 0x0
00000AF1D49CF70), IrFuncTy::operator=() + 0x82 bytes(s), c:\ldc2\ldc_kai\ldc\ir\
irfuncty.h, line 144
0x000007F71A1C43A9 (0x000000AF2A3C0670 0x000000AF29967958 0x0000000000000000 0x0
00000AF1D5DF360), DtoFunctionType() + 0xDD9 bytes(s), c:\ldc2\ldc_kai\ldc\gen\fu
nctions.cpp, line 260
0x000007F71A22144E (0x000000AF299678E0 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), IrTypeDelegate::get() + 0x12E bytes(s), c:\ldc2\ldc_kai\ldc\ir
\irtypefunction.cpp, line 59 + 0x32 byte(s)
0x000007F71A08873C (0x000000AF299678E0 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), DtoType() + 0x55C bytes(s), c:\ldc2\ldc_kai\ldc\gen\tollvm.cpp
, line 187 + 0xD byte(s)
0x000007F71A2485CD (0x000000AF39F1E590 0x000000AF299678E0 0x0000000000000000 0x0
00000AF1D49DA40), IrFuncTyArg::IrFuncTyArg() + 0x7D bytes(s), c:\ldc2\ldc_kai\ld
c\ir\irfuncty.cpp, line 26 + 0x7D byte(s)
0x000007F71A1C4319 (0x000000AF2A3C0B70 0x000000AF2A3C0C18 0x0000000000000000 0x0
000000000000000), DtoFunctionType() + 0xD49 bytes(s), c:\ldc2\ldc_kai\ldc\gen\fu
nctions.cpp, line 252 + 0x70 byte(s)
0x000007F71A221232 (0x000000AF2A3C0B70 0x0000000000000000 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), IrTypeFunction::get() + 0xB2 bytes(s), c:\ldc2\ldc_kai\ldc\ir\
irtypefunction.cpp, line 34 + 0x2A byte(s)
0x000007F71A0886F2 (0x000000AF2A3C0B70 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), DtoType() + 0x512 bytes(s), c:\ldc2\ldc_kai\ldc\gen\tollvm.cpp
, line 181 + 0xF byte(s)
0x000007F71A220790 (0x000000AF296DED70 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), IrTypePointer::get() + 0xD0 bytes(s), c:\ldc2\ldc_kai\ldc\ir\i
rtype.cpp, line 169 + 0x1B byte(s)
0x000007F71A08834F (0x000000AF296DED70 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), DtoType() + 0x16F bytes(s), c:\ldc2\ldc_kai\ldc\gen\tollvm.cpp
, line 136 + 0xD byte(s)
0x000007F71A220A36 (0x000000AF296DF070 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), IrTypeSArray::sarray2llvm() + 0x96 bytes(s), c:\ldc2\ldc_kai\l
dc\ir\irtype.cpp, line 207 + 0x1B byte(s)
0x000007F71A22096D (0x000000AF3A1A1370 0x000000AF296DF070 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), IrTypeSArray::IrTypeSArray() + 0x2D bytes(s), c:\ldc2\ldc_kai\
ldc\ir\irtype.cpp, line 188 + 0x2D byte(s)
0x000007F71A2208FD (0x000000AF296DF070 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), IrTypeSArray::get() + 0x4D bytes(s), c:\ldc2\ldc_kai\ldc\ir\ir
type.cpp, line 195 + 0x26 byte(s)
0x000007F71A0883D7 (0x000000AF296DF070 0x000000AF2A25E5A0 0x0000000000000000 0x0
00007FAD4950000), DtoType() + 0x1F7 bytes(s), c:\ldc2\ldc_kai\ldc\gen\tollvm.cpp
, line 147 + 0xD byte(s)
0x000007F71A0954B9 (0x000000AF2A25E5A0 0x000007F71BAAE4F0 0x000000AF3A1A1790 0x0
00007FAD4950000), DtoVarDeclaration() + 0x5A9 bytes(s), c:\ldc2\ldc_kai\ldc\gen\
llvmhelpers.cpp, line 1176 + 0xA byte(s)
0x000007F71A0957A5 (0x000000AF2A25E5A0 0x000000AF36519000 0x000000AF3A1A1790 0x0
00007FAD4950000), DtoDeclarationExp() + 0x115 bytes(s), c:\ldc2\ldc_kai\ldc\gen\
llvmhelpers.cpp, line 1226
0x000007F71A19DAF3 (0x000000AF2A304D10 0x000000AF1D49EE30 0x000000AF1D49E548 0x0
00007FAD4950000), DeclarationExp::toElem() + 0x93 bytes(s), c:\ldc2\ldc_kai\ldc\
gen\toir.cpp, line 162 + 0xE byte(s)
0x000007F71A196FBC (0x000000AF2A304D10 0x000000AF1D49EE30 0x0000000000000000 0x0
00007FAD4950000), Expression::toElemDtor() + 0x3DC bytes(s), c:\ldc2\ldc_kai\ldc
\gen\toir.cpp, line 151 + 0x21 byte(s)
0x000007F71A22A1D2 (0x000000AF2A38B110 0x000000AF1D49EE30 0x0000000000000000 0x0
00007FAD4950000), ExpStatement::toIR() + 0x102 bytes(s), c:\ldc2\ldc_kai\ldc\gen
\statements.cpp, line 198 + 0x19 byte(s)
0x000007F71A22A3C7 (0x000000AF2A38F790 0x000000AF1D49EE30 0x0000000000000000 0x0
000000000000000), CompoundStatement::toIR() + 0xB7 bytes(s), c:\ldc2\ldc_kai\ldc
\gen\statements.cpp, line 54
0x000007F71A22A3C7 (0x000000AF2AA0E7B0 0x000000AF1D49EE30 0x0000000000000001 0x0
00000AF1D49E9A8), CompoundStatement::toIR() + 0xB7 bytes(s), c:\ldc2\ldc_kai\ldc
\gen\statements.cpp, line 54
0x000007F71A1C6F70 (0x000000AF2A174530 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), DtoDefineFunction() + 0x11C0 bytes(s), c:\ldc2\ldc_kai\ldc\gen
\functions.cpp, line 1154
0x000007F71A062A75 (0x000000AF2A174530 0x000000AF1D49EE30 0xCCCCCCCCCCCCCCCC 0xC
CCCCCCCCCCCCCCC), FuncDeclaration::codegen() + 0x45 bytes(s), c:\ldc2\ldc_kai\ld
c\gen\declarations.cpp, line 305
0x000007F71A063373 (0x000000AF2A2D8400 0x000000AF1D49EE30 0x000000AF1D5BE940 0x0
00007FAD4950000), TemplateInstance::codegen() + 0x103 bytes(s), c:\ldc2\ldc_kai\
ldc\gen\declarations.cpp, line 322
0x000007F719F8752F (0x000000AF1D5F3EB0 0x000000AF1D5BE940 0x0000000000000000 0x0
000000000000000), Module::genLLVMModule() + 0x49F bytes(s), c:\ldc2\ldc_kai\ldc\
gen\module.cpp, line 561
0x000007F719F42A42 (0x000007F70000000C 0x000000AF1D5A5900 0x0000000000000000 0x0
000000000000000), main() + 0x16E2 bytes(s), c:\ldc2\ldc_kai\ldc\driver\main.cpp,
 line 1101 + 0x15 byte(s)
0x000007F71B472EAD (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0
000000000000000), __tmainCRTStartup() + 0x19D bytes(s), f:\dd\vctools\crt_bld\se
lf_64_amd64\crt\src\crtexe.c, line 536 + 0x19 byte(s)
0x000007F71B472FDE (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0
000000000000000), mainCRTStartup() + 0xE bytes(s), f:\dd\vctools\crt_bld\self_64
_amd64\crt\src\crtexe.c, line 377
0x000007FAE56F1832 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0
000000000000000), BaseThreadInitThunk() + 0x1A bytes(s)
0x000007FAE588D609 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0
000000000000000), RtlUserThreadStart() + 0x21 bytes(s)


Is it fixed?
November 22, 2013
Hi tae!

On Thursday, 21 November 2013 at 04:52:42 UTC, tae hoo wrote:
> Branch merge-2.064 is at DMD 2.064-RC1 level
> Is it fixed?

No. This is one of the strange MSVC problems I do not understand. One of the problems here is that the runtime thinks that some pointers in the vector are not heap allocated. But that is not true. This is an issue since I started to work on a Win64 version.

Regards,
Kai