Mercurial > projects > ldc
comparison gen/tollvm.c @ 53:06ccc817acd4 trunk
[svn r57] Added most basic TypeInfo (rebuild lphobos).
Fixed some SymOffExp bugs.
Added another typeinfo test case.
author | lindquist |
---|---|
date | Tue, 23 Oct 2007 07:16:02 +0200 |
parents | 0c77619e803b |
children | 28e99b04a132 |
comparison
equal
deleted
inserted
replaced
52:0c77619e803b | 53:06ccc817acd4 |
---|---|
608 llargs[3] = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0, false); | 608 llargs[3] = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0, false); |
609 | 609 |
610 return new llvm::CallInst(fn, llargs.begin(), llargs.end(), "", gIR->scopebb()); | 610 return new llvm::CallInst(fn, llargs.begin(), llargs.end(), "", gIR->scopebb()); |
611 } | 611 } |
612 | 612 |
613 | 613 ////////////////////////////////////////////////////////////////////////////////////////// |
614 | |
615 llvm::Value* LLVM_DtoCompareDelegate(TOK op, llvm::Value* lhs, llvm::Value* rhs) | |
616 { | |
617 llvm::ICmpInst::Predicate pred = (op == TOKequal) ? llvm::ICmpInst::ICMP_EQ : llvm::ICmpInst::ICMP_NE; | |
618 llvm::Value* l = gIR->ir->CreateLoad(LLVM_DtoGEPi(lhs,0,0,"tmp"),"tmp"); | |
619 llvm::Value* r = gIR->ir->CreateLoad(LLVM_DtoGEPi(rhs,0,0,"tmp"),"tmp"); | |
620 llvm::Value* b1 = gIR->ir->CreateICmp(pred,l,r,"tmp"); | |
621 l = gIR->ir->CreateLoad(LLVM_DtoGEPi(lhs,0,1,"tmp"),"tmp"); | |
622 r = gIR->ir->CreateLoad(LLVM_DtoGEPi(rhs,0,1,"tmp"),"tmp"); | |
623 llvm::Value* b2 = gIR->ir->CreateICmp(pred,l,r,"tmp"); | |
624 llvm::Value* b = gIR->ir->CreateAnd(b1,b2,"tmp"); | |
625 if (op == TOKnotequal) | |
626 return gIR->ir->CreateNot(b,"tmp"); | |
627 return b; | |
628 } | |
614 | 629 |
615 ////////////////////////////////////////////////////////////////////////////////////////// | 630 ////////////////////////////////////////////////////////////////////////////////////////// |
616 | 631 |
617 llvm::GlobalValue::LinkageTypes LLVM_DtoLinkage(PROT prot, uint stc) | 632 llvm::GlobalValue::LinkageTypes LLVM_DtoLinkage(PROT prot, uint stc) |
618 { | 633 { |