mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 05:00:16 +03:00
Calculate impcnvtab using CTFE
This commit is contained in:
parent
9d03bea3b1
commit
fca0fcc5cd
5 changed files with 360 additions and 548 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -10,8 +10,6 @@ src/fltables.c
|
|||
src/id.c
|
||||
src/id.h
|
||||
src/idgen
|
||||
src/impcnvgen
|
||||
src/impcnvtab.c
|
||||
src/optab.c
|
||||
src/optabgen
|
||||
src/tytab.c
|
||||
|
@ -19,7 +17,6 @@ test/test_results
|
|||
*.obj
|
||||
src/idgen.exe
|
||||
src/dmd.exe
|
||||
src/impcnvgen.exe
|
||||
src/optabgen.exe
|
||||
src/verstr.h
|
||||
*.map
|
||||
|
@ -52,5 +49,4 @@ src/*.lib
|
|||
tags
|
||||
|
||||
# OSX
|
||||
src/impcnvgen.dSYM/
|
||||
src/optabgen.dSYM/
|
||||
|
|
525
src/impcnvgen.c
525
src/impcnvgen.c
|
@ -1,525 +0,0 @@
|
|||
|
||||
/* Compiler implementation of the D programming language
|
||||
* Copyright (c) 1999-2014 by Digital Mars
|
||||
* All Rights Reserved
|
||||
* written by Walter Bright
|
||||
* http://www.digitalmars.com
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* http://www.boost.org/LICENSE_1_0.txt
|
||||
* https://github.com/D-Programming-Language/dmd/blob/master/src/impcnvgen.c
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "mtype.h"
|
||||
|
||||
TY impcnvResultTab[TMAX][TMAX];
|
||||
TY impcnvType1Tab[TMAX][TMAX];
|
||||
TY impcnvType2Tab[TMAX][TMAX];
|
||||
int impcnvWarnTab[TMAX][TMAX];
|
||||
|
||||
int integral_promotion(int t)
|
||||
{
|
||||
switch (t)
|
||||
{
|
||||
case Tchar:
|
||||
case Twchar:
|
||||
case Tbool:
|
||||
case Tint8:
|
||||
case Tuns8:
|
||||
case Tint16:
|
||||
case Tuns16: return Tint32;
|
||||
case Tdchar: return Tuns32;
|
||||
default: return t;
|
||||
}
|
||||
}
|
||||
|
||||
void init()
|
||||
{ int i, j;
|
||||
|
||||
// Set conversion tables
|
||||
for (i = 0; i < TMAX; i++)
|
||||
for (j = 0; j < TMAX; j++)
|
||||
{ impcnvResultTab[i][j] = Terror;
|
||||
impcnvType1Tab[i][j] = Terror;
|
||||
impcnvType2Tab[i][j] = Terror;
|
||||
impcnvWarnTab[i][j] = 0;
|
||||
}
|
||||
|
||||
#define X(t1,t2, nt1,nt2, rt) \
|
||||
impcnvResultTab[t1][t2] = rt; \
|
||||
impcnvType1Tab[t1][t2] = nt1; \
|
||||
impcnvType2Tab[t1][t2] = nt2;
|
||||
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tbool,Tbool, Tbool,Tbool, Tbool)
|
||||
X(Tbool,Tint8, Tint32,Tint32, Tint32)
|
||||
X(Tbool,Tuns8, Tint32,Tint32, Tint32)
|
||||
X(Tbool,Tint16, Tint32,Tint32, Tint32)
|
||||
X(Tbool,Tuns16, Tint32,Tint32, Tint32)
|
||||
X(Tbool,Tint32, Tint32,Tint32, Tint32)
|
||||
X(Tbool,Tuns32, Tuns32,Tuns32, Tuns32)
|
||||
X(Tbool,Tint64, Tint64,Tint64, Tint64)
|
||||
X(Tbool,Tuns64, Tuns64,Tuns64, Tuns64)
|
||||
X(Tbool,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tbool,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tbool,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tbool,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tbool,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tbool,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tbool,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tbool,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tbool,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tbool,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tbool,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint8,Tint8, Tint32,Tint32, Tint32)
|
||||
X(Tint8,Tuns8, Tint32,Tint32, Tint32)
|
||||
X(Tint8,Tint16, Tint32,Tint32, Tint32)
|
||||
X(Tint8,Tuns16, Tint32,Tint32, Tint32)
|
||||
X(Tint8,Tint32, Tint32,Tint32, Tint32)
|
||||
X(Tint8,Tuns32, Tuns32,Tuns32, Tuns32)
|
||||
X(Tint8,Tint64, Tint64,Tint64, Tint64)
|
||||
X(Tint8,Tuns64, Tuns64,Tuns64, Tuns64)
|
||||
X(Tint8,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tint8,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tint8,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tint8,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tint8,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tint8,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tint8,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tint8,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tint8,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tint8,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tint8,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns8,Tuns8, Tint32,Tint32, Tint32)
|
||||
X(Tuns8,Tint16, Tint32,Tint32, Tint32)
|
||||
X(Tuns8,Tuns16, Tint32,Tint32, Tint32)
|
||||
X(Tuns8,Tint32, Tint32,Tint32, Tint32)
|
||||
X(Tuns8,Tuns32, Tuns32,Tuns32, Tuns32)
|
||||
X(Tuns8,Tint64, Tint64,Tint64, Tint64)
|
||||
X(Tuns8,Tuns64, Tuns64,Tuns64, Tuns64)
|
||||
X(Tuns8,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tuns8,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tuns8,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tuns8,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tuns8,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tuns8,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tuns8,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tuns8,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tuns8,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tuns8,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tuns8,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint16,Tint16, Tint32,Tint32, Tint32)
|
||||
X(Tint16,Tuns16, Tint32,Tint32, Tint32)
|
||||
X(Tint16,Tint32, Tint32,Tint32, Tint32)
|
||||
X(Tint16,Tuns32, Tuns32,Tuns32, Tuns32)
|
||||
X(Tint16,Tint64, Tint64,Tint64, Tint64)
|
||||
X(Tint16,Tuns64, Tuns64,Tuns64, Tuns64)
|
||||
X(Tint16,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tint16,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tint16,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tint16,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tint16,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tint16,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tint16,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tint16,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tint16,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tint16,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tint16,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns16,Tuns16, Tint32,Tint32, Tint32)
|
||||
X(Tuns16,Tint32, Tint32,Tint32, Tint32)
|
||||
X(Tuns16,Tuns32, Tuns32,Tuns32, Tuns32)
|
||||
X(Tuns16,Tint64, Tint64,Tint64, Tint64)
|
||||
X(Tuns16,Tuns64, Tuns64,Tuns64, Tuns64)
|
||||
X(Tuns16,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tuns16,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tuns16,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tuns16,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tuns16,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tuns16,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tuns16,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tuns16,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tuns16,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tuns16,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tuns16,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint32,Tint32, Tint32,Tint32, Tint32)
|
||||
X(Tint32,Tuns32, Tuns32,Tuns32, Tuns32)
|
||||
X(Tint32,Tint64, Tint64,Tint64, Tint64)
|
||||
X(Tint32,Tuns64, Tuns64,Tuns64, Tuns64)
|
||||
X(Tint32,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tint32,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tint32,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tint32,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tint32,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tint32,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tint32,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tint32,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tint32,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tint32,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tint32,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns32,Tuns32, Tuns32,Tuns32, Tuns32)
|
||||
X(Tuns32,Tint64, Tint64,Tint64, Tint64)
|
||||
X(Tuns32,Tuns64, Tuns64,Tuns64, Tuns64)
|
||||
X(Tuns32,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tuns32,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tuns32,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tuns32,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tuns32,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tuns32,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tuns32,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tuns32,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tuns32,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tuns32,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tuns32,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint64,Tint64, Tint64,Tint64, Tint64)
|
||||
X(Tint64,Tuns64, Tuns64,Tuns64, Tuns64)
|
||||
X(Tint64,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tint64,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tint64,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tint64,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tint64,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tint64,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tint64,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tint64,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tint64,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tint64,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tint64,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns64,Tuns64, Tuns64,Tuns64, Tuns64)
|
||||
X(Tuns64,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tuns64,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tuns64,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tuns64,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tuns64,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tuns64,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tuns64,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tuns64,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tuns64,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tuns64,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tuns64,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint128,Tint128, Tint128,Tint128, Tint128)
|
||||
X(Tint128,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tint128,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tint128,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tint128,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tint128,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tint128,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tint128,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tint128,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tint128,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tint128,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns128,Tuns128, Tuns128,Tuns128, Tuns128)
|
||||
|
||||
X(Tuns128,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tuns128,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tuns128,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
X(Tuns128,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tuns128,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tuns128,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tuns128,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tuns128,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tuns128,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tfloat32,Tfloat32, Tfloat32,Tfloat32, Tfloat32)
|
||||
X(Tfloat32,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tfloat32,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
|
||||
X(Tfloat32,Timaginary32, Tfloat32,Timaginary32, Tfloat32)
|
||||
X(Tfloat32,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tfloat32,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
|
||||
X(Tfloat32,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32)
|
||||
X(Tfloat32,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tfloat32,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tfloat64,Tfloat64, Tfloat64,Tfloat64, Tfloat64)
|
||||
X(Tfloat64,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
|
||||
X(Tfloat64,Timaginary32, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tfloat64,Timaginary64, Tfloat64,Timaginary64, Tfloat64)
|
||||
X(Tfloat64,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
|
||||
X(Tfloat64,Tcomplex32, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tfloat64,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64)
|
||||
X(Tfloat64,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tfloat80,Tfloat80, Tfloat80,Tfloat80, Tfloat80)
|
||||
|
||||
X(Tfloat80,Timaginary32, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tfloat80,Timaginary64, Tfloat80,Timaginary80, Tfloat80)
|
||||
X(Tfloat80,Timaginary80, Tfloat80,Timaginary80, Tfloat80)
|
||||
|
||||
X(Tfloat80,Tcomplex32, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
X(Tfloat80,Tcomplex64, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
X(Tfloat80,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Timaginary32,Timaginary32, Timaginary32,Timaginary32, Timaginary32)
|
||||
X(Timaginary32,Timaginary64, Timaginary64,Timaginary64, Timaginary64)
|
||||
X(Timaginary32,Timaginary80, Timaginary80,Timaginary80, Timaginary80)
|
||||
|
||||
X(Timaginary32,Tcomplex32, Timaginary32,Tcomplex32, Tcomplex32)
|
||||
X(Timaginary32,Tcomplex64, Timaginary64,Tcomplex64, Tcomplex64)
|
||||
X(Timaginary32,Tcomplex80, Timaginary80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Timaginary64,Timaginary64, Timaginary64,Timaginary64, Timaginary64)
|
||||
X(Timaginary64,Timaginary80, Timaginary80,Timaginary80, Timaginary80)
|
||||
|
||||
X(Timaginary64,Tcomplex32, Timaginary64,Tcomplex64, Tcomplex64)
|
||||
X(Timaginary64,Tcomplex64, Timaginary64,Tcomplex64, Tcomplex64)
|
||||
X(Timaginary64,Tcomplex80, Timaginary80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Timaginary80,Timaginary80, Timaginary80,Timaginary80, Timaginary80)
|
||||
|
||||
X(Timaginary80,Tcomplex32, Timaginary80,Tcomplex80, Tcomplex80)
|
||||
X(Timaginary80,Tcomplex64, Timaginary80,Tcomplex80, Tcomplex80)
|
||||
X(Timaginary80,Tcomplex80, Timaginary80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tcomplex32,Tcomplex32, Tcomplex32,Tcomplex32, Tcomplex32)
|
||||
X(Tcomplex32,Tcomplex64, Tcomplex64,Tcomplex64, Tcomplex64)
|
||||
X(Tcomplex32,Tcomplex80, Tcomplex80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tcomplex64,Tcomplex64, Tcomplex64,Tcomplex64, Tcomplex64)
|
||||
X(Tcomplex64,Tcomplex80, Tcomplex80,Tcomplex80, Tcomplex80)
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tcomplex80,Tcomplex80, Tcomplex80,Tcomplex80, Tcomplex80)
|
||||
|
||||
#undef X
|
||||
|
||||
#define Y(t1,t2) impcnvWarnTab[t1][t2] = 1;
|
||||
|
||||
Y(Tuns8, Tint8)
|
||||
Y(Tint16, Tint8)
|
||||
Y(Tuns16, Tint8)
|
||||
Y(Tint32, Tint8)
|
||||
Y(Tuns32, Tint8)
|
||||
Y(Tint64, Tint8)
|
||||
Y(Tuns64, Tint8)
|
||||
Y(Tint128, Tint8)
|
||||
Y(Tuns128, Tint8)
|
||||
|
||||
Y(Tint8, Tuns8)
|
||||
Y(Tint16, Tuns8)
|
||||
Y(Tuns16, Tuns8)
|
||||
Y(Tint32, Tuns8)
|
||||
Y(Tuns32, Tuns8)
|
||||
Y(Tint64, Tuns8)
|
||||
Y(Tuns64, Tuns8)
|
||||
Y(Tint128, Tuns8)
|
||||
Y(Tuns128, Tuns8)
|
||||
|
||||
Y(Tint8, Tchar)
|
||||
Y(Tint16, Tchar)
|
||||
Y(Tuns16, Tchar)
|
||||
Y(Tint32, Tchar)
|
||||
Y(Tuns32, Tchar)
|
||||
Y(Tint64, Tchar)
|
||||
Y(Tuns64, Tchar)
|
||||
Y(Tint128, Tchar)
|
||||
Y(Tuns128, Tchar)
|
||||
|
||||
Y(Tuns16, Tint16)
|
||||
Y(Tint32, Tint16)
|
||||
Y(Tuns32, Tint16)
|
||||
Y(Tint64, Tint16)
|
||||
Y(Tuns64, Tint16)
|
||||
Y(Tint128, Tint16)
|
||||
Y(Tuns128, Tint16)
|
||||
|
||||
Y(Tint16, Tuns16)
|
||||
Y(Tint32, Tuns16)
|
||||
Y(Tuns32, Tuns16)
|
||||
Y(Tint64, Tuns16)
|
||||
Y(Tuns64, Tuns16)
|
||||
Y(Tint128, Tuns16)
|
||||
Y(Tuns128, Tuns16)
|
||||
|
||||
Y(Tint16, Twchar)
|
||||
Y(Tint32, Twchar)
|
||||
Y(Tuns32, Twchar)
|
||||
Y(Tint64, Twchar)
|
||||
Y(Tuns64, Twchar)
|
||||
Y(Tint128, Twchar)
|
||||
Y(Tuns128, Twchar)
|
||||
|
||||
// Y(Tuns32, Tint32)
|
||||
Y(Tint64, Tint32)
|
||||
Y(Tuns64, Tint32)
|
||||
Y(Tint128, Tint32)
|
||||
Y(Tuns128, Tint32)
|
||||
|
||||
// Y(Tint32, Tuns32)
|
||||
Y(Tint64, Tuns32)
|
||||
Y(Tuns64, Tuns32)
|
||||
Y(Tint128, Tuns32)
|
||||
Y(Tuns128, Tuns32)
|
||||
|
||||
Y(Tint64, Tdchar)
|
||||
Y(Tuns64, Tdchar)
|
||||
Y(Tint128, Tdchar)
|
||||
Y(Tuns128, Tdchar)
|
||||
|
||||
// Y(Tint64, Tuns64)
|
||||
// Y(Tuns64, Tint64)
|
||||
Y(Tint128, Tint64)
|
||||
Y(Tuns128, Tint64)
|
||||
Y(Tint128, Tuns64)
|
||||
Y(Tuns128, Tuns64)
|
||||
|
||||
// Y(Tint128, Tuns128)
|
||||
// Y(Tuns128, Tint128)
|
||||
|
||||
for (i = 0; i < TMAX; i++)
|
||||
for (j = 0; j < TMAX; j++)
|
||||
{
|
||||
if (impcnvResultTab[i][j] == Terror)
|
||||
{
|
||||
impcnvResultTab[i][j] = impcnvResultTab[j][i];
|
||||
impcnvType1Tab[i][j] = impcnvType2Tab[j][i];
|
||||
impcnvType2Tab[i][j] = impcnvType1Tab[j][i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
|
||||
init();
|
||||
|
||||
FILE *fp = fopen("impcnvtab.d", "wb");
|
||||
|
||||
fprintf(fp, "// This file is generated by impcnvgen.c\n");
|
||||
fprintf(fp, "module ddmd.impcnvtab;\n");
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "import ddmd.mtype;\n");
|
||||
fprintf(fp, "\n");
|
||||
|
||||
fprintf(fp, "extern (C++) __gshared ubyte[TMAX][TMAX] impcnvResult =\n[\n");
|
||||
for (i = 0; i < TMAX; i++)
|
||||
{
|
||||
if (i)
|
||||
fprintf(fp, ",\n");
|
||||
fprintf(fp, " [");
|
||||
for (j = 0; j < TMAX; j++)
|
||||
{
|
||||
if (j)
|
||||
fprintf(fp, ",");
|
||||
fprintf(fp, "%d", impcnvResultTab[i][j]);
|
||||
}
|
||||
fprintf(fp, "]");
|
||||
}
|
||||
fprintf(fp, "\n];\n");
|
||||
|
||||
fprintf(fp, "extern (C++) __gshared ubyte[TMAX][TMAX] impcnvType1 =\n[\n");
|
||||
for (i = 0; i < TMAX; i++)
|
||||
{
|
||||
if (i)
|
||||
fprintf(fp, ",\n");
|
||||
fprintf(fp, " [");
|
||||
for (j = 0; j < TMAX; j++)
|
||||
{
|
||||
if (j)
|
||||
fprintf(fp, ",");
|
||||
fprintf(fp, "%d", impcnvType1Tab[i][j]);
|
||||
}
|
||||
fprintf(fp, "]");
|
||||
}
|
||||
fprintf(fp, "\n];\n");
|
||||
|
||||
fprintf(fp, "extern (C++) __gshared ubyte[TMAX][TMAX] impcnvType2 =\n[\n");
|
||||
for (i = 0; i < TMAX; i++)
|
||||
{
|
||||
if (i)
|
||||
fprintf(fp, ",\n");
|
||||
fprintf(fp, " [");
|
||||
for (j = 0; j < TMAX; j++)
|
||||
{
|
||||
if (j)
|
||||
fprintf(fp, ",");
|
||||
fprintf(fp, "%d",impcnvType2Tab[i][j]);
|
||||
}
|
||||
fprintf(fp, "]");
|
||||
}
|
||||
fprintf(fp,"\n];\n");
|
||||
|
||||
fprintf(fp,"extern (C++) __gshared ubyte[TMAX][TMAX] impcnvWarn =\n[\n");
|
||||
for (i = 0; i < TMAX; i++)
|
||||
{
|
||||
if (i)
|
||||
fprintf(fp, ",\n");
|
||||
fprintf(fp, " [");
|
||||
for (j = 0; j < TMAX; j++)
|
||||
{
|
||||
if (j)
|
||||
fprintf(fp, ",");
|
||||
fprintf(fp, "%d", impcnvWarnTab[i][j]);
|
||||
}
|
||||
fprintf(fp, "]");
|
||||
}
|
||||
fprintf(fp, "\n];\n");
|
||||
|
||||
fclose(fp);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
354
src/impcnvtab.d
Normal file
354
src/impcnvtab.d
Normal file
|
@ -0,0 +1,354 @@
|
|||
// Compiler implementation of the D programming language
|
||||
// Copyright (c) 1999-2015 by Digital Mars
|
||||
// All Rights Reserved
|
||||
// written by Walter Bright
|
||||
// http://www.digitalmars.com
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
module ddmd.impcnvtab;
|
||||
|
||||
import ddmd.mtype;
|
||||
|
||||
immutable ENUMTY[TMAX][TMAX] impcnvResult = impCnvTab.impcnvResultTab;
|
||||
immutable ENUMTY[TMAX][TMAX] impcnvType1 = impCnvTab.impcnvType1Tab;
|
||||
immutable ENUMTY[TMAX][TMAX] impcnvType2 = impCnvTab.impcnvType2Tab;
|
||||
|
||||
private:
|
||||
|
||||
struct ImpCnvTab
|
||||
{
|
||||
ENUMTY[TMAX][TMAX] impcnvResultTab;
|
||||
ENUMTY[TMAX][TMAX] impcnvType1Tab;
|
||||
ENUMTY[TMAX][TMAX] impcnvType2Tab;
|
||||
}
|
||||
|
||||
enum ImpCnvTab impCnvTab = generateImpCnvTab();
|
||||
|
||||
ImpCnvTab generateImpCnvTab()
|
||||
{
|
||||
ImpCnvTab impCnvTab;
|
||||
|
||||
// Set conversion tables
|
||||
foreach (i; 0 .. cast(size_t)TMAX)
|
||||
{
|
||||
foreach (j; 0 .. cast(size_t)TMAX)
|
||||
{
|
||||
impCnvTab.impcnvResultTab[i][j] = Terror;
|
||||
impCnvTab.impcnvType1Tab[i][j] = Terror;
|
||||
impCnvTab.impcnvType2Tab[i][j] = Terror;
|
||||
}
|
||||
}
|
||||
|
||||
void X(ENUMTY t1, ENUMTY t2, ENUMTY nt1, ENUMTY nt2, ENUMTY rt)
|
||||
{
|
||||
impCnvTab.impcnvResultTab[t1][t2] = rt;
|
||||
impCnvTab.impcnvType1Tab[t1][t2] = nt1;
|
||||
impCnvTab.impcnvType2Tab[t1][t2] = nt2;
|
||||
}
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tbool,Tbool, Tbool,Tbool, Tbool);
|
||||
X(Tbool,Tint8, Tint32,Tint32, Tint32);
|
||||
X(Tbool,Tuns8, Tint32,Tint32, Tint32);
|
||||
X(Tbool,Tint16, Tint32,Tint32, Tint32);
|
||||
X(Tbool,Tuns16, Tint32,Tint32, Tint32);
|
||||
X(Tbool,Tint32, Tint32,Tint32, Tint32);
|
||||
X(Tbool,Tuns32, Tuns32,Tuns32, Tuns32);
|
||||
X(Tbool,Tint64, Tint64,Tint64, Tint64);
|
||||
X(Tbool,Tuns64, Tuns64,Tuns64, Tuns64);
|
||||
X(Tbool,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tbool,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tbool,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tbool,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tbool,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tbool,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tbool,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tbool,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tbool,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tbool,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tbool,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint8,Tint8, Tint32,Tint32, Tint32);
|
||||
X(Tint8,Tuns8, Tint32,Tint32, Tint32);
|
||||
X(Tint8,Tint16, Tint32,Tint32, Tint32);
|
||||
X(Tint8,Tuns16, Tint32,Tint32, Tint32);
|
||||
X(Tint8,Tint32, Tint32,Tint32, Tint32);
|
||||
X(Tint8,Tuns32, Tuns32,Tuns32, Tuns32);
|
||||
X(Tint8,Tint64, Tint64,Tint64, Tint64);
|
||||
X(Tint8,Tuns64, Tuns64,Tuns64, Tuns64);
|
||||
X(Tint8,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tint8,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tint8,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tint8,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tint8,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tint8,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tint8,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tint8,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tint8,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tint8,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tint8,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns8,Tuns8, Tint32,Tint32, Tint32);
|
||||
X(Tuns8,Tint16, Tint32,Tint32, Tint32);
|
||||
X(Tuns8,Tuns16, Tint32,Tint32, Tint32);
|
||||
X(Tuns8,Tint32, Tint32,Tint32, Tint32);
|
||||
X(Tuns8,Tuns32, Tuns32,Tuns32, Tuns32);
|
||||
X(Tuns8,Tint64, Tint64,Tint64, Tint64);
|
||||
X(Tuns8,Tuns64, Tuns64,Tuns64, Tuns64);
|
||||
X(Tuns8,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tuns8,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tuns8,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tuns8,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tuns8,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tuns8,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tuns8,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tuns8,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tuns8,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tuns8,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tuns8,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint16,Tint16, Tint32,Tint32, Tint32);
|
||||
X(Tint16,Tuns16, Tint32,Tint32, Tint32);
|
||||
X(Tint16,Tint32, Tint32,Tint32, Tint32);
|
||||
X(Tint16,Tuns32, Tuns32,Tuns32, Tuns32);
|
||||
X(Tint16,Tint64, Tint64,Tint64, Tint64);
|
||||
X(Tint16,Tuns64, Tuns64,Tuns64, Tuns64);
|
||||
X(Tint16,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tint16,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tint16,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tint16,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tint16,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tint16,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tint16,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tint16,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tint16,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tint16,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tint16,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns16,Tuns16, Tint32,Tint32, Tint32);
|
||||
X(Tuns16,Tint32, Tint32,Tint32, Tint32);
|
||||
X(Tuns16,Tuns32, Tuns32,Tuns32, Tuns32);
|
||||
X(Tuns16,Tint64, Tint64,Tint64, Tint64);
|
||||
X(Tuns16,Tuns64, Tuns64,Tuns64, Tuns64);
|
||||
X(Tuns16,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tuns16,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tuns16,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tuns16,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tuns16,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tuns16,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tuns16,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tuns16,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tuns16,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tuns16,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tuns16,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint32,Tint32, Tint32,Tint32, Tint32);
|
||||
X(Tint32,Tuns32, Tuns32,Tuns32, Tuns32);
|
||||
X(Tint32,Tint64, Tint64,Tint64, Tint64);
|
||||
X(Tint32,Tuns64, Tuns64,Tuns64, Tuns64);
|
||||
X(Tint32,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tint32,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tint32,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tint32,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tint32,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tint32,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tint32,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tint32,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tint32,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tint32,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tint32,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns32,Tuns32, Tuns32,Tuns32, Tuns32);
|
||||
X(Tuns32,Tint64, Tint64,Tint64, Tint64);
|
||||
X(Tuns32,Tuns64, Tuns64,Tuns64, Tuns64);
|
||||
X(Tuns32,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tuns32,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tuns32,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tuns32,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tuns32,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tuns32,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tuns32,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tuns32,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tuns32,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tuns32,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tuns32,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint64,Tint64, Tint64,Tint64, Tint64);
|
||||
X(Tint64,Tuns64, Tuns64,Tuns64, Tuns64);
|
||||
X(Tint64,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tint64,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tint64,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tint64,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tint64,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tint64,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tint64,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tint64,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tint64,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tint64,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tint64,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns64,Tuns64, Tuns64,Tuns64, Tuns64);
|
||||
X(Tuns64,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tuns64,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tuns64,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tuns64,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tuns64,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tuns64,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tuns64,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tuns64,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tuns64,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tuns64,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tuns64,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tint128,Tint128, Tint128,Tint128, Tint128);
|
||||
X(Tint128,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tint128,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tint128,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tint128,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tint128,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tint128,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tint128,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tint128,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tint128,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tint128,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tuns128,Tuns128, Tuns128,Tuns128, Tuns128);
|
||||
|
||||
X(Tuns128,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tuns128,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tuns128,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
X(Tuns128,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tuns128,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tuns128,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tuns128,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tuns128,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tuns128,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tfloat32,Tfloat32, Tfloat32,Tfloat32, Tfloat32);
|
||||
X(Tfloat32,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tfloat32,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
|
||||
X(Tfloat32,Timaginary32, Tfloat32,Timaginary32, Tfloat32);
|
||||
X(Tfloat32,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tfloat32,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
|
||||
X(Tfloat32,Tcomplex32, Tfloat32,Tcomplex32, Tcomplex32);
|
||||
X(Tfloat32,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tfloat32,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tfloat64,Tfloat64, Tfloat64,Tfloat64, Tfloat64);
|
||||
X(Tfloat64,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
|
||||
X(Tfloat64,Timaginary32, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tfloat64,Timaginary64, Tfloat64,Timaginary64, Tfloat64);
|
||||
X(Tfloat64,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
|
||||
X(Tfloat64,Tcomplex32, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tfloat64,Tcomplex64, Tfloat64,Tcomplex64, Tcomplex64);
|
||||
X(Tfloat64,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tfloat80,Tfloat80, Tfloat80,Tfloat80, Tfloat80);
|
||||
|
||||
X(Tfloat80,Timaginary32, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tfloat80,Timaginary64, Tfloat80,Timaginary80, Tfloat80);
|
||||
X(Tfloat80,Timaginary80, Tfloat80,Timaginary80, Tfloat80);
|
||||
|
||||
X(Tfloat80,Tcomplex32, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
X(Tfloat80,Tcomplex64, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
X(Tfloat80,Tcomplex80, Tfloat80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Timaginary32,Timaginary32, Timaginary32,Timaginary32, Timaginary32);
|
||||
X(Timaginary32,Timaginary64, Timaginary64,Timaginary64, Timaginary64);
|
||||
X(Timaginary32,Timaginary80, Timaginary80,Timaginary80, Timaginary80);
|
||||
|
||||
X(Timaginary32,Tcomplex32, Timaginary32,Tcomplex32, Tcomplex32);
|
||||
X(Timaginary32,Tcomplex64, Timaginary64,Tcomplex64, Tcomplex64);
|
||||
X(Timaginary32,Tcomplex80, Timaginary80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Timaginary64,Timaginary64, Timaginary64,Timaginary64, Timaginary64);
|
||||
X(Timaginary64,Timaginary80, Timaginary80,Timaginary80, Timaginary80);
|
||||
|
||||
X(Timaginary64,Tcomplex32, Timaginary64,Tcomplex64, Tcomplex64);
|
||||
X(Timaginary64,Tcomplex64, Timaginary64,Tcomplex64, Tcomplex64);
|
||||
X(Timaginary64,Tcomplex80, Timaginary80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Timaginary80,Timaginary80, Timaginary80,Timaginary80, Timaginary80);
|
||||
|
||||
X(Timaginary80,Tcomplex32, Timaginary80,Tcomplex80, Tcomplex80);
|
||||
X(Timaginary80,Tcomplex64, Timaginary80,Tcomplex80, Tcomplex80);
|
||||
X(Timaginary80,Tcomplex80, Timaginary80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tcomplex32,Tcomplex32, Tcomplex32,Tcomplex32, Tcomplex32);
|
||||
X(Tcomplex32,Tcomplex64, Tcomplex64,Tcomplex64, Tcomplex64);
|
||||
X(Tcomplex32,Tcomplex80, Tcomplex80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tcomplex64,Tcomplex64, Tcomplex64,Tcomplex64, Tcomplex64);
|
||||
X(Tcomplex64,Tcomplex80, Tcomplex80,Tcomplex80, Tcomplex80);
|
||||
|
||||
/* ======================= */
|
||||
|
||||
X(Tcomplex80,Tcomplex80, Tcomplex80,Tcomplex80, Tcomplex80);
|
||||
|
||||
foreach (i; 0 .. cast(size_t)TMAX)
|
||||
{
|
||||
foreach (j; 0 .. cast(size_t)TMAX)
|
||||
{
|
||||
if (impCnvTab.impcnvResultTab[i][j] == Terror)
|
||||
{
|
||||
impCnvTab.impcnvResultTab[i][j] = impCnvTab.impcnvResultTab[j][i];
|
||||
impCnvTab.impcnvType1Tab[i][j] = impCnvTab.impcnvType2Tab[j][i];
|
||||
impCnvTab.impcnvType2Tab[i][j] = impCnvTab.impcnvType1Tab[j][i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return impCnvTab;
|
||||
}
|
|
@ -236,7 +236,7 @@ endif
|
|||
SRC = win32.mak posix.mak osmodel.mak aggregate.h aliasthis.h arraytypes.h \
|
||||
attrib.h complex_t.h cond.h ctfe.h ctfe.h declaration.h dsymbol.h \
|
||||
enum.h errors.h expression.h globals.h hdrgen.h identifier.h idgen.d \
|
||||
impcnvgen.c import.h init.h intrange.h json.h lexer.h lib.h macro.h \
|
||||
import.h init.h intrange.h json.h lexer.h lib.h macro.h \
|
||||
mars.h module.h mtype.h nspace.h objc.h parse.h scanmscoff.c scanomf.c \
|
||||
scope.h statement.h staticassert.h target.h template.h tokens.h utf.h \
|
||||
version.h visitor.h $(DMD_SRCS)
|
||||
|
@ -300,8 +300,8 @@ dmd: $(DMD_SRCS) $(ROOT_SRCS) newdelete.o glue.a backend.a verstr.h
|
|||
endif
|
||||
|
||||
clean:
|
||||
rm -f $(GLUE_OBJS) $(BACK_OBJS) dmd optab.o id.o impcnvgen \
|
||||
$(impcnvtab_output) idgen $(idgen_output) optabgen \
|
||||
rm -f $(GLUE_OBJS) $(BACK_OBJS) dmd optab.o id.o \
|
||||
idgen $(idgen_output) optabgen \
|
||||
$(optabgen_output) verstr.h core *.cov *.deps *.gcda *.gcno *.a
|
||||
@[ ! -d ${PGO_DIR} ] || echo You should issue manually: rm -rf ${PGO_DIR}
|
||||
|
||||
|
@ -350,15 +350,6 @@ idgen: idgen.d
|
|||
CC=$(HOST_CC) $(HOST_DMD_RUN) idgen.d
|
||||
./idgen
|
||||
|
||||
######### impcnvgen generates some source
|
||||
|
||||
impcnvtab_output = impcnvtab.d
|
||||
$(impcnvtab_output) : impcnvgen
|
||||
|
||||
impcnvgen : mtype.h impcnvgen.c
|
||||
$(CC) $(CFLAGS) -I$(ROOT) impcnvgen.c -o impcnvgen
|
||||
./impcnvgen
|
||||
|
||||
#########
|
||||
|
||||
# Create (or update) the verstr.h file.
|
||||
|
@ -380,7 +371,7 @@ $(shell test \"$(VERSION)\" != "`cat verstr.h 2> /dev/null`" \
|
|||
|
||||
#########
|
||||
|
||||
$(GLUE_OBJS) : $(idgen_output) $(impcnvgen_output)
|
||||
$(GLUE_OBJS) : $(idgen_output)
|
||||
$(BACK_OBJS) : $(optabgen_output)
|
||||
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ ROOT_SRCS=$(ROOT)/aav.d $(ROOT)/array.d $(ROOT)/file.d $(ROOT)/filename.d \
|
|||
SRCS = win32.mak posix.mak osmodel.mak aggregate.h aliasthis.h arraytypes.h \
|
||||
attrib.h complex_t.h cond.h ctfe.h ctfe.h declaration.h dsymbol.h \
|
||||
enum.h errors.h expression.h globals.h hdrgen.h identifier.h idgen.d \
|
||||
impcnvgen.c import.h init.h intrange.h json.h lexer.h lib.h macro.h \
|
||||
import.h init.h intrange.h json.h lexer.h lib.h macro.h \
|
||||
mars.h module.h mtype.h nspace.h objc.h parse.h scanmscoff.c scanomf.c \
|
||||
scope.h statement.h staticassert.h target.h template.h tokens.h utf.h \
|
||||
version.h visitor.h $(DMD_SRCS)
|
||||
|
@ -285,7 +285,7 @@ clean:
|
|||
$(DEL) elxxx.c cdxxx.c optab.c debtab.c fltables.c tytab.c
|
||||
$(DEL) id.h id.d
|
||||
$(DEL) verstr.h
|
||||
$(DEL) impcnvtab.d impcnvgen.exe optabgen.exe
|
||||
$(DEL) optabgen.exe
|
||||
|
||||
install: detab install-copy
|
||||
|
||||
|
@ -358,10 +358,6 @@ elxxx.c cdxxx.c optab.c debtab.c fltables.c tytab.c : \
|
|||
$(CC) -cpp -ooptabgen.exe $C\optabgen -DMARS -DDM_TARGET_CPU_X86=1 -I$(TK)
|
||||
.\optabgen.exe
|
||||
|
||||
impcnvtab.d : impcnvgen.c
|
||||
$(CC) -I$(ROOT) -cpp -DDM_TARGET_CPU_X86=1 impcnvgen
|
||||
.\impcnvgen.exe
|
||||
|
||||
id.h id.d : idgen.d
|
||||
$(HOST_DC) -run idgen
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue