Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: nischu7/dmd
base: c5a20d6a95
...
head fork: nischu7/dmd
compare: 3fcc234468
  • 7 commits
  • 5 files changed
  • 0 commit comments
  • 2 contributors
View
2  src/backend/cod3.c
@@ -4212,7 +4212,7 @@ unsigned codout(code *c)
else if (op & 0xFF0000)
{
unsigned char op1 = op >> 16;
- if (op1 == 0xF2 || op1 == 0xF3)
+ if (op1 == 0xF2 || op1 == 0xF3 || op1 == 0x66)
{
GEN(op1);
if (c->Irex)
View
7 src/backend/ptrntab.c
@@ -122,7 +122,8 @@ PTRNTAB2 aptb2MOVSD[] = /* MOVSD */ {
//
PTRNTAB1 aptb1BSWAP[] = /* BSWAP */ {
// Really is a 486 only instruction
- { 0x0fc8, _I386, _plus_r | _r32 },
+ { 0x0fc8, _I386, _plus_r | _r32 },
+ { 0x0fc8, _64_bit, _plus_r | _r64 },
{ ASM_END, 0, 0 }
};
@@ -1208,6 +1209,10 @@ PTRNTAB2 aptb2MOVQ[] = /* MOVQ */ {
{ 0x0F7F,_r,_mmm64,_mm },
{ 0xF30F7E,_r,_xmm,_xmm_m64 },
{ 0x660FD6,_r,_xmm_m64,_xmm },
+ { 0x0F6E, _r|_64_bit,_mm, _rm64 },
+ { 0x0F7E, _r|_64_bit,_rm64,_mm },
+ { 0x660F6E,_r|_64_bit,_xmm, _rm64 },
+ { 0x660F7E,_r|_64_bit,_rm64,_xmm },
{ ASM_END }
};
View
4 src/expression.c
@@ -7390,9 +7390,9 @@ int CallExp::checkSideEffect(int flag)
* then this expression has no side effects.
*/
Type *t = e1->type->toBasetype();
- if (t->ty == Tfunction && ((TypeFunction *)t)->purity)
+ if (t->ty == Tfunction && ((TypeFunction *)t)->purity > PUREweak)
return 0;
- if (t->ty == Tdelegate && ((TypeFunction *)((TypeDelegate *)t)->next)->purity)
+ if (t->ty == Tdelegate && ((TypeFunction *)((TypeDelegate *)t)->next)->purity > PUREweak)
return 0;
#endif
return 1;
View
10 src/glue.c
@@ -480,11 +480,12 @@ void Module::genobjfile(int multiobj)
{
Symbol *ma;
unsigned rt;
+ unsigned bc;
switch (i)
{
- case 0: ma = marray; rt = RTLSYM_DARRAY; break;
- case 1: ma = massert; rt = RTLSYM_DASSERTM; break;
- case 2: ma = munittest; rt = RTLSYM_DUNITTESTM; break;
+ case 0: ma = marray; rt = RTLSYM_DARRAY; bc = BCexit; break;
+ case 1: ma = massert; rt = RTLSYM_DASSERTM; bc = BCexit; break;
+ case 2: ma = munittest; rt = RTLSYM_DUNITTESTM; bc = BCret; break;
default: assert(0);
}
@@ -516,12 +517,13 @@ void Module::genobjfile(int multiobj)
e = el_bin(OPcall, TYvoid, e, el_param(elinnum, efilename));
block *b = block_calloc();
- b->BC = BCret;
+ b->BC = bc;
b->Belem = e;
ma->Sfunc->Fstartline.Sfilename = arg;
ma->Sfunc->Fstartblock = b;
ma->Sclass = SCglobal;
ma->Sfl = 0;
+ ma->Sflags |= rtlsym[rt]->Sflags & SFLexit;
writefunc(ma);
}
}
View
4 src/staticassert.c
@@ -1,5 +1,5 @@
-// Copyright (c) 1999-2010 by Digital Mars
+// Copyright (c) 1999-2011 by Digital Mars
// All Rights Reserved
// written by Walter Bright
// http://www.digitalmars.com
@@ -57,7 +57,7 @@ void StaticAssert::semantic2(Scope *sc)
sc = sc->push(sd);
sc->flags |= SCOPEstaticassert;
Expression *e = exp->semantic(sc);
- sc->pop();
+ sc = sc->pop();
if (e->op == TOKerror)
return;
e = e->optimize(WANTvalue | WANTinterpret);

No commit comments for this range

Something went wrong with that request. Please try again.