comparison gen/tollvm.cpp @ 264:a9dae3da4e87 trunk

[svn r285] Fixed D -> bool LLVM helper for floating point values. Changed the way D-style varargs are passed, now each param should be aligned to size_t.sizeof.
author lindquist
date Sat, 14 Jun 2008 17:28:13 +0200
parents b604c56945b0
children 6b62e8cdf970
comparison
equal deleted inserted replaced
263:2be09ee06bc7 264:a9dae3da4e87
328 else { 328 else {
329 LLValue* zero = llvm::ConstantInt::get(t, 0, false); 329 LLValue* zero = llvm::ConstantInt::get(t, 0, false);
330 return new llvm::ICmpInst(llvm::ICmpInst::ICMP_NE, val, zero, "tmp", gIR->scopebb()); 330 return new llvm::ICmpInst(llvm::ICmpInst::ICMP_NE, val, zero, "tmp", gIR->scopebb());
331 } 331 }
332 } 332 }
333 else if (t->isFloatingPoint())
334 {
335 LLValue* zero = llvm::Constant::getNullValue(t);
336 return new llvm::FCmpInst(llvm::FCmpInst::FCMP_ONE, val, zero, "tmp", gIR->scopebb());
337 }
333 else if (isaPointer(t)) { 338 else if (isaPointer(t)) {
334 LLValue* zero = llvm::Constant::getNullValue(t); 339 LLValue* zero = llvm::Constant::getNullValue(t);
335 return new llvm::ICmpInst(llvm::ICmpInst::ICMP_NE, val, zero, "tmp", gIR->scopebb()); 340 return new llvm::ICmpInst(llvm::ICmpInst::ICMP_NE, val, zero, "tmp", gIR->scopebb());
336 } 341 }
337 else 342 std::cout << "unsupported -> bool : " << *t << '\n';
338 {
339 Logger::cout() << *t << '\n';
340 }
341 assert(0); 343 assert(0);
342 return 0; 344 return 0;
343 } 345 }
344 346
345 ////////////////////////////////////////////////////////////////////////////////////////// 347 //////////////////////////////////////////////////////////////////////////////////////////