cgen: remove tos3() call: part 1

pull/4618/head
Alexander Medvednikov 2020-04-27 12:09:56 +02:00
parent dd1ee39271
commit fde929ee30
2 changed files with 9 additions and 1 deletions

View File

@ -1127,6 +1127,12 @@ fn (mut g Gen) expr(node ast.Expr) {
// `C.printf("hi")` => `printf("hi");`
g.write('"$escaped_val"')
} else {
// TODO calculate the literal's length in V, it's a bit tricky with all the
// escape characters.
// Clang and GCC optimize `strlen("lorem ipsum")` to `11`
// g.write('tos4("$escaped_val", strlen("$escaped_val"))')
// g.write('tos4("$escaped_val", $it.val.len)')
// g.write('_SLIT("$escaped_val")')
g.write('tos3("$escaped_val")')
}
}
@ -2727,7 +2733,7 @@ fn (g Gen) type_default(typ table.Type) string {
}
*/
match sym.name {
'string' { return 'tos3("")' }
'string' { return '(string){.str=""}' }
'rune' { return '0' }
else {}
}

View File

@ -173,6 +173,8 @@ extern wchar_t **_wenviron;
//============================== HELPER C MACROS =============================*/
//#define tos4(s, slen) ((string){.str=(s), .len=(slen)})
#define _SLIT(s) ((string){.str=(s), .len=(strlen(s))})
#define _PUSH_MANY(arr, val, tmp, tmp_typ) {tmp_typ tmp = (val); array_push_many(arr, tmp.data, tmp.len);}
#define _IN(typ, val, arr) array_##typ##_contains(arr, val)
#define _IN_MAP(val, m) map_exists(m, val)