diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules.js | 2 | ||||
-rw-r--r-- | src/parseTools.js | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/modules.js b/src/modules.js index e2509965..f613c20b 100644 --- a/src/modules.js +++ b/src/modules.js @@ -8,7 +8,7 @@ var LLVM = { 'weak_odr', 'externally_visible', 'dllimport', 'dllexport', 'unnamed_addr'), VISIBILITIES: set('default', 'hidden', 'protected'), PARAM_ATTR: set('noalias', 'signext', 'zeroext', 'inreg', 'sret', 'nocapture', 'nest'), - CALLING_CONVENTIONS: set('ccc', 'fastcc', 'coldcc', 'cc10') + CALLING_CONVENTIONS: set('ccc', 'fastcc', 'coldcc', 'cc10', 'x86_fastcallcc') }; LLVM.GLOBAL_MODIFIERS = set(keys(LLVM.LINKAGES).concat(['constant', 'global', 'hidden'])); diff --git a/src/parseTools.js b/src/parseTools.js index 6eb95593..94989f9d 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -309,6 +309,8 @@ function parseParamTokens(params) { } } else if (segment[1].text in PARSABLE_LLVM_FUNCTIONS) { ret.push(parseLLVMFunctionCall(segment)); + } else if (segment[1].text === 'blockaddress') { + ret.push(parseBlockAddress(segment)); } else { if (segment[2] && segment[2].text == 'to') { // part of bitcast params segment = segment.slice(0, 2); @@ -334,6 +336,8 @@ function parseParamTokens(params) { function finalizeParam(param) { if (param.intertype in PARSABLE_LLVM_FUNCTIONS) { return finalizeLLVMFunctionCall(param); + } else if (param.intertype === 'blockaddress') { + return finalizeBlockAddress(param); } else if (param.intertype === 'jsvalue') { return param.ident; } else { @@ -426,7 +430,7 @@ function parseLLVMFunctionCall(segment) { params: parseParamTokens(segment[2].item.tokens) }; Types.needAnalysis[ret.type] = 0; - ret.ident = toNiceIdent(ret.params[0].ident); + ret.ident = toNiceIdent(ret.params[0].ident || 'NOIDENT'); return ret; } |