comparison gen/toir.cpp @ 512:0d286cd9fd08

Add interface comparison to EqualExp: just do pointer comparison. Fixes run/b/bug_e2ir_1786_B,C.
author Christian Kamm <kamm incasoftware de>
date Fri, 15 Aug 2008 22:41:47 +0200
parents d7b2e8777e2b
children 73e41129b7f3
comparison
equal deleted inserted replaced
511:a0b0676e787d 512:0d286cd9fd08
1286 Type* e2t = e2->type->toBasetype(); 1286 Type* e2t = e2->type->toBasetype();
1287 //assert(t == e2t); 1287 //assert(t == e2t);
1288 1288
1289 LLValue* eval = 0; 1289 LLValue* eval = 0;
1290 1290
1291 if (t->isintegral() || t->ty == Tpointer) 1291 // the Tclass catches interface comparisons, regular
1292 { 1292 // class equality should be rewritten as a.opEquals(b) by this time
1293 Logger::println("integral or pointer"); 1293 if (t->isintegral() || t->ty == Tpointer || t->ty == Tclass)
1294 {
1295 Logger::println("integral or pointer or interface");
1294 llvm::ICmpInst::Predicate cmpop; 1296 llvm::ICmpInst::Predicate cmpop;
1295 switch(op) 1297 switch(op)
1296 { 1298 {
1297 case TOKequal: 1299 case TOKequal:
1298 cmpop = llvm::ICmpInst::ICMP_EQ; 1300 cmpop = llvm::ICmpInst::ICMP_EQ;