diff --git a/gen/toir.cpp b/gen/toir.cpp index 65fc92ce..0e2eb6e3 100644 --- a/gen/toir.cpp +++ b/gen/toir.cpp @@ -416,12 +416,12 @@ DValue* StringExp::toElem(IRState* p) 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 vals; for(size_t i=0; ity == Tdchar) { + else if (cty->size() == 4) { uint32_t* str = (uint32_t*)string; std::vector vals; for(size_t i=0; ity == 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 vals; for(size_t i=0; ity == Tdchar) { + else if (cty->size() == 4) { uint32_t* str = (uint32_t*)string; std::vector vals; for(size_t i=0; i