comparison dmd/optimize.c @ 1622:a542ef277a84

Merge DMD r316: bugzilla 3628 can't cast null to int --- dmd/constfold.c | 2 +- dmd/optimize.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-)
author Leandro Lucarella <llucax@gmail.com>
date Wed, 06 Jan 2010 15:18:22 -0300
parents 0a4be54234d6
children 44b145be2ef5
comparison
equal deleted inserted replaced
1621:fb2e6707ad17 1622:a542ef277a84
667 e = this; 667 e = this;
668 return e; 668 return e;
669 } 669 }
670 670
671 Expression *IdentityExp::optimize(int result) 671 Expression *IdentityExp::optimize(int result)
672 { Expression *e; 672 {
673
674 //printf("IdentityExp::optimize(result = %d) %s\n", result, toChars()); 673 //printf("IdentityExp::optimize(result = %d) %s\n", result, toChars());
675 e1 = e1->optimize(WANTvalue | (result & WANTinterpret)); 674 e1 = e1->optimize(WANTvalue | (result & WANTinterpret));
676 e2 = e2->optimize(WANTvalue | (result & WANTinterpret)); 675 e2 = e2->optimize(WANTvalue | (result & WANTinterpret));
677 e = this; 676 Expression *e = this;
678 677
679 if (this->e1->isConst() && this->e2->isConst()) 678 if ((this->e1->isConst() && this->e2->isConst()) ||
679 (this->e1->op == TOKnull && this->e2->op == TOKnull))
680 { 680 {
681 e = Identity(op, type, this->e1, this->e2); 681 e = Identity(op, type, this->e1, this->e2);
682 if (e == EXP_CANT_INTERPRET) 682 if (e == EXP_CANT_INTERPRET)
683 e = this; 683 e = this;
684 } 684 }