diff --git a/src/build.d b/src/build.d index 151e10c737c0..c7a9eb9357f0 100755 --- a/src/build.d +++ b/src/build.d @@ -235,36 +235,6 @@ DFLAGS=-I%@P%/../../../../../druntime/import -I%@P%/../../../../../phobos -L-L%@ return new DependencyRef(dependency); }); -/// Returns: the dependency that builds and executes the optabgen utility -alias opTabGen = memoize!(function() { - auto opTabFiles = ["tytab.d"]; - auto opTabFilesBin = opTabFiles.map!(e => env["G"].buildPath(e)).array; - auto opTabBin = env["G"].buildPath("optabgen").exeName; - auto opTabSourceFile = env["C"].buildPath("optabgen.d"); - - auto commandFunction = (){ - auto args = [env["HOST_DMD_RUN"], opTabSourceFile, "-of" ~ opTabBin]; - args ~= flags["DFLAGS"]; - - writefln("(DC) OPTABGEN %s", opTabSourceFile.baseName); - args.runCanThrow; - - writefln("(RUN) OPTABBIN %-(%s, %)", opTabFiles); - [opTabBin].runCanThrow; - - // move the generated files to the generated folder - opTabFiles.map!(a => srcDir.buildPath(a)).zip(opTabFilesBin).each!(a => a.expand.rename); - }; // defined separately to support older D compilers - Dependency dependency = { - name: "optabgen", - description: "Generate source files for the backend", - targets: opTabFilesBin, - sources: [opTabSourceFile], - commandFunction: commandFunction, - }; - return new DependencyRef(dependency); -}); - /// Returns: the dependencies that build the D backend alias dBackend = memoize!(function () { Dependency dependency = { @@ -272,7 +242,6 @@ alias dBackend = memoize!(function () { target: env["G"].buildPath("dbackend").objName, sources: sources.backend, msg: "(DC) D_BACK_OBJS %-(%s, %)".format(sources.backend.map!(e => e.baseName).array), - deps: [opTabGen], command: [ env["HOST_DMD_RUN"], "-c", @@ -291,7 +260,7 @@ alias backend = memoize!(function() { msg: "(LIB) %s".format("BACKEND".libName), sources: [ env["G"].buildPath("dbackend").objName ], target: env["G"].buildPath("backend").libName, - deps: [opTabGen, dBackend], + deps: [dBackend], command: [env["HOST_DMD_RUN"], env["MODEL_FLAG"], "-lib", "-of$@", "$<"] }; return new DependencyRef(dependency); @@ -758,7 +727,7 @@ auto sourceFiles() backend: dirEntries(env["C"], "*.d", SpanMode.shallow) .map!(e => e.name) - .filter!(e => !e.baseName.among("dt.d", "obj.d", "optabgen.d")) + .filter!(e => !e.baseName.among("dt.d", "obj.d")) .array, backendHeaders: [ // can't be built with -betterC diff --git a/src/dmd/backend/optabgen.d b/src/dmd/backend/optabgen.d deleted file mode 100644 index a73444396e0e..000000000000 --- a/src/dmd/backend/optabgen.d +++ /dev/null @@ -1,234 +0,0 @@ -/** - * Compiler implementation of the - * $(LINK2 http://www.dlang.org, D programming language). - * - * Copyright: Copyright (C) 1985-1998 by Symantec - * Copyright (C) 2000-2019 by The D Language Foundation, All Rights Reserved - * Authors: $(LINK2 http://www.digitalmars.com, Walter Bright) - * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/src/dmd/backend/optabgen.d, backend/optabgen.d) - */ - -module optabgen; - -/* Generate op-code tables - * Creates optab.d,tytab.d,debtab.d - */ - -import core.stdc.stdio; -import core.stdc.stdlib; - -import dmd.backend.cc; -import dmd.backend.cdef; -import dmd.backend.oper; -import dmd.backend.ty; - -nothrow: - -FILE *fdeb; - -int main() -{ - printf("OPTABGEN... generating files\n"); - dotytab(); - return 0; -} - - -/******************************************************** - */ - -void dotytab() -{ - struct TypeTab - { - string str; /* name of type */ - tym_t ty; /* TYxxxx */ - tym_t unsty; /* conversion to unsigned type */ - tym_t relty; /* type for relaxed type checking */ - int size; - int debtyp; /* Codeview 1 type in debugger record */ - int debtyp4; /* Codeview 4 type in debugger record */ - } - static TypeTab[] typetab = - [ -/* Note that chars are signed, here */ -{"bool", TYbool, TYbool, TYchar, 1, 0x80, 0x30}, -{"char", TYchar, TYuchar, TYchar, 1, 0x80, 0x70}, -{"signed char", TYschar, TYuchar, TYchar, 1, 0x80, 0x10}, -{"unsigned char",TYuchar, TYuchar, TYchar, 1, 0x84, 0x20}, -{"char16_t", TYchar16, TYchar16, TYint, 2, 0x85, 0x21}, -{"short", TYshort, TYushort, TYint, SHORTSIZE, 0x81,0x11}, -{"wchar_t", TYwchar_t, TYwchar_t, TYint, SHORTSIZE, 0x85,0x71}, -{"unsigned short",TYushort, TYushort, TYint, SHORTSIZE, 0x85,0x21}, - -// These values are adjusted for 32 bit ints in cv_init() and util_set32() -{"enum", TYenum, TYuint, TYint, -1, 0x81,0x72}, -{"int", TYint, TYuint, TYint, 2, 0x81,0x72}, -{"unsigned", TYuint, TYuint, TYint, 2, 0x85,0x73}, - -{"long", TYlong, TYulong, TYlong, LONGSIZE, 0x82,0x12}, -{"unsigned long",TYulong, TYulong, TYlong, LONGSIZE, 0x86,0x22}, -{"dchar", TYdchar, TYdchar, TYlong, 4, 0x86,0x22}, -{"long long", TYllong, TYullong, TYllong, LLONGSIZE, 0x82,0x13}, -{"uns long long",TYullong, TYullong, TYllong, LLONGSIZE, 0x86,0x23}, -{"cent", TYcent, TYucent, TYcent, 16, 0x82,0x603}, -{"ucent", TYucent, TYucent, TYcent, 16, 0x86,0x603}, -{"float", TYfloat, TYfloat, TYfloat, FLOATSIZE, 0x88,0x40}, -{"double", TYdouble, TYdouble, TYdouble, DOUBLESIZE,0x89,0x41}, -{"double alias", TYdouble_alias, TYdouble_alias, TYdouble_alias,8, 0x89,0x41}, -{"long double", TYldouble, TYldouble, TYldouble, -1, 0x89,0x42}, - -{"imaginary float", TYifloat, TYifloat, TYifloat, FLOATSIZE, 0x88,0x40}, -{"imaginary double", TYidouble, TYidouble, TYidouble, DOUBLESIZE,0x89,0x41}, -{"imaginary long double",TYildouble, TYildouble, TYildouble, -1,0x89,0x42}, - -{"complex float", TYcfloat, TYcfloat, TYcfloat, 2*FLOATSIZE, 0x88,0x50}, -{"complex double", TYcdouble, TYcdouble, TYcdouble, 2*DOUBLESIZE,0x89,0x51}, -{"complex long double", TYcldouble, TYcldouble, TYcldouble, -1,0x89,0x52}, - -{"float[4]", TYfloat4, TYfloat4, TYfloat4, 16, 0, 0}, -{"double[2]", TYdouble2, TYdouble2, TYdouble2, 16, 0, 0}, -{"signed char[16]", TYschar16, TYuchar16, TYschar16, 16, 0, 0}, -{"unsigned char[16]", TYuchar16, TYuchar16, TYuchar16, 16, 0, 0}, -{"short[8]", TYshort8, TYushort8, TYshort8, 16, 0, 0}, -{"unsigned short[8]", TYushort8, TYushort8, TYushort8, 16, 0, 0}, -{"long[4]", TYlong4, TYulong4, TYlong4, 16, 0, 0}, -{"unsigned long[4]", TYulong4, TYulong4, TYulong4, 16, 0, 0}, -{"long long[2]", TYllong2, TYullong2, TYllong2, 16, 0, 0}, -{"unsigned long long[2]", TYullong2, TYullong2, TYullong2, 16, 0, 0}, - -{"float[8]", TYfloat8, TYfloat8, TYfloat8, 32, 0, 0}, -{"double[4]", TYdouble4, TYdouble4, TYdouble4, 32, 0, 0}, -{"signed char[32]", TYschar32, TYuchar32, TYschar32, 32, 0, 0}, -{"unsigned char[32]", TYuchar32, TYuchar32, TYuchar32, 32, 0, 0}, -{"short[16]", TYshort16, TYushort16, TYshort16, 32, 0, 0}, -{"unsigned short[16]", TYushort16, TYushort16, TYushort16, 32, 0, 0}, -{"long[8]", TYlong8, TYulong8, TYlong8, 32, 0, 0}, -{"unsigned long[8]", TYulong8, TYulong8, TYulong8, 32, 0, 0}, -{"long long[4]", TYllong4, TYullong4, TYllong4, 32, 0, 0}, -{"unsigned long long[4]", TYullong4, TYullong4, TYullong4, 32, 0, 0}, - -{"float[16]", TYfloat16, TYfloat16, TYfloat16, 64, 0, 0}, -{"double[8]", TYdouble8, TYdouble8, TYdouble8, 64, 0, 0}, -{"signed char[64]", TYschar64, TYuchar64, TYschar64, 64, 0, 0}, -{"unsigned char[64]", TYuchar64, TYuchar64, TYuchar64, 64, 0, 0}, -{"short[32]", TYshort32, TYushort32, TYshort32, 64, 0, 0}, -{"unsigned short[32]", TYushort32, TYushort32, TYushort32, 64, 0, 0}, -{"long[16]", TYlong16, TYulong16, TYlong16, 64, 0, 0}, -{"unsigned long[16]", TYulong16, TYulong16, TYulong16, 64, 0, 0}, -{"long long[8]", TYllong8, TYullong8, TYllong8, 64, 0, 0}, -{"unsigned long long[8]", TYullong8, TYullong8, TYullong8, 64, 0, 0}, - -{"nullptr_t", TYnullptr, TYnullptr, TYptr, 2, 0x20, 0x100}, -{"*", TYnptr, TYnptr, TYnptr, 2, 0x20, 0x100}, -{"&", TYref, TYref, TYref, -1, 0, 0}, -{"void", TYvoid, TYvoid, TYvoid, -1, 0x85, 3}, -{"struct", TYstruct, TYstruct, TYstruct, -1, 0, 0}, -{"array", TYarray, TYarray, TYarray, -1, 0x78, 0}, -{"C func", TYnfunc, TYnfunc, TYnfunc, -1, 0x63, 0}, -{"Pascal func", TYnpfunc, TYnpfunc, TYnpfunc, -1, 0x74, 0}, -{"std func", TYnsfunc, TYnsfunc, TYnsfunc, -1, 0x63, 0}, -{"*", TYptr, TYptr, TYptr, 2, 0x20, 0x100}, -{"member func", TYmfunc, TYmfunc, TYmfunc, -1, 0x64, 0}, -{"D func", TYjfunc, TYjfunc, TYjfunc, -1, 0x74, 0}, -{"C func", TYhfunc, TYhfunc, TYhfunc, -1, 0, 0}, -{"__near &", TYnref, TYnref, TYnref, 2, 0, 0}, - -{"__ss *", TYsptr, TYsptr, TYsptr, 2, 0x20, 0x100}, -{"__cs *", TYcptr, TYcptr, TYcptr, 2, 0x20, 0x100}, -{"__far16 *", TYf16ptr, TYf16ptr, TYf16ptr, 4, 0x40, 0x200}, -{"__far *", TYfptr, TYfptr, TYfptr, 4, 0x40, 0x200}, -{"__huge *", TYhptr, TYhptr, TYhptr, 4, 0x40, 0x300}, -{"__handle *", TYvptr, TYvptr, TYvptr, 4, 0x40, 0x200}, -{"__immutable *", TYimmutPtr, TYimmutPtr,TYimmutPtr, 2, 0x20, 0x100}, -{"__shared *", TYsharePtr, TYsharePtr,TYsharePtr, 2, 0x20, 0x100}, -{"__fg *", TYfgPtr, TYfgPtr, TYfgPtr, 2, 0x20, 0x100}, -{"far C func", TYffunc, TYffunc, TYffunc, -1, 0x64, 0}, -{"far Pascal func", TYfpfunc, TYfpfunc, TYfpfunc, -1, 0x73, 0}, -{"far std func", TYfsfunc, TYfsfunc, TYfsfunc, -1, 0x64, 0}, -{"_far16 Pascal func", TYf16func, TYf16func, TYf16func, -1, 0x63, 0}, -{"sys func", TYnsysfunc, TYnsysfunc,TYnsysfunc, -1, 0x63, 0}, -{"far sys func", TYfsysfunc, TYfsysfunc,TYfsysfunc, -1, 0x64, 0}, -{"__far &", TYfref, TYfref, TYfref, 4, 0, 0}, - -{"interrupt func", TYifunc, TYifunc, TYifunc, -1, 0x64, 0}, -{"memptr", TYmemptr, TYmemptr, TYmemptr, -1, 0, 0}, -{"ident", TYident, TYident, TYident, -1, 0, 0}, -{"template", TYtemplate, TYtemplate, TYtemplate, -1, 0, 0}, -{"vtshape", TYvtshape, TYvtshape, TYvtshape, -1, 0, 0}, - ]; - - FILE *f; - static tym_t[64 * 4] tytouns; - static tym_t[TYMAX] _tyrelax; - static tym_t[TYMAX] _tyequiv; - static byte[64 * 4] _tysize; - static ubyte[TYMAX] dttab; - static ushort[TYMAX] dttab4; - int i; - - f = fopen("tytab.d","w"); - -/+ - for (i = 0; i < typetab.length; i++) - { _tysize[typetab[i].ty | 0x00] = cast(byte)typetab[i].size; - /*printf("_tysize[%d] = %d\n",typetab[i].ty,typetab[i].size);*/ - } - fprintf(f,"__gshared byte[256] _tysize =\n[ "); - for (i = 0; i < _tysize.length; i++) - { fprintf(f,"%d,",_tysize[i]); - if ((i & 7) == 7 && i < _tysize.length - 1) - fprintf(f,"\n "); - } - fprintf(f,"\n];\n"); - - for (i = 0; i < _tysize.length; i++) - _tysize[i] = 0; - for (i = 0; i < typetab.length; i++) - { byte sz = cast(byte)typetab[i].size; - switch (typetab[i].ty) - { - case TYldouble: - case TYildouble: - case TYcldouble: -static if (TARGET_OSX) -{ - sz = 16; -} -else static if (TARGET_LINUX || TARGET_FREEBSD || TARGET_OPENBSD || TARGET_DRAGONFLYBSD || TARGET_SOLARIS) -{ - sz = 4; -} -else static if (TARGET_WINDOS) -{ - sz = 2; -} -else -{ - static assert(0, "fix this"); -} - break; - - case TYcent: - case TYucent: - sz = 8; - break; - - default: - break; - } - _tysize[typetab[i].ty | 0x00] = sz; - /*printf("_tyalignsize[%d] = %d\n",typetab[i].ty,typetab[i].size);*/ - } - - fprintf(f,"__gshared byte[256] _tyalignsize =\n[ "); - for (i = 0; i < _tysize.length; i++) - { fprintf(f,"%d,",_tysize[i]); - if ((i & 7) == 7 && i < _tysize.length - 1) - fprintf(f,"\n "); - } - fprintf(f,"\n];\n"); -+/ - fclose(f); -} diff --git a/src/posix.mak b/src/posix.mak index 6ba49b2f0874..3af072eeebbc 100644 --- a/src/posix.mak +++ b/src/posix.mak @@ -366,7 +366,6 @@ BACK_HDRS=$C/cc.d $C/cdef.d $C/cgcv.d $C/code.d $C/cv4.d $C/dt.d $C/el.d $C/glob $C/dlist.d $C/melf.d $C/varstats.di $C/dt.d BACK_SRC = \ - $C/optabgen.d \ $C/bcomplex.d $C/blockopt.d $C/cg.d $C/cg87.d $C/cgxmm.d \ $C/cgcod.d $C/cgcs.d $C/dcgcv.d $C/cgelem.d $C/cgen.d $C/cgobj.d \ $C/compress.d $C/cgreg.d $C/var.d $C/cgcse.d \ @@ -476,7 +475,6 @@ build-examples: $(EXAMPLES) clean: rm -Rf $(GENERATED) - rm -f $(addprefix $D/backend/, $(optabgen_output)) @[ ! -d ${PGO_DIR} ] || echo You should issue manually: rm -rf ${PGO_DIR} ######## Download and install the last dmd buildable without dmd @@ -508,19 +506,6 @@ export DEFAULT_DMD_CONF $G/dmd.conf: $(SRC_MAKE) echo "$$DEFAULT_DMD_CONF" > $@ -######## optabgen generates some source -optabgen_output = tytab.d - -$G/optabgen: $C/optabgen.d $C/cc.d $C/oper.d $(HOST_DMD_PATH) - $(HOST_DMD_RUN) -of$@ $(DFLAGS) $(MODEL_FLAG) $(BACK_MV) $< - $G/optabgen - mv $(optabgen_output) $G - -optabgen_files = $(addprefix $G/, $(optabgen_output)) -$(optabgen_files): optabgen.out -.INTERMEDIATE: optabgen.out -optabgen.out : $G/optabgen - ######## VERSION ######################################################################## # The version file should be updated on every build @@ -546,7 +531,7 @@ FORCE: ; -include $(DEPS) -$(G_DOBJS): $G/%.o: $C/%.d $(optabgen_files) posix.mak $(HOST_DMD_PATH) +$(G_DOBJS): $G/%.o: $C/%.d posix.mak $(HOST_DMD_PATH) @echo " (HOST_DMD_RUN) BACK_DOBJS $<" $(HOST_DMD_RUN) -c -of$@ $(DFLAGS) $(MODEL_FLAG) $(BACK_BETTERC) $(BACK_DFLAGS) $< diff --git a/src/vcbuild/dmd.vcxproj b/src/vcbuild/dmd.vcxproj index 73bcb3bc8202..75ac6c849282 100644 --- a/src/vcbuild/dmd.vcxproj +++ b/src/vcbuild/dmd.vcxproj @@ -1,4 +1,4 @@ - + @@ -211,25 +211,12 @@ - + - - - Building and running $(IntDir)%(Filename).exe - $(_DCompilerExe) -I.. -version=MARS -of"$(IntDir)generated\%(Filename).exe" "%(FullPath)" -if errorlevel 1 exit /B %ERRORLEVEL% -pushd $(IntDir)generated -"%(Filename).exe" -if errorlevel 1 exit /B %ERRORLEVEL% -popd - $(IntDir)generated\optab.d;$(IntDir)generated\debtab.d;$(IntDir)generated\cdxxx.d;$(IntDir)generated\elxxx.d;$(IntDir)generated\tytab.d;$(IntDir)generated\\fltables.d;%(Outputs) - ..\dmd\backend\cc.d;..\dmd\backend\cdef.d;..\dmd\backend\oper.d;..\dmd\backend\ty.d;%(AdditionalInputs) - - - \ No newline at end of file + diff --git a/src/vcbuild/dmd.vcxproj.filters b/src/vcbuild/dmd.vcxproj.filters index 98b401e36e1c..67ccfbfbfa9b 100644 --- a/src/vcbuild/dmd.vcxproj.filters +++ b/src/vcbuild/dmd.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -16,9 +16,4 @@ C++ Header Files - - - Generator - - - \ No newline at end of file + diff --git a/src/win32.mak b/src/win32.mak index 638d7c9a972b..ccd2d542445e 100644 --- a/src/win32.mak +++ b/src/win32.mak @@ -206,7 +206,7 @@ GLUESRC= \ $(GLUE_SRCS) # D back end -BACKSRC= $C\optabgen.d \ +BACKSRC= \ $C/code_stub.h $C/platform_stub.c \ $C\bcomplex.d $C\blockopt.d $C\cg.d $C\cg87.d $C\cgxmm.d \ $C\cgcod.d $C\cgcs.d $C\dcgcv.d $C\cgelem.d $C\cgen.d $C\cgobj.d \ @@ -326,7 +326,7 @@ $(TARGETEXE): $(DMD_SRCS) $(ROOT_SRCS) $(LIBS) $(STRING_IMPORT_FILES) clean: $(RD) /s /q $(GEN) $(DEL) $D\msgs.h $D\msgs.c - $(DEL) optabgen.exe parser_test.exe example_avg.exe + $(DEL) parser_test.exe example_avg.exe $(DEL) $(TARGETEXE) $(DMDFRONTENDEXE) *.map *.obj *.exe install: detab install-copy @@ -392,16 +392,6 @@ $(TOOLS_DIR)\checkwhitespace.d: $(HOST_DC) -Df$@ $< ############################## Generated Source ############################## -OPTABGENOUTPUT = $G\tytab.d - -$(OPTABGENOUTPUT) : \ - $C\optabgen.d - $(HOST_DC) -of$G\optabgen.exe -betterC $(DFLAGS) -mv=dmd.backend=$C $C\optabgen - $G\optabgen.exe - copy *.c "$G\" - copy tytab.d "$G\" - $(DEL) *.c - $(DEL) tytab.d $G\VERSION : ..\VERSION $G copy ..\VERSION $@ @@ -423,13 +413,13 @@ $G/blockopt.obj : $C\blockopt.d $(HOST_DC) -c -betterC -of$@ $(DFLAGS) -mv=dmd.backend=$C $C\blockopt $G/cg.obj : $C\cg.d - $(HOST_DC) -c -of$@ $(DFLAGS) -J$G -betterC -mv=dmd.backend=$C $C\cg + $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\cg $G/cg87.obj : $C\cg87.d $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\cg87 $G/cgcod.obj : $C\cgcod.d - $(HOST_DC) -c -of$@ $(DFLAGS) -J$G -betterC -mv=dmd.backend=$C $C\cgcod + $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\cgcod $G/cgcs.obj : $C\cgcs.d $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\cgcs @@ -441,7 +431,7 @@ $G/dcgcv.obj : $C\dcgcv.d $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\dcgcv $G/cgelem.obj : $C\cgelem.d - $(HOST_DC) -c -of$@ $(DFLAGS) -J$G -betterC -mv=dmd.backend=$C $C\cgelem + $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\cgelem $G/cgen.obj : $C\cgen.d $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\cgen @@ -581,8 +571,8 @@ $G/dtype.obj : $C\dtype.d $G/util2.obj : $C\util2.d $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\util2 -$G/var.obj : $C\var.d $G\tytab.d - $(HOST_DC) -c -of$@ $(DFLAGS) -J$G -betterC -mv=dmd.backend=$C $C\var +$G/var.obj : $C\var.d + $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\var $G/dvarstats.obj : $C\dvarstats.d $(HOST_DC) -c -of$@ $(DFLAGS) -betterC -mv=dmd.backend=$C $C\dvarstats