[dmd-internals] CTFE still broken

Jonathan M Davis jmdavisProg at gmx.com
Sat Apr 30 00:38:59 PDT 2011


From the looks of it, all of Don's pull requests for D2 have been merged in 
now, so I thought I should point out that CTFE is still broken. Building the 
unit tests on Linux currently works for what's in master, but I have changes 
for std.datetime ready to merge in ( https://github.com/D-Programming-
Language/phobos/pull/31 ), and while the code compiles just fine with dmd 
2.052, if I build with the unit tests on Linux with the version of dmd in git, 
the build fails with this CTFE-related error:

=============================
make --no-print-directory -f posix.mak OS=linux MODEL=32 BUILD=debug unittest
dmd -I../druntime/import  -w -d -m32 -g -debug -lib -
ofgenerated/linux/debug/32/libphobos2.a ../druntime/lib/libdruntime.a crc32.d 
std/algorithm.d std/array.d std/base64.d std/bigint.d std/bitmanip.d 
std/compiler.d std/complex.d std/concurrency.d std/container.d std/contracts.d 
std/conv.d std/cpuid.d std/cstream.d std/ctype.d std/date.d std/datetime.d 
std/datebase.d std/dateparse.d std/demangle.d std/encoding.d std/exception.d 
std/file.d std/format.d std/functional.d std/getopt.d std/gregorian.d 
std/intrinsic.d std/json.d std/loader.d std/math.d std/mathspecial.d std/md5.d 
std/metastrings.d std/mmfile.d std/numeric.d std/outbuffer.d std/parallelism.d 
std/path.d std/perf.d std/process.d std/random.d std/range.d std/regex.d 
std/regexp.d std/signals.d std/socket.d std/socketstream.d std/stdint.d 
std/stdio.d std/stdiobase.d std/stream.d std/string.d std/syserror.d 
std/system.d std/traits.d std/typecons.d std/typetuple.d std/uni.d std/uri.d 
std/utf.d std/variant.d std/xml.d std/zip.d std/zlib.d std/c/stdarg.d 
std/c/stdio.d etc/c/zlib.d std/internal/math/biguintcore.d 
std/internal/math/biguintnoasm.d std/internal/math/biguintx86.d 
std/internal/math/gammafunction.d std/internal/math/errorfunction.d 
etc/c/curl.d std/c/linux/linux.d std/c/linux/socket.d std/net/isemail.d 
generated/linux/debug/32/etc/c/zlib/adler32.o 
generated/linux/debug/32/etc/c/zlib/compress.o 
generated/linux/debug/32/etc/c/zlib/crc32.o 
generated/linux/debug/32/etc/c/zlib/deflate.o 
generated/linux/debug/32/etc/c/zlib/gzclose.o 
generated/linux/debug/32/etc/c/zlib/gzlib.o 
generated/linux/debug/32/etc/c/zlib/gzread.o 
generated/linux/debug/32/etc/c/zlib/gzwrite.o 
generated/linux/debug/32/etc/c/zlib/infback.o 
generated/linux/debug/32/etc/c/zlib/inffast.o 
generated/linux/debug/32/etc/c/zlib/inflate.o 
generated/linux/debug/32/etc/c/zlib/inftrees.o 
generated/linux/debug/32/etc/c/zlib/trees.o 
generated/linux/debug/32/etc/c/zlib/uncompr.o 
generated/linux/debug/32/etc/c/zlib/zutil.o
std.contracts has been scheduled for deprecation. Please use std.exception 
instead.
std.date and std.dateparse have been scheduled for deprecation. Please use 
std.datetime instead.
std.gregorian has been scheduled for deprecation. Please use std.datetime 
instead.
std.perf has been scheduled for deprecation. Please use std.datetime instead.
Testing generated/linux/debug/32/unittest/crc32
Testing generated/linux/debug/32/unittest/std/algorithm
Error: CTFE internal error: illegal stack value this

dmd: interpret.c:4080: void VarDeclaration::createStackValue(Expression*): 
Assertion `isStackValueValid(newval)' failed.
make[1]: *** [generated/linux/debug/32/unittest/std/algorithm] Aborted
make: *** [unittest] Error 2
=============================

So, clearly, CTFE is still broken, and more work needs to be done to fix 
regressions with it.

- Jonathan M Davis


More information about the dmd-internals mailing list