diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-12-07 17:35:23 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-12-07 17:35:23 -0800 |
commit | 321f427c789895b8c13e9aa3bf719bf2a8ebd609 (patch) | |
tree | c182c0e84903aa7b11952f4a60205f1f7ddc6841 /src | |
parent | 298b7f81a832eabda73e5ff4be1236fe87d38ce4 (diff) | |
download | binaryen-321f427c789895b8c13e9aa3bf719bf2a8ebd609.tar.gz binaryen-321f427c789895b8c13e9aa3bf719bf2a8ebd609.tar.bz2 binaryen-321f427c789895b8c13e9aa3bf719bf2a8ebd609.zip |
fix numeric names in wasm2asm
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm2asm.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h index d1a0bf865..9c3a37ca3 100644 --- a/src/wasm2asm.h +++ b/src/wasm2asm.h @@ -121,14 +121,20 @@ public: static IString fromName(Name name) { // TODO: more clever name fixing, including checking we do not collide const char *str = name.str; + // check the various issues, and recurse so we check the others if (strchr(str, '-')) { - char *mod = strdup(str); + char *mod = strdup(str); // XXX leak str = mod; while (*mod) { if (*mod == '-') *mod = '_'; mod++; } - name = IString(str, false); + return fromName(IString(str, false)); + } + if (isdigit(str[0])) { + std::string prefixed = "$$"; + prefixed += name.str; + return fromName(IString(prefixed.c_str(), false)); } return name; } @@ -785,7 +791,7 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) { return ret; } // normal load - assert(curr->bytes == curr->align); // TODO: unaligned, i64 + assert(curr->bytes == curr->align); // TODO: unaligned Ref ptr = visit(curr->ptr, EXPRESSION_RESULT); Ref ret; switch (curr->type) { |