Mercurial > projects > ldc
changeset 183:3cdf4b0c75a1 trunk
[svn r199] Fixed: still some small issues with string literals implicitly converting to different pointer types. Should be fixed now!
author | lindquist |
---|---|
date | Wed, 07 May 2008 20:22:42 +0200 |
parents | 6526cf5bb2be |
children | f5ca6bbbf1d7 |
files | gen/toir.cpp |
diffstat | 1 files changed, 6 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/toir.cpp Wed May 07 19:54:01 2008 +0200 +++ b/gen/toir.cpp Wed May 07 20:22:42 2008 +0200 @@ -416,12 +416,12 @@ const llvm::ArrayType* at = llvm::ArrayType::get(ct,len+1); llvm::Constant* _init; - if (cty->ty == Tchar || cty->ty == Tvoid) { + if (cty->size() == 1) { uint8_t* str = (uint8_t*)string; std::string cont((char*)str, len); _init = llvm::ConstantArray::get(cont,true); } - else if (cty->ty == Twchar) { + else if (cty->size() == 2) { uint16_t* str = (uint16_t*)string; std::vector<llvm::Constant*> vals; for(size_t i=0; i<len; ++i) { @@ -430,7 +430,7 @@ vals.push_back(llvm::ConstantInt::get(ct, 0, false)); _init = llvm::ConstantArray::get(at,vals); } - else if (cty->ty == Tdchar) { + else if (cty->size() == 4) { uint32_t* str = (uint32_t*)string; std::vector<llvm::Constant*> vals; for(size_t i=0; i<len; ++i) { @@ -500,12 +500,12 @@ const llvm::ArrayType* at = llvm::ArrayType::get(ct,endlen); llvm::Constant* _init; - if (cty->ty == Tchar || cty->ty == Tvoid) { + if (cty->size() == 1) { uint8_t* str = (uint8_t*)string; std::string cont((char*)str, len); _init = llvm::ConstantArray::get(cont, nullterm); } - else if (cty->ty == Twchar) { + else if (cty->size() == 2) { uint16_t* str = (uint16_t*)string; std::vector<llvm::Constant*> vals; for(size_t i=0; i<len; ++i) { @@ -515,7 +515,7 @@ vals.push_back(llvm::ConstantInt::get(ct, 0, false)); _init = llvm::ConstantArray::get(at,vals); } - else if (cty->ty == Tdchar) { + else if (cty->size() == 4) { uint32_t* str = (uint32_t*)string; std::vector<llvm::Constant*> vals; for(size_t i=0; i<len; ++i) {