comparison gen/statements.cpp @ 365:bfb9d28f045a trunk

[svn r386] Fixed broken DtoBoolean. Some code cleanup.
author lindquist
date Tue, 15 Jul 2008 00:17:03 +0200
parents 8014dbd24605
children 71a40b62b408
comparison
equal deleted inserted replaced
364:8014dbd24605 365:bfb9d28f045a
965 p->scope() = IRScope(condbb,bodybb); 965 p->scope() = IRScope(condbb,bodybb);
966 966
967 LLValue* done = 0; 967 LLValue* done = 0;
968 LLValue* load = DtoLoad(keyvar); 968 LLValue* load = DtoLoad(keyvar);
969 if (op == TOKforeach) { 969 if (op == TOKforeach) {
970 done = new llvm::ICmpInst(llvm::ICmpInst::ICMP_ULT, load, niters, "tmp", p->scopebb()); 970 done = p->ir->CreateICmpULT(load, niters, "tmp");
971 } 971 }
972 else if (op == TOKforeach_reverse) { 972 else if (op == TOKforeach_reverse) {
973 done = new llvm::ICmpInst(llvm::ICmpInst::ICMP_UGT, load, zerokey, "tmp", p->scopebb()); 973 done = p->ir->CreateICmpUGT(load, zerokey, "tmp");
974 load = llvm::BinaryOperator::createSub(load,llvm::ConstantInt::get(keytype, 1, false),"tmp",p->scopebb()); 974 load = p->ir->CreateSub(load, llvm::ConstantInt::get(keytype, 1, false), "tmp");
975 new llvm::StoreInst(load, keyvar, p->scopebb()); 975 DtoStore(load, keyvar);
976 } 976 }
977 llvm::BranchInst::Create(bodybb, endbb, done, p->scopebb()); 977 llvm::BranchInst::Create(bodybb, endbb, done, p->scopebb());
978 978
979 // init body 979 // init body
980 p->scope() = IRScope(bodybb,nextbb); 980 p->scope() = IRScope(bodybb,nextbb);