digitalmars.D.bugs - DMD 0.122: Cross-module multiply nested template instantiation with
- Burton Radons (106/106) May 10 2005 This requires two modules.
- Walter (1/1) May 18 2005 I couldn't reproduce the fault, but I put it in the test suite anyway.
- Thomas Kuehne (30/31) May 19 2005 -----BEGIN PGP SIGNED MESSAGE-----
- Walter (3/4) May 19 2005 Doesn't happen for me, either on windows or linux.
- Thomas Kuehne (16/20) May 19 2005 -----BEGIN PGP SIGNED MESSAGE-----
This requires two modules.
[a.d]
struct TC(T)
{
void method()
{
void inline_function()
{
}
}
}
template TB(T)
{
alias TC!(T) tc_instance;
}
struct TA(T)
{
mixin TB!(T);
}
[b.d]
import a;
void main()
{
TA!(int) variable;
}
Attempting to compile this causes the compiler to do an access
violation; it should be acceptable code. The following are variants
known to cause the problem to disappear. First variant, to remove the
inline function:
[a.d]
struct TC(T)
{
void method()
{
-- void inline_function()
-- {
-- }
}
}
template TB(T)
{
alias TC!(T) tc_instance;
}
struct TA(T)
{
mixin TB!(T);
}
[b.d]
import a;
void main()
{
TA!(int) variable;
}
Second variant, to remove an abstraction stage:
[a.d]
struct TC(T)
{
void method()
{
void inline_function()
{
}
}
}
-- template TB(T)
-- {
-- alias TC!(T) tc_instance;
-- }
struct TA(T)
{
-- mixin TB!(T);
++ alias TC!(T) tc_instance;
}
[b.d]
import a;
void main()
{
TA!(int) variable;
}
Third variant, instantiate the template outside of the "main" function:
[a.d]
struct TC(T)
{
void method()
{
void inline_function()
{
}
}
}
template TB(T)
{
alias TC!(T) tc_instance;
}
struct TA(T)
{
mixin TB!(T);
}
[b.d]
import a;
++ alias TA!(int) TA_int;
void main()
{
-- TA!(int) variable;
++ TA_int variable;
}
May 10 2005
I couldn't reproduce the fault, but I put it in the test suite anyway.
May 18 2005
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Walter schrieb am Wed, 18 May 2005 22:52:41 -0700:I couldn't reproduce the fault, but I put it in the test suite anyway.(gdb) run -v a.d b.d Starting program: dmd-0.123 -v a.d b.d parse a parse b semantic a semantic b semantic2 a semantic2 b semantic3 a semantic3 b code a generating code for function 'method' Program received signal SIGSEGV, Segmentation fault. 0x080a9d16 in FuncDeclaration::toObjFile() () (gdb) bt Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFCjFR+3w+/yD4P9tIRAkN6AKCvNyVgjHJdpne+ldeqzCueVM2uLwCeKLP0 37AVAbol2yLhZm4Ssim9GTI= =r3O2 -----END PGP SIGNATURE-----
May 19 2005
"Thomas Kuehne" <thomas-dloop kuehne.this-is.spam.cn> wrote in message news:d8ol3u.43o.thomas-dloop laermschleuder.kuehne.cn...Program received signal SIGSEGV, Segmentation fault.Doesn't happen for me, either on windows or linux.
May 19 2005
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Walter schrieb am Thu, 19 May 2005 14:46:00 -0700:"Thomas Kuehne" <thomas-dloop kuehne.this-is.spam.cn> wrote in message news:d8ol3u.43o.thomas-dloop laermschleuder.kuehne.cn...The files are http://dstress.kuehne.cn/run/b/bug_20050510_A2.d http://dstress.kuehne.cn/compile/b/bug_20050510_A1.d no bug: dmd run/b/bug_20050510_A2.d compile/b/bug_20050510_A1.d bug: dmd compile/b/bug_20050510_A1.d run/b/bug_20050510_A2.d Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFCjS6v3w+/yD4P9tIRAmIrAJ9qgxh72kss+rOMpjjVdorC0AgiBgCeML3L Akf2qcyY9dE5wEHstM+mx7w= =tNEF -----END PGP SIGNATURE-----Program received signal SIGSEGV, Segmentation fault.Doesn't happen for me, either on windows or linux.
May 19 2005








Thomas Kuehne <thomas-dloop kuehne.this-is.spam.cn>