Mercurial > projects > ldc
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 } |