Mercurial > projects > ldc
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 ////////////////////////////////////////////////////////////////////////////////////////// |