# HG changeset patch # User Christian Kamm # Date 1218876505 -7200 # Node ID eada571dc8ff4b79a634a22c7ddc60e2504b1908 # Parent e739ef5dfff0817311998e2ee44535f09e97afcf Fix delegate equality. Fixes: mini/delegate.d run/d/delegate_17_A diff -r e739ef5dfff0 -r eada571dc8ff gen/tollvm.cpp --- a/gen/tollvm.cpp Fri Aug 15 23:15:21 2008 +0200 +++ b/gen/tollvm.cpp Sat Aug 16 10:48:25 2008 +0200 @@ -205,25 +205,24 @@ LLValue* DtoDelegateEquals(TOK op, LLValue* lhs, LLValue* rhs) { Logger::println("Doing delegate equality"); - llvm::ICmpInst::Predicate pred = (op == TOKequal || op == TOKidentity) ? llvm::ICmpInst::ICMP_EQ : llvm::ICmpInst::ICMP_NE; llvm::Value *b1, *b2; if (rhs == NULL) { LLValue* l = DtoLoad(DtoGEPi(lhs,0,0)); LLValue* r = llvm::Constant::getNullValue(l->getType()); - b1 = gIR->ir->CreateICmp(pred,l,r,"tmp"); + b1 = gIR->ir->CreateICmp(llvm::ICmpInst::ICMP_EQ,l,r,"tmp"); l = DtoLoad(DtoGEPi(lhs,0,1)); r = llvm::Constant::getNullValue(l->getType()); - b2 = gIR->ir->CreateICmp(pred,l,r,"tmp"); + b2 = gIR->ir->CreateICmp(llvm::ICmpInst::ICMP_EQ,l,r,"tmp"); } else { LLValue* l = DtoLoad(DtoGEPi(lhs,0,0)); LLValue* r = DtoLoad(DtoGEPi(rhs,0,0)); - b1 = gIR->ir->CreateICmp(pred,l,r,"tmp"); + b1 = gIR->ir->CreateICmp(llvm::ICmpInst::ICMP_EQ,l,r,"tmp"); l = DtoLoad(DtoGEPi(lhs,0,1)); r = DtoLoad(DtoGEPi(rhs,0,1)); - b2 = gIR->ir->CreateICmp(pred,l,r,"tmp"); + b2 = gIR->ir->CreateICmp(llvm::ICmpInst::ICMP_EQ,l,r,"tmp"); } LLValue* b = gIR->ir->CreateAnd(b1,b2,"tmp"); if (op == TOKnotequal || op == TOKnotidentity)