Mercurial > projects > ddmd
comparison dmd/backend/iasm.d @ 191:52188e7e3fb5
Fixed deprecated features, now compiles with DMD2.058
Also changed Array allocation policy:
Now doesn't reallocate but malloc's, followed by a memcpy (no free).
(this fixes a crash while compiling druntime. Same bug in dmd)
author | korDen@korDen-pc |
---|---|
date | Sun, 25 Mar 2012 03:11:12 +0400 |
parents | 9f4e5ac4f0a3 |
children | eb38fdcb3e62 |
comparison
equal
deleted
inserted
replaced
190:80660782bffe | 191:52188e7e3fb5 |
---|---|
795 { | 795 { |
796 id = popnd2.s.ident; | 796 id = popnd2.s.ident; |
797 goto L386_WARNING2; | 797 goto L386_WARNING2; |
798 } | 798 } |
799 break; | 799 break; |
800 | |
801 default: | |
802 assert(false); | |
800 } | 803 } |
801 } | 804 } |
802 | 805 |
803 switch (usNumops) | 806 switch (usNumops) |
804 { | 807 { |
921 default: | 924 default: |
922 assert(0); | 925 assert(0); |
923 } | 926 } |
924 } | 927 } |
925 break; | 928 break; |
929 | |
930 default: | |
931 assert(false); | |
926 } | 932 } |
927 uint usOpcode = ptb.pptb0.usOpcode; | 933 uint usOpcode = ptb.pptb0.usOpcode; |
928 | 934 |
929 if ((usOpcode & 0xFFFFFF00) == 0x660F3A00 || // SSE4 | 935 if ((usOpcode & 0xFFFFFF00) == 0x660F3A00 || // SSE4 |
930 (usOpcode & 0xFFFFFF00) == 0x660F3800) // SSE4 | 936 (usOpcode & 0xFFFFFF00) == 0x660F3800) // SSE4 |
1120 { | 1126 { |
1121 pc.IEVint2() = popndTmp.disp; | 1127 pc.IEVint2() = popndTmp.disp; |
1122 pc.IFL2 = FL.FLconst; | 1128 pc.IFL2 = FL.FLconst; |
1123 } | 1129 } |
1124 break; | 1130 break; |
1131 | |
1132 default: | |
1133 assert(false); | |
1125 } | 1134 } |
1126 } | 1135 } |
1127 | 1136 |
1128 break; | 1137 break; |
1129 case 2: | 1138 case 2: |
1322 } | 1331 } |
1323 popndTmp = popnd3; | 1332 popndTmp = popnd3; |
1324 aoptyTmp = aoptyTable3; | 1333 aoptyTmp = aoptyTable3; |
1325 uSizemaskTmp = cast(ushort)uSizemaskTable3; | 1334 uSizemaskTmp = cast(ushort)uSizemaskTable3; |
1326 } | 1335 } |
1327 goto L1; | 1336 goto L1; |
1337 | |
1338 default: | |
1339 assert(false); | |
1328 } | 1340 } |
1329 L2: | 1341 L2: |
1330 | 1342 |
1331 if ((pc.Iop & 0xF8) == 0xD8 && | 1343 if ((pc.Iop & 0xF8) == 0xD8 && |
1332 ADDFWAIT() && | 1344 ADDFWAIT() && |
1545 // | 1557 // |
1546 RETRY: | 1558 RETRY: |
1547 //printf("usActual = %d\n", usActual); | 1559 //printf("usActual = %d\n", usActual); |
1548 switch (usActual) | 1560 switch (usActual) |
1549 { | 1561 { |
1562 default: | |
1563 assert(false); | |
1564 | |
1550 case 0: | 1565 case 0: |
1551 ptbRet = pop.ptb ; | 1566 ptbRet = pop.ptb ; |
1552 goto RETURN_IT; | 1567 goto RETURN_IT; |
1553 | 1568 |
1554 case 1: | 1569 case 1: |
2202 if (popnd1 && ASM_GET_aopty(popnd1.usFlags) == ASM_OPERAND_TYPE._reg) { | 2217 if (popnd1 && ASM_GET_aopty(popnd1.usFlags) == ASM_OPERAND_TYPE._reg) { |
2203 switch (ASM_GET_amod(popnd1.usFlags)) { | 2218 switch (ASM_GET_amod(popnd1.usFlags)) { |
2204 default: | 2219 default: |
2205 if (ASM_GET_uSizemask(popnd1.usFlags) == _8) { | 2220 if (ASM_GET_uSizemask(popnd1.usFlags) == _8) { |
2206 switch(popnd1.base.val) { | 2221 switch(popnd1.base.val) { |
2222 default: | |
2223 assert(false); | |
2207 case _AL: | 2224 case _AL: |
2208 case _AH: | 2225 case _AH: |
2209 usRet |= mAX; | 2226 usRet |= mAX; |
2210 break; | 2227 break; |
2211 case _BL: | 2228 case _BL: |
3068 bRegmatch = ((!uRegmaskTable && !uRegmaskOp) || | 3085 bRegmatch = ((!uRegmaskTable && !uRegmaskOp) || |
3069 (uRegmaskTable & uRegmaskOp)); | 3086 (uRegmaskTable & uRegmaskOp)); |
3070 | 3087 |
3071 switch (amodTable) | 3088 switch (amodTable) |
3072 { | 3089 { |
3090 default: | |
3091 assert(false); | |
3073 case _normal: // Normal's match with normals | 3092 case _normal: // Normal's match with normals |
3074 switch(amodOp) { | 3093 switch(amodOp) { |
3075 case _normal: | 3094 case _normal: |
3076 case _addr16: | 3095 case _addr16: |
3077 case _addr32: | 3096 case _addr32: |
3710 o2 = asm_shift_exp(); | 3729 o2 = asm_shift_exp(); |
3711 if (asm_isint(o1) && asm_isint(o2)) | 3730 if (asm_isint(o1) && asm_isint(o2)) |
3712 { | 3731 { |
3713 switch (tok_save) | 3732 switch (tok_save) |
3714 { | 3733 { |
3734 default: | |
3735 assert(false); | |
3715 case TOKgt: | 3736 case TOKgt: |
3716 o1.disp = o1.disp > o2.disp; | 3737 o1.disp = o1.disp > o2.disp; |
3717 break; | 3738 break; |
3718 case TOKge: | 3739 case TOKge: |
3719 o1.disp = o1.disp >= o2.disp; | 3740 o1.disp = o1.disp >= o2.disp; |